8.1 shell介绍
shell是一个命令解释器,提供用户和机器之间的交互
支持特定的语法,如逻辑判断、循环
每个用户都有自己特定的shell,centos7默认shell是bash,
出了bash,系统中还有zsh、ksh两种shell。
8.2 命令历史
命令历史存在用户家目录下的.bash_history,如root用户就是/root/.bash_history
history可以查看命令历史,.bash_history文件了里最多可以存1000条,它是由环境变量HISTSIZE决定的,不过history有时候也会查看到超过1000条的命令历史,不过那是没有写进文件里的,还存在于内存中。
history -c可以把当前内存里的命令历史清空,但是并不会删除.bash_history文件里存的命令历史。
当你退出终端的时候系统会把内存里的命令历史存到.bash_history文件里。
当然我们可以更改.bash_history文件的1000条数限制,只需要编辑/etc/profile,把里面HISTSIZE这一行后的1000改一下,然后source /etc/profile刷新一下,或者重新进一下终端即可生效。
我们也可以让history出来的历史命令显示时间,使用如下命令,定义HISTTIMEFORMAT变量为后面的格式,不过它只在当前窗口当前终端里生效。
如果想要让它在其他窗口并且一直生效,可以编辑/etc/profile文件,这行命令放到HISTSIZE这一行下面,之后source /etc/profile刷新一下,或者重新进一下终端即可生效。
如果想要永久保存你的命令历史,不想别人删除,可以给它加一个特殊权限a,即使有最大1000条的限制,也是可以保存超过1000条的。
不过如果你不是正常退出终端,你敲过的命令历史就会保存的不全。
想要使用命令历史的最后一条命令,也就是你使用的上一条命令可以用!!
想要使用命令历史的多少行命令,那就可以使用!加行数
想要使用命令历史里最后一个以xx开头的命令可以使用!加xx
8.3 命令补全和别名
在打命令的时候按tab键可以自动补全,可以补全文件,也可以补全命令,如你打了文件名的一半然后按一下tab键系统可以自动帮你补全剩下的一半。
不过有一种情款就是有两个及以上的文件都是以你打出来的部分文件名开头的,这时候按一下tab就没有用了,这时候我们可以按两下,系统会显示出所有以你打出来的部分文件名开头的文件。
然后你可以找到你要打的文件名,继续输入,直到没有其他以你输出的部分文件名开头的文件,再按一下tab就可补全了。
在centos7里tab还可以补全命令的参数,不过需要安装一个bash-completion包,然后重启系统才能生效。
我们还可以给较长的命令设置别名,使用alias命令,如我们把systemctl restart network.service别名设置成restartnet,之后我们就可以使用restartnet命令代替了。
直接运行alias可以查看系统中所有的别名。这些别名存在于用户家目录下的.bashrc文件(自定义的alias)以及/etc/profile.d/目录下的文件里。
取消别名使用unalias加别名
8.4 通配符
*用法
表示查看当前目录下名字中以.txt结尾的所有文件或目录。
表示查看当前目录下名字中含有txt的文件或目录。
表示查看当前目录下名字以1开头的文件或目录。
?用法
查看当前目录下文件名是一个字符加.txt的文件(?只代表一个字符)
[数字-数字]用法
查看当前目录下设定数字范围内的所有以.txt结尾的文件(同时也支持字母如a-z或A-Z)
查看当前目录下以1、2、3开头的,然后以.txt结尾的文件
{字符、字符、字符}
类似于[123],字符之间是或者的关系,
8.5 输入输出重定向
>把前面的命令的输出输入到后面的文件里面去,下图就是把1.txt里的内容覆盖到2.txt里。(会把原本2.txt里的内容删掉)
>>把前面的命令的输出追加到后面的文件里面去,下图就是把1.txt里的内容追加到2.txt里(不会把原本2.txt里的内容删掉)
2>把前面的命令产生的错误信息输入到后面的文件里去。
2>>把前面的命令产生的错误信息追加到后面的文件里去。
&>把前面的命令产生的正确信息以及错误信息都输入到后面的文件里去。(同样也支持追加,使用&>>)
把前面的命令产生的正确信息以及错误信息分别输入到后面的两个文件里去可以使用
<把右边文件的内容输入到左边的命令里去,如下我们查看1.txt内容的行数。(<的左侧必须要是命令)