一、什么是shell
shell就是命令的解释器。
1、shell会提供一个实现人机交互的渠道(比如终端)。
2、计算机只认识“0”和“1”,而我们的输入或者编写的代码都是字母、数字、特殊符号等字符。这时候,就需要shell解释器将我们输入或者运行的代码转换成为计算机所认识的“0”和“1”。
3、在Linux中,主要使用的shell是Bourne Again(Bash);Unix中主要使用的是C Shell(csh)。
4、可以使用 cat /etc/shells 命令查看Linux所支持的shell。(虽然支持,但是某些命令或者文件是不存在的,也无法执行某些命令)。
二、基础知识点
1、echo 命令(我们执行shell脚本时,输出的内容可以让我们直观的看到程序是否执行完成与是否成功,若失败,更好的输出可以让我们更加准确的看出问题所在)
一般情况下,(echo 内容)会将内容输出,但是有些时候是需要(echo “内容”)才会正常输出,所以最好以第二种(echo “内容”)方式来使用。
echo也可以使用选项。选项:
a)、-n 取消输出行末尾的换行符。
字符转换(转义符"\"),如果将“\”放到特殊字符前面,shell就忽略这些特殊字符的原有含义,把它们当作普通字符对待。
b)、 -e 支持反斜线控制的字符转换。
上图可以看出,有时也需要空格隔开。
c)、可以为字体或字体的背景上色。
echo -e "\e[1;34m 1234 \e[0m"
其中:(\e[1;)代表开启颜色输出;(34m)代表颜色;(1234)代表输出的内容;(\e[0m)代表结束颜色输出。
d)、输出“!”时,需要在后面加一个空格。
2、历史命令
a)、使用 history 是可以查看历史命令的。
b)、而 history 查看的历史命令有两种:一个是在缓存中的(还未写入.bash_history这个文件中);一个是已写入 history 文件中的。
c)、当系统重启、关闭或者用户正常注销时,会自动将缓存中的历史命令写入.bash_history文件中。也可以使用(-w)参数写入。
d)、而.bash_history文件的记录的行数默认是1000行(可修改),可以查看/etc/profile文件。
e)、历史命令的调用可以使用以下几种方法:
a、使用键盘上的(上下)键。
b、使用(!!)重复执行上一条命令。
c、使用(!n)重复执行第n条命令。
d)、使用(!字符串)重复执行最后一条该字符串开头的命令。
e)、使用(!$)重复执行上一条命令的最后一个参数。
f)、清空缓存中的历史命令。
history -c
3、命令别名
a)、别名是给一个命令起一个好记的名字,当在bash中输入这个名字的时候,等同于输入命令。
举例说明:
b)、上面这样是临时生效,并未写入配置文件(.bashrc),可以编辑这个文件,以达到永久生效的目的。
注意:由于.bashrc这个是环境变量配置文件,再次执行source .bashrc 命令,可以使这个环境变量配置文件直接生效。
c)、命令的执行等级:
一级:使用相对路径或绝对路径执行的命令
二级:执行别名命令
三级:执行bash的命令
四级:按照$PATH环境变量定义的顺序找到的第一个命令
所以:定义别名时,一定要避开三级、四级命令的名,尤其是写入.bashrc文件中,否则就永远也不会执行三级、四级中与命令名与别名相同的命令。
4、bash的快捷键。
5、输出输入重定向
a)、bash的标准输入输出设备。
Linux中存在上图这样的三个设备文件,左→右分别代表“标准错误输出(使用2表示)”、“标准输入(使用0表示)”、“标准输出(使用1表示)”。
b)、输入输出重定向。
重定向的含义是:改变原本输入或者输出的路径。
举例:
cat .bashrc 这个命令正常是将 .bashrc 文件中的内容,由标准输出设备来显示到显示器上的,但是使用了“>”,改变了其输出路径,输出到了test文件中,从而使得test文件记录下来。
c)、输出重定向的种类
d)、输入重定向。
正常情况下,命令的输入都是靠键盘进行输入的,输入重定向就是改变输入的路径,将文件中的命令作为键盘输入的命令。
一般情况下使用率极低,例如使用RPM包提取其中的文件时(cpio)命令。