Bash echo 高阶用法
Shell
最基础的使用
输出字符串
$ echo hello
hello
$
输出变量
$ echo $SHELL
/bin/zsh
$
输出命令结果
$ echo `pwd`
/root
$
不换行-n
$ echo -n hello
hello$
注意这里输出的hello和提示符连在了一起,因为没有换行。
$ echo -n "hello "; echo shell
hello shell
$
转义-e
在用echo输出字符串的时候可以使用控制字符来做一些特殊处理
具体用法:
$ echo -e "hello\c"
hello$
这里的\c
就是特殊控制字符,表示不换行,也就是和echo -n
差不多的效果。
\b
退格控制符
$ echo -e "hello\bworld"
hellworld
$
并且在后面跟有字符的情况下才有退格效果
$ echo -e "hello\b"
hello
$
\c
不换行输出,\c
后的字符不会被打印。
$ echo -e "hello\cworld"
hello$
当\c
在字符串最后时,其作用相当于echo -n
$ echo -e "hello\c"
hello$
\n
换行符
$ echo -e "hello\nworld"
hello
world
$
\t
tab
制表符
$ echo -e "hello\tworld"
hello world
$
\r
回车符,但是\r
前面的字符不会显示
$ echo -e "hello\rworld"
world
$
\v
垂直制表符
$ echo -e "hello\vworld\vbash"
hello
world
bash
$
\a
电脑会发出警报声
$ echo -e "\adududu"
dududu
$
原文输出
不做任何转义,变量替换操作
$ echo '$SHELL\\b'
$SHELL\\b
$
使用单引号将字符串括起来,字符串里不能出现单引号。
输出彩色字符
使用echo -e
不仅可以使用特殊字符,还可以控制终端显示颜色。
具体用法:
echo -e "\033[0;34m蓝色"
这里的\033[0;34m
就是控制终端输出字符为蓝色的意思。
效果:
可以看到,不仅输出字符,连提示符都变色了。如果只想改变某个词的颜色怎么办呢。
我们需要在改变颜色输出后再把颜色去掉。
echo -e "\033[0;34m蓝色\033[0m"
这里的\033[0m
就是无颜色的控制字符。
以下是常用颜色:
NOCOLOR='\033[0m'
RED='\033[0;31m'
GREEN='\033[0;32m'
ORANGE='\033[0;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
LIGHTGRAY='\033[0;37m'
DARKGRAY='\033[1;30m'
LIGHTRED='\033[1;31m'
LIGHTGREEN='\033[1;32m'
YELLOW='\033[1;33m'
LIGHTBLUE='\033[1;34m'
LIGHTPURPLE='\033[1;35m'
LIGHTCYAN='\033[1;36m'
WHITE='\033[1;37m'
为了方便和易读我们可以将颜色先存为环境变量,然后再使用变量:
$ echo -e "${RED}红色${NOCOLOR}"
效果图: