-- TOC --
echo可能是Linux中最简单的命令之一了,它的功能就是将输入回显。
$ echo a b c d
a b c d
$ echo cs.pynote.net
cs.pynote.net
$ echo abc 123 abc 456
abc 123 abc 456
$ echo a b 8
a b 8
echo命令后面可以带多个以空格间隔的参数,多个连续空格会被缩减到一个空格。
$ echo "123
> 456"
123
456
$ echo 'a
> b
> c'
a
b
c
$ echo a\
> b\
> c
abc
还可以回显多行内容,用单引号或双引号括起来即可,或者使用 \
(没有换行)。
$ echo $PATH
/home/xinlin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$ echo $SHELL
/bin/bash
$ a=cs.pynote.net
$ echo $a
cs.pynote.net
$ echo '$a'
$a
$ echo "$a"
cs.pynote.net
$ echo "${a} is good!"
cs.pynote.net is good!
用echo命令显示变量内容,注意单引号和双引号的区别!单引号'
原样输出,双引号"
会将变量展开!{}
是为了区别出变量名称的边界。
空格在Shell命令行是分隔符,用来区分一行命令的各个组成部分,因此
a=cs.pynote.net
中间不能有空格,否则a
会被当成某个命令来执行,会失败。
-n参数,no newline,用来取消末尾的换行,默认echo命令会加上一个换行。
$ echo -n 'input: '; read b
input: cs.pynote.net
$ echo $b
cs.pynote.net
如果没有-n参数,输入光标就会出现在input打印的下一行。
-e参数,escape,使能backslash escape。
$ echo '12345\nabcde'
12345\nabcde
$ echo -e '12345\nabcde'
12345
abcde
Shell中的简单输出使用echo,复杂格式输出使用printf。
小把戏:用echo命令让电脑发出声音
$ echo -e '\a'
echo命令在处理escape的时候,不区分单引号或双引号。
与查看其它普通变量无异,只是特殊变量有特殊的名称:
$ echo $$ # current bash process id
127360
$ echo $- # current bash options
himBHs
$$
表示当前bash进程的id;
$-
表示当前bash的options。(命令行option可以用-
开始)
参考:Bash中的特殊变量
让echo命令输出彩色的内容,需要使用参数 -e,格式:
$ echo -e "\033[背景色;前景色;显示方式m输出字符串\033[0m"
$ echo -e "\e[...mXXXX\e[0m"
颜色值
前景 | 颜色 | 背景 | 颜色 |
---|---|---|---|
30 | 无色 | 40 | 黑色 |
31 | 红色 | 41 | 红色 |
32 | 绿色 | 42 | 绿色 |
33 | 黄色 | 43 | 黄色 |
34 | 蓝色 | 44 | 蓝色 |
35 | 紫色 | 45 | 紫红色 |
36 | 青色 | 46 | 青蓝色 |
37 | 白色 | 47 | 白色 |
- | - | 0 | 透明 |
显示方式
代码 | 样式 |
---|---|
0 | 关闭所有属性 |
1 | 高亮显示 |
4 | 下划线 |
5 | 闪烁 |
7 | 反显 |
8 | 消隐 |
22 | 非粗体 |
24 | 非下划线 |
25 | 非闪烁 |
27 | 非反显 |
控制选项
代码 | 属性 |
---|---|
\033[nA | 光标上移n行 |
\033[nB | 光标下移n行 |
\033[nC | 光标右移n行 |
\033[nD | 光标左移n行 |
\033[m:nH | 把光标移动到第m行第n列 |
\033[K | 清除从光标到行尾的内容 |
\033[y;xH | 设置光标位置 |
\033[s | 保存光标位置 |
\033[u | 恢复光标位置 |
\033[?25l | 隐藏光标 |
\033[?25h | 显示光标 |
\033[2J | 清除屏幕 |
\007 | 发出蜂鸣声beep |
\033[0q | 关闭所有的键盘指示灯 |
\033[1q | 设置“滚动锁定”指示灯 (Scroll Lock) |
\033[2q | 设置“数值锁定”指示灯 (Num Lock) |
\033[3q | 设置“大写锁定”指示灯 (Caps Lock) |
测试:
历史上,Terminal是一种device,现在基本都是xterm,控制这种device的指令,包含在向其输入的字符流中!现代计算机已经没有Terminal这种device了,取而代之的都是Screen,当需要Terminal的时候,其实都是Terminal Emulator。
一点历史:TTY
因为基本上主流shell实现都内置了echo命令(内置的目的时可以获得更快的执行效率,不用查找命令的位置,不用fork),内置的echo无法查看version:
$ echo --version
--version
$ type echo
echo is a shell builtin
原样回显,只因builtin。
此时,可以这样,使用executable的完整pathname:
$ /usr/bin/echo --version
echo (GNU coreutils) 9.0
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Brian Fox and Chet Ramey.
本文链接:https://cs.pynote.net/sf/linux/shell/202110145/
-- EOF --
-- MORE --