shell之echo知多少
本文记录的是关于shell之echo的知识。
echo是linux中常用的终端命令(command line),其包括:
1 | command_name option argument |
首先看看echo的 man page:
1 | NAME |
从帮助文档可以看出:
- echo是将其后的arguments输出到(STDOUT),通常就是bash界面.
- echo是将所有的操作对象,以单一的空格
分开的字符串,最后紧跟着换行符(''),输出到bash
通过下面的例子更容易理解:
1 | $ echo "hello world" China 'English' |
上面第一个例子,echo将其后的参数(不论各个参数间有多少个空白符)都一一输出到bash,且各个参数间使用单一空格分隔开. 第二个例子中,echo后未接任何arguments,输出到bash是一空白行('').
在echo的man page中提到:
1 | -n: Do not print the trailing newline character. This may also be achieved by appending `\c' to the end of the string. |
可以使用 -n
option取消打印末尾的换行符,也可通过在字符串末尾添加'字符实现,如下:
1 | $ echo -n |
echo 除了 -n
option外,常用的选项还有:
- -e:启用反斜线控制字符的转换(参考下表)
- -E:关闭反斜线控制字符的转换(默认设置如此)
- -n:取消行末的换行符,与
-e
选项下的\c
同样效果
关于echo命令所支持的反斜线控制字符如下表:
\a
:ALERT / BELL (从系统喇叭送出声音)\b
:BACKSPACE ,也就是向左退格鍵\c
:取消行末的换行符\E
:ESCAPE,跳脱键\f
:FORMFEED,换页字符\n
:NEWLINE,换行字符\r
:RETURN,回车键\t
:TAB,水平制表符\v
:VERTICAL TAB,垂直制表符\n
:ASCII 八进制(以 x 开头为十六进制)\\
:反斜线本身
下面是echo的实例。
例一, 不带任何option,原样输出字符串
1 | $ echo "a\tb\tc\nd\te\bf\a" |
例二,使用 -e
选项,启用反斜线控制字符的转换
1 | $ echo -e "a\tb\tc\nd\te\bf\a" |
例三,启用 -n
选项,取消行末换行符
1 | $ echo -ne "a\tb\tc\nd\te\bf\a" |
例四,使用 -e
+ \c
达到与例三效果
1 | $ echo -e "a\tb\tc\nd\te\bf\a\c" |
最后,echo用来检查变量值:
1 | $ A="hello world" |
参考: