Shell的简单介绍

Posted 天宇轩-王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell的简单介绍相关的知识,希望对你有一定的参考价值。

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。命令如下

[root@topcheer ~]# 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.显示普通字符串:

[root@topcheer ~]# echo "hello shell"
hello shell
[root@topcheer ~]# echo hello shell
hello shell
[root@topcheer ~]#

这里的双引号完全可以省略

[root@topcheer ~]# echo -n hello shell
hello shell[root@topcheer ~]#

#如果加入了“-n”选项,输出内容结束后,不会换行直接显示新行的提示符

2.显示转义字符

[root@topcheer ~]# echo "\\"It is a test\\""
"It is a test"
[root@topcheer ~]#

 

同样,双引号也可以省略

3.显示变量

[root@topcheer ~]# 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.显示换行

[root@topcheer ~]#  echo -e "a\\tb\\tc\\nd\\te\\tf"
a       b       c
d       e       f
[root@topcheer ~]#

#我们加入了制表符“\\t”和换行符“\\n”,所以会按照格式输出

[root@topcheer ~]# echo -e "\\0141\\t\\0142\\t\\0143\\n\\0144\\t\\0145\\t\\0146"
a       b       c
d       e       f
[root@topcheer ~]#

 

[root@topcheer ~]# echo -e "\\\\ \\a"
\\
[root@topcheer ~]# echo -e "ab\\bc"
ac
[root@topcheer ~]#
这个输出会输出\\,同时会在系统音响中输出一声提示音 

#这个输出中,在 b 键左侧有“\\b”,所以输出时只有 ac

5.显示不换行

[root@topcheer ~]# sh echo1.sh
OK! OJBK
[root@topcheer ~]# cat echo1.sh
#!bin/bash
echo -e "OK! \\c"
echo OJBK
[root@topcheer ~]#

 

6.显示结果定向至文件

[root@topcheer ~]# echo "It is a test" > myfile
[root@topcheer ~]# 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.原样输出字符串,不进行转义或取变量(用单引号)

[root@topcheer ~]# echo \'$name\\"\'
$name\\"
[root@topcheer ~]#

 

8.显示命令执行结果

[root@topcheer ~]# echo `date`
2019年 11月 18日 星期一 23:37:32 CST
[root@topcheer ~]#

 

注意: 这里使用的是反引号 `, 而不是单引号 \'。

结果将显示当前日期

9.显示颜色

[root@topcheer ~]# 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脚本的运行

[root@localhost sh]# chmod 755 hello.sh
#赋予执行权限
[root@localhost sh]# /root/sh/hello.sh
Mr. Shen Chao is the most honest man.
#使用绝对路径运行
[root@localhost 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. 

 

 

 

以上是关于Shell的简单介绍的主要内容,如果未能解决你的问题,请参考以下文章

Liunx----Shell脚本简单介绍 Shell运行环境和Shell变量

简单介绍shell中的curl网络请求的实现

shell函数介绍及使用

201555332盛照宗—网络对抗实验1—逆向与bof基础

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

shell 脚本 片段