[命令] Linux 命令 echo (显示内容)

内容一:echo 的命令选项

1) -n 输出不换行
2) -e 处理某些特殊字符
\a 蜂鸣声报警
\b 删除前面一个字符
\c 在末尾不换行
\e 转义起始符
\033 转义起始符
\x1B 转义起始符
\f 换行,同时光标停在原处
\n 换行
\r 不换行,同时光标停在原处
\t tab,水平方向
\v tab,垂直方向
\ 输出 \
\Onnn 输出八进制 ASCII 字符
\xHH 输出十六进制 ASCII 字符
3) -E 不再转义

内容二:echo 的显示选项

1) \033[0m 将所有显示属性关闭
2) \033[1m 变粗/高亮
3) \033[2m 变暗
4) \033[4m 下划线
5) \033[5m 闪烁
6) \033[7m 反显
7) \033[8m 消隐
8) \033[37m<word>\33[0m 设置字体颜色,这里以将字体颜色设置为白色为例
9) \033[40m<word>\33[0m 设置背景颜色,这里以将背景颜色设置为白色为例
10) \033[<n>A 将光标向上移 n 行
11) \033[<n>B 将光标向下移 n 行
12) \033[<n>C 将光标向右移 n 行
13) \033[<n>D 将光标向左移 n 行
14) \033[;H 将光标跳转到 x 和 y 位置
15) \033[2J 清屏
16) \033[K 将光标所在位置到行尾的所有位置全部清除
17) \033[s 将光标位置保存
18) \033[u 将光标位置恢复
19) \033[?25l 将光标隐藏
20) \033[?25h 将光标显示


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 m 代表转义终止符,所有转义在这里结束,如果要使用多个显示选项,可以在最后 1 个显示选项后面添加 m

内容三:echo 转换输出结果颜色的案例

3.1 显示不同颜色的显示选项案例

3.1.1 显示不同颜色文字的显示选项案例
序号文字颜色显示选项
1默认色\033[39m
2黑色\033[30m
3红色\033[31m
4绿色\033[32m
5黄色\033[33m
6蓝色\033[34m
7品红色\033[35m
8青色\033[36m
9浅灰色\033[37m
10深灰色\033[90m
11淡红色\033[91m
12浅绿色\033[92m
13浅黄色\033[93m
14浅蓝色\033[94m
15浅品红色\033[95m
16浅青绿色\033[96m
17白色\033[97m
文字颜色显示选项表
3.1.2 显示不同颜色背景的显示选项案例
序号背景颜色显示选项
1默认色\033[49m
2黑色\033[40m
3红色\033[41m
4绿色\033[42m
5黄色\033[43m
6蓝色\033[44m
7品红色\033[45m
8青色\033[46m
9浅灰色\033[47m
10深灰色\033[100m
11浅红色\033[101m
12浅绿色\033[102m
13浅黄色\033[103m
14浅蓝色\033[104m
15浅洋红色\033[105m
16浅青色\033[106m
17白色\033[107m
背景颜色显示选项表

3.2 显示不同颜色字体的案例

# echo -e "\033[30m black characters \033[0m" 
# echo -e "\033[31m red characters \033[0m"
# echo -e "\033[32m green characters \033[0m" 
# echo -e "\033[33m yellow characters \033[0m"
# echo -e "\033[34m blue characters \033[0m"
# echo -e "\033[35m purple character \033[0m"
# echo -e "\033[36m sky blue character \033[0m"
# echo -e "\033[37m white character \033[0m"


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 [ 代表开始定义颜色
3) 这里的 m 代表转义终止符,所有转义在这里结束
4) 这里的 \e[0m 代表将所有显示属性关闭,也就是回归默认值,建议每次 echo 命令后面都添加

3.3 显示不同颜色背景的案例

# echo -e "\033[40;m black background \033[0m" 
# echo -e "\033[41;m red background \033[0m"
# echo -e "\033[42;m green background \033[0m" 
# echo -e "\033[43;m yellow background \033[0m"
# echo -e "\033[44;m blue background \033[0m"
# echo -e "\033[45;m purple background \033[0m"
# echo -e "\033[46;m sky blue background \033[0m"
# echo -e "\033[107;m white background \033[0m"


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 [ 代表开始定义颜色
3) 这里的 m 代表转义终止符,所有转义在这里结束
4) 这里的 \e[0m 代表将所有显示属性关闭,也就是回归默认值,建议每次 echo 命令后面都添加

3.4 显示不同颜色字体和不同颜色背景的案例

# echo -e "\033[40;37m white characters on black background \033[0m"
# echo -e "\033[41;37m white characters on red background \033[0m"
# echo -e "\033[42;37m white characters on green background \033[0m"
# echo -e "\033[43;37m white characters on yellow background \033[0m"
# echo -e "\033[44;37m white characters on blue background \033[0m"
# echo -e "\033[45;37m white characters on purple background \033[0m"
# echo -e "\033[46;37m white characters on sky blue background \033[0m"
# echo -e "\033[47;30m black characters on white background \033[0m"


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 [ 代表开始定义颜色
3) 这里的 m 代表转义终止符,所有转义在这里结束
4) 这里的 \e[0m 代表将所有显示属性关闭,也就是回归默认值,建议每次 echo 命令后面都添加

内容四:echo 转换输出结果结构的案例

4.1 案例一:不换行带 tab 输出

# for month in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec;do echo -e "$month\t\c";done
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

(补充:这里以不换行带 tab 输出 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 为例)

4.2 案例二:先清屏再不换行输出

# echo -e "\033[2J\033[10A\Eternal Center\c \e[0m "

(补充:这里以先清屏再不换行输出 Eternal Center 为例)


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 [ 代表开始定义颜色
3) 这里的 m 代表转义终止符,所有转义在这里结束
4) 这里的 \e[0m 代表将所有显示属性关闭,也就是回归默认值,建议每次 echo 命令后面都添加

[工具] Shell 读取一个文件 (以列的方式)

介绍

作者:朱明宇
名称:读取 1 个文件(以列的方式)
作用:读取 1 个文件,并把里面的内容以空格作为分割符,分成 3 列显示出来

使用方法:
1. 给此脚本添加执行权限
2. 执行此脚本,并在输入此命令时,在后面添加要被读取文件

脚本

#!/bin/bash

file=$1

if [[ $# -lt 1 ]];then
        echo "This file does not exist"
        exit
fi

while read -r f1 f2 f3
do
        echo "file 1:$f1 ==> file 2:$f2 ==> file 3:$f3"

done < "$file"

[工具] Shell 读取一个文件 (以行的方式)

介绍

作者:朱明宇
名称:读取 1 个文件(以行的方式)
作用:读取 1 个文件(以行的方式),并把里面的内容显示出来

使用方法:
1. 给此脚本添加执行权限
2. 执行此脚本,并在输入此命令时,在后面添加要被读取文件

脚本

#!/bin/bash

file=$1

if [[ $# -lt 1 ]];then
        echo "This file does not exist"
        exit
fi

while read line
do
        echo "$line"

done < "$file"

[内容] Linux 变量组合

案例一:直接组合变量

# part1=a
# part2=1
# result=$part1$part2
# echo result
a1

(补充:这里以将 a 和 1 组合成 a1 为例)

案例二:带空格组合变量

# part1=a
# part2=1
# result="$part1 $part2"
# echo result
a1

(补充:这里以将 a 和 1 组合成 a1 为例)

案例三:带空格和特殊符号组合变量

# part1=a
# part2=1
# result="$part1: $part2"
# echo result
a: 1

或者:

# part1=a
# part2=1
# result="$part1": "$part2"
# echo result
a: 1

(补充:这里以将 a 和 1 组合成 a: 1 为例)

案例四:带空格和特殊符号组合变量

# part1=a
# part2=1
# result="${part1}file: ${part2}.txt"
# echo result
afile: 1.txt

(补充:这里以将 a 和 1 组合成 afile: 1.txt 为例)

[步骤] Linux 位置变量

案例一:脚本本身

1.1 脚本本身的名称

$0

1.2 显示脚本本身的名称

# echo $0 

案例二:脚本某 1 个参数

2.1 脚本某 1 个参数

$<number>

(补充:当 为 1 时代表第 1 个位置参数、当 为 2 时代表第 2 个位置参数以此类推)

2.2 显示脚本某 1 个参数的值

# echo $<number>

案例三:脚本最后 1 个参数

3.1 脚本最后 1 个参数

\$$#

3.2 显示脚本最后 1 个参数的值

# eval echo \$$#

案例四:脚本参数的个数

4.1 脚本参数的个数

$#

4.2 显示脚本参数的个数

# echo $#

案例五:脚本所有参数的值

5.1 脚本所有参数的值

$*

或者:

$@


补充:
1) 当所有参数不被双引号 “””” 包括时,$* 和 $@ 会让每个参数都被一个双引号 “””” 包括,例如:”1″ “2” “3” “4” “5” ……
2) 当参数被双引号 “””” 包括时,$* 会将所有参数视为一个整体并用双引号 “””” 包括,例如:”1 2 3 4 5 ……”
3) 当参数被双引号 “””” 包括时,$@ 会让每个参数都被一个双引号 “””” 包括,例如:”1″ “2” “3” “4” “5” ……

5.2 显示脚本所有参数的值

# echo $*

或者:

# echo $@

案例六:上 1 个命令的退出状态代码

6.1 上 1 个命令的退出状态代码

$?


补充:常用退出状态代码如下:
1) 0 成功
2) 1 未知错误
3) 2 Shell 命令被误用
4) 126 无法执行
5) 127 命令没有找到
6) 128 退出参数无效
7) 128+x 来自 Linux 信号 x 的致命错误
8) 130 按键 “Crtl” + “C” 的终止命令
9) 255 不属于规范内的退出状态

6.2 显示上 1 个命令的退出状态代码

# echo $?

案例七:上 1 个进程的 PID

7.1 上 1 个进程的 PID

$$

7.2 显示上 1 个进程的 PID

# echo $$

案例八:设置位置变量

# set a b c d e

(补充:这里以设置 $1 为 a、$2 为 b、$3 为 c、$4 为 d、$5 为 e)