shell介绍

shell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。在计算机硬件之间还有一层东西——系统内核。如果把计算机硬件比作一个人的躯体,那系统内核就是人的大脑。至于shell,把它比作人的五官似乎更贴切些。言归正传,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传给系统内核,接着内核再去支配计算机硬件去执行各种操作。


Red Hat/CentOS默认安装的shell版本是bash(即Bourne Again Shell),它是sh(Bourne Shell)的增强版本。Bourne Shell是最早流行起来的一个shell版本。其创始人是Steven Bourne,为了纪念他而将其命名为Bourne Shell,简称sh。




命令历史

我们执行过的命令Linux都会记录,预计可以记录1000条历史命令。这些命令保存在用户的家目录的.bash_history文件中。但需要注意的是,只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。




#history     查看之前使用的命令

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


#echo $HISTSIZE   查看目前可以保存多少条历史命令


#history -c              清空内存中的历史命令,而./root/.bash_history中的历史命令还在。

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


#vi /etc/profile         更改HISTSIZE的数值可以更改历史命令条数

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


#source /etc/profile  使/etc/profile里的配置立即生效,再查看变为5000了。

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


#HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"     记录命令运行时间

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


但只是临时生效,如果换一个终端或重启终端后失效,要永久生效得将"HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" 添加到/etc/profile 文件中。

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


永久保存输入的命令历史

#chattr +a /root/.bash_history      给文件加上隐藏权限a,文件内容只能追加,不能删除修改。


与命令历史相关的特殊字符

#!!     连续两个!表示执行上一条命令

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


#!n    表示执行命令历史中的第n条命令

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


#!cd   表示执行命令历史中最近一次以cd开头的命令

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向



命令补全

按tab键可以帮我们补全一个指令、一个路径或者一个文件名。连续按两次tab键,系统则会把所有的命令或者文件名都列出来。当前仅仅支持命令补全,参数是不支持补全的。

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向



别名

通过alias把一个常用的并且很长的指令另取名为一个简单易记的指令。

#alias     查看哪些命令用了别名。

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


#alias ccj='pwd'     设置pwd命令的别名为ccj

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


#unalias ccj       去除别名ccj

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向



通配符

#ls *.txt             表示查找.txt通配文件

#ls ?.txt             表示一个任意的字符

#ls [0-3].txt        列出0、1、2、3的txt文件

#ls [123].txt       列出1、2、3的txt文件

#ls [a-z].txt        列出包含字母的txt文件

#ls {1,3}.txt        列出1、3的txt文件


shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向



输入输出重定向

输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于命令的结果输入到文件中,而不是屏幕上。,输出重定向的命令是>,错误重定向命令2>以及追加重定向命令>>。


<      输入重定向

>      把前面命令输出的内容重定向到指定文件里,删除指定文件旧内内容。

>>    把前面命令输出的内容重定向追加到指定文件里,不删除旧内容。

2>    把错误信息输出到指定文件里

2>>  把错误信息输出追加重定向                                                  


shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向


shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向