在Linux中使用printf和Echo
1. 概述
有时我们想以某种方式格式化 Linux 命令的输出。也许我们需要避免输出过多,并以简单易读的格式显示内容。 在这个快速教程中,我们将研究基于 Linux 和 Unix 的系统上的echo 和*printf *命令,用于格式化 shell 脚本命令的输出。
2. printf
printf命令用于输出给定的字符串、数字或任何其他格式说明符。该命令的操作方式与C、C++ 和 Java 编程语言中的printf相同。
让我们看看可以使用 printf 的不同实例。
2.1. 打印文本
我们可以使用printf命令将文本显示到标准输出流。
让我们打印欢迎信息:
$ printf "Welcome to the Blogdemo website"
Welcome to the Blogdemo website[Admin@admin ~]$
命令的输出和下一个命令提示符位于同一行。不打印换行符。
2.2. 使用字符串格式化输出
我们可以使用带有*%s的**printf命令来打印字符串值。%s*是我们用来输出字符串的格式说明符:
$ printf "%s" "Hello, Welcome to Blogdemo"
Hello, Welcome to Blogdemo[Admin@admin ~]$
输出显示输入文本的字符串值。
2.3. 使用换行格式化输出
使用格式说明符运行printf将在同一行显示输出和命令提示符。要打印新行,我们使用 \ n转义序列:
$ printf "Welcome to Blogdemo \n"
Welcome to Blogdemo
[Admin@admin ~]$
打印出预期的输出,并且下一个命令提示符移至下一行。
2.4. 打印整数值
我们可以使用printf使用*%d*说明符来格式化具有整数值的字符串:
$ printf "%d\n" "1234"
1234
[Admin@admin ~]$
输出是一个整数值。
2.5. 打印浮点值
使用带有printf的*%f*格式说明符可以帮助我们打印浮点值:
$ printf "%f\n" "20.20"
20.200000
[Admin@admin ~]$
该命令显示输入字符串的浮点值。
2.6. 打印环境变量
有时我们想知道特定环境变量的值,printf可以帮助我们实现。让我们打印当前正在运行的 shell:
$ printf "The shell is: "$SHELL
The shell is: /bin/bash[Admin@admin ~]$
从输出中可以看出,当前的 shell 是 Bash。
2.7. 打印日期和时间
我们可以使用带有格式说明符的printf命令来打印日期和时间。输出显示当前的月份和年份,因为我们只传递了月份和年份格式说明符:
$ printf "%(%m-%Y)T" $(date +%s)
07-2021[Admin@admin ~]$
这给了我们月份和年份加上当前时间(以小时和分钟为单位):
$ printf "%(%m-%Y %H:%M)T" $(date +%s)
07-2021 23:24[Admin@admin ~]$
2.8. 格式化十六进制值
我们可以使用 %X说明符以大写形式输出十六进制整数值:
$ printf %X"\n" 450
1C2
[Admin@admin ~]$
另一方面,我们可以使用*%x* 以小写形式打印:
$ printf %x"\n" 450
1c2
[Admin@admin ~]$
这是数字 450 的等效十六进制值。
3. echo
echo命令是 Linux shell 脚本中最常用的命令之一。它用于在标准输出或文件上显示一行文本或字符串。 我们将开始研究使用该命令的各种方式:
3.1.将文本打印到标准输出
echo命令用于将字符串从标准输入打印到标准输出:
$ echo "Welcome to the Blogdemo"
Welcome to the Blogdemo
[Admin@admin~]$
从结果中,输入字符串显示在我们的标准输出中。与printf 不同,echo命令隐式地创建一个新行。
3.2. 打印变量值
我们可以在终端中声明一个变量值,并使用 echo 命令将其输出到标准输出:
[Admin@admin ~]$ num=45
[Admin@admin ~]$ echo $num
45
[Admin@admin ~]$
例如,我们声明了一个名为num的变量并将其赋值为 46。然后我们使用 echo 打印该值,这给了我们预期的输出。 请务必注意,该变量仅存在于终端的此会话中。
3.3. 创建新行
要使用 echo 命令创建新行,我们使用*\n选项。但是,\n选项不起作用,我们需要将它与-e*选项结合起来以转义字符:
[Admin@admin ~]$ echo -e "Blogdemo \nLinux"
Blogdemo
Linux
[Admin@admin ~]$
输出将是两行,这是由于在第二个单词 Linux 之前创建新行而产生的。
3.4. 创建水平选项卡
我们可以在输入字符串中的单词之间创建制表符空格。我们使用带有*\t*选项的转义字符:
[Admin@admin ~]$ echo -e "Welcome\t to \t Linux"
Welcome to Linux
[Admin@admin ~]$
从输出中,我们可以看到创建了一个额外的选项卡空间。
3.5. 删除文本之间的空格
我们可以使用*-e参数和\b*选项删除单词之间的空格:
[Admin@admin ~]$ echo -e "Welcome \bto \bLinux"
WelcometoLinux
[Admin@admin ~]$
我们成功地删除了单词之间的空格。
3.6. 在文本之间创建垂直制表位
如果我们使用*-e参数和\v*选项,它将在输入字符串中的单词之间创建一个垂直制表符:
[Admin@admin~]$ echo -e "Welcome \vto \vLinux"
Welcome
to
Linux
[Admin@admin ~]$
该命令的输出在输入字符串的单词之间创建垂直制表符。
3.7. 打印所有文件和文件夹
我们可以使用 echo 和 * 打印当前工作目录中的所有文件和文件夹:
[Admin@admin Documents]$ echo *
Classical LinuxWork Microservices postgresSampleDb Print Smart_Java.pdf Springboot Untitled 2.pdf wildfly-21.0.1.Final.zip
[Admin@admin Documents]$
从输出中,我们可以看到我们打印了Documents目录中的所有文件夹和文件。