Linux打印


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位的八进制值字符