shell 的分类
Shell 类别 | 易学性 | 可移植性 | 编辑性 | 快捷性 |
Bourne Shell (sh) | 容易 | 好 | 较差 | 较差 |
Korn Shell (ksh) | 较难 | 较好 | 好 | 较好 |
Bourne Again (Bash) | 难 | 较好 | 好 | 好 |
POSIX Shell (psh) | 较难 | 好 | 好 | 较好 |
C Shell (csh) | 较难 | 差 | 较好 | 较好 |
TC Shell (tcsh) | 难 | 差 | 好 | 好 |
Shell 的两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。 Bourne 家族主要包括 sh、
ksh、 Bash、 psh、 zsh; C 家族主要包括: csh、 tcsh (Bash 和 zsh 在不同程度上支持 csh 的语法)。
我们可以通过/etc/shells 文件来查询 Linux 支持的 Shell。命令如下
[[email protected] ~]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh [root@topcheer ~]#
Shell echo命令
在 echo 命令中如果使用了“-e”选项,则可以支持控制字符,如表 所示:
控制字符 | 作 用 |
\\ | 输出\本身 |
\a | 输出警告音 |
\b | 退格键,也就是向左删除键 |
\c | 取消输出行末的换行符。和“-n”选项一致 |
\e | ESCAPE 键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符,也就是 Tab 键 |
\v | 垂直制表符 |
\0nnn | 按照八进制 ASCII 码表输出字符。其中 0 为数字零, nnn 是三位八进制数 |
\xhh | 按照十六进制 ASCII 码表输出字符。其中 hh 是两位十六进制数 |
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
您可以使用echo实现更复杂的输出格式控制。
1.显示普通字符串:
[[email protected] ~]# echo "hello shell" hello shell [root@topcheer ~]# echo hello shell hello shell [root@topcheer ~]#
这里的双引号完全可以省略
[[email protected] ~]# echo -n hello shell hello shell[[email protected] ~]#
#如果加入了“-n”选项,输出内容结束后,不会换行直接显示新行的提示符
2.显示转义字符
[[email protected] ~]# echo "\"It is a test\"" "It is a test" [root@topcheer ~]#
同样,双引号也可以省略
3.显示变量
[[email protected] ~]# sh echo2.sh hello hello It is a test [root@topcheer ~]# cat echo2.sh #!/bin/sh read name echo "$name It is a test" [root@topcheer ~]#
4.显示换行
[[email protected] ~]# echo -e "a\tb\tc\nd\te\tf" a b c d e f [root@topcheer ~]#
#我们加入了制表符“\t”和换行符“\n”,所以会按照格式输出
[[email protected] ~]# echo -e "\0141\t\0142\t\0143\n\0144\t\0145\t\0146" a b c d e f [root@topcheer ~]#
[[email protected] ~]# echo -e "\\ \a" [root@topcheer ~]# echo -e "ab\bc" ac [root@topcheer ~]#
这个输出会输出\,同时会在系统音响中输出一声提示音 #这个输出中,在 b 键左侧有“\b”,所以输出时只有 ac
5.显示不换行
[[email protected] ~]# sh echo1.sh OK! OJBK [root@topcheer ~]# cat echo1.sh #!bin/bash echo -e "OK! \c" echo OJBK [root@topcheer ~]#
6.显示结果定向至文件
[[email protected] ~]# echo "It is a test" > myfile [[email protected] ~]# ll 总用量 12 -rw-------. 1 root root 1560 8月 31 18:27 anaconda-ks.cfg drwxr-xr-x 2 root root 42 10月 28 14:48 docker -rw-r--r--. 1 root root 1608 8月 31 18:29 initial-setup-ks.cfg drwxr-xr-x 3 root root 19 11月 15 13:57 logs -rw-r--r-- 1 root root 13 11月 18 23:36 myfile
7.原样输出字符串,不进行转义或取变量(用单引号)
[[email protected] ~]# echo ‘$name\"‘ $name\" [[email protected] ~]#
8.显示命令执行结果
[[email protected] ~]# echo `date` 2019年 11月 18日 星期一 23:37:32 CST [root@topcheer ~]#
注意: 这里使用的是反引号 `, 而不是单引号 ‘。
结果将显示当前日期
9.显示颜色
[[email protected] ~]# echo -e "\e[1;31m abcd \e[0m" abcd [root@topcheer ~]# echo -e "\e[1;42m abcd \e[0m" abcd [root@topcheer ~]#
第一条命令会把 abcd 按照红色输出。解释下这个命令\e[1 是标准格式,代表颜色输出开始, \e[0m
代表颜色输出结束, 31m 定义字体颜色是红色。 echo 能够识别的颜色如下: 30m=黑色, 31m=红色, 32m=
绿色, 33m=黄色, 34m=蓝色, 35m=洋红, 36m=青色, 37m=白色
第二条命令会给 abcd 加入一个绿色的背景。 echo 可以使用的背景颜色如下: 40m=黑色, 41m=红色,
42m=绿色, 43m=黄色, 44m=蓝色, 45m=洋红, 46m=青色, 47m=白色
Shell脚本的运行
[[email protected] sh]# chmod 755 hello.sh #赋予执行权限 [[email protected] sh]# /root/sh/hello.sh Mr. Shen Chao is the most honest man. #使用绝对路径运行 [[email protected] sh]# ./hello.sh Mr. Shen Chao is the most honest man. #因为我们已经在/root/sh 目录当中,所以也可以使用相对路径运行 ? 通过 Bash 调用执行脚本 这种方法也非常简单,命令如下: [root@localhost sh]# bash hello.sh Mr. Shen Chao is the most honest man.
原文地址:https://www.cnblogs.com/dalianpai/p/11886477.html
时间: 2024-10-08 01:27:48