echo
echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。
参数
-n
不要在最后自动换行
-e
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a
发出警告声;
\b
删除前一个字符;
\c
最后不加上换行符号;
\f
换行但光标仍旧停留在原来的位置;
\n
换行且光标移至行首;
\r
光标移至行首,但不换行;
\t
插入tab;
\v
与\f相同;
\\
插入\字符;
\nnn
插入nnn(八进制)所代表的ASCII字符;
–help
显示帮助
–version
显示版本信息
原样输出字符串
若需要原样输出字符串(不进行转义),请使用单引号
echo '$name\"'
显示命令执行结果
echo `date`
printf
printf 命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。
注意:printf 由 POSIX 标准所定义,移植性要比 echo 好。
printf 不像 echo 那样会自动换行,必须显式添加换行符(\n)。
$printf "Hello, Shell\n"
Hello, Shell
$
printf 命令的语法
printf format-string [arguments...]
format-string 为格式控制字符串,arguments 为参数列表。
这里仅说明与C语言printf()函数的不同:
-
printf 命令不用加括号
-
format-string 可以没有引号,但最好加上,单引号双引号均可。
-
参数多于格式控制符(%)时,format-string 可以重用,可以将所有参数都转换。
-
arguments 使用空格分隔,不用逗号。
注意,根据POSIX标准,浮点格式%e、%E、%f、%g与%G是“不需要被支持”。这是因为awk支持浮点预算,且有它自己的printf语句。这样Shell程序中需要将浮点数值进行格式化的打印时,可使用小型的awk程序实现。然而,内建于bash、ksh93和zsh中的printf命令都支持浮点格式。
参数
--help
:在线帮助;
--version
:显示版本信息。
格式替代符
%b
相对应的参数被视为含有要被处理的转义序列之字符串。
%c
ASCII字符。显示相对应参数的第一个字符
%d
, %i
十进制整数
%e
, %E
, %f
浮点格式
%g
%e
或%f
转换,看哪一个较短,则删除结尾的零
%G
%E
或%f
转换,看哪一个较短,则删除结尾的零
%o
不带正负号的八进制值
%s
字符串
%u
不带正负号的十进制值
%x
不带正负号的十六进制值,使用a至f表示10至15 %X 不带正负号的十六进制值,使用A至F表示10至15
%%
字面意义的%
转义
\a
警告字符,通常为ASCII的BEL字符
\b
后退
\c
抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f
换页(formfeed)
\n
换行
\r
回车(Carriage return)
\t
水平制表符
\v
垂直制表符
\\
一个字面上的反斜杠字符
\ddd
表示1到3位数八进制值的字符,仅在格式字符串中有效 \0ddd 表示1到3位的八进制值字符