Shell是一个命令解释器,它在操做系统的最外层,负责直接与用户对话,把用户的输入解释给操做系统,并处理各类各样的操做系统的输出结果,输出到屏幕返回给用户。这种对话方式能够是交互的方式(从键盘输入命令,能够当即获得shell的回应),或非交互(脚本)的方式。换句话说,Shell是一个命令行解释器,它为用户提供一个像Linux内核发送请求以便运行程序的界面系统级程序,用户能够用Shell来启动,挂起,中止甚至是编写一些程序。shell
Shell仍是一个功能至关请打的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中能够直接调用Linux系统命令。编程
Linux Shell的种类不少,目前流行的Shell包括ash、bash、ksh、csh、zsh等。vim
1.ash
ash Shell是由Kenneth Almquist编写的,是Linux 中占用系统资源最少的一个小Shell,它只包含24个内部命令,于是使用起来很不方便。bash
2. bash
bash是Linux系统默认使用的Shell,它由Brian Fox 和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40 个。Linux 使用它做为默认的Shell是由于它具备如下特点:编程语言
可使用相似DOS下面的doskey的功能,用上下方向键查阅和快速输入并修改命令。性能
自动经过查找匹配的方式,给出以某字串开头的命令。ui
包含了自身的帮助功能,你只要在提示符下面键入help就能够获得相关的帮助信息。spa
3. ksh
ksh是Korn Shell的缩写,由Eric Gisin编写,共有42 条内部命令。该Shell最大的优势是几乎和商业发行版的ksh 彻底相容,这样就能够在不用花钱购买商业版本的状况下尝试商业版本的性能了。操作系统
4. csh
csh 是Linux 比较大的内核,它由以William Joy 为表明的共计47 位做者编成,共有52个内部命令。该Shell实际上是指向/bin/tcsh这样的一个Shell,也就是说,csh其实就是tcsh。命令行
5. zch
zch是Linux 最大的Shell之一,由Paul Falstad完成,共有84 个内部命令。若是只是通常的用途,没有必要安装这样的Shell。
1.内部命令
内部命令内置于Shell源码中,即存在于内存中,通常比较简短,代码量不多,执行起来速度快,常常会使用,好比cd、echo。它与shell自己处在同一进程内(它就写在Shell这个程序里面),当打开Shell时,操做系统会将Shell程序放入内存 。
2.外部命令
外部命令通常功能比较强大,包含的代码量也较大,因此在系统加载时并不随系统一块儿被加载到内存中,而是在须要时才调用,它们是存在于文件系统中某个目录下的单独的程序,当执行外部命令时,会到文件系统中文件的目录中寻找,例如 cp 、rm。
命令历史
命令历史保存在用户的家目录的.bash_history中 以root用户为例则在 /root/.bash_history
history 命令能够查看命令历史
用cat 命令能够查看命令历史文件
cat /root/.bash_history
CentOS7系统默认最多保存1000条命令历史
能够经过变量HISTSIZE查看
用命令 echo $HISTSIZE
命令历史最大保存数量能够经过更改配置文件来改变
配置文件路径为 /etc/profile
用 vim /etc/profile 打开配置文件
在vim中使用/HISTSIZE找到HISTSIZE所在位置
这里能够更改成本身想要的数量 我这里修改成5000
修改好后记得保存退出
要想配置生效须要从新登陆终端或者执行命令 source /etc/profile
默认的命令历史不太详细能够经过修改配置文件 /etc/profile 来给命令历史添加日期和时间
在配置文件中添加变量 HISTTIMEFORMAT=" %Y/%m/%d %H:%M:%S "
保存退出
赞成须要 source /etc/profile
想要永久保存命令历史 就是用命令 chattr +a ~/.bash_history
history -c 能够清楚内存中的命令历史 保存在 /etc/profile 中的不受影响
注:终端非正常关闭命令历史会记录不完善
!! 执行命令历史里的最后一条命令
!n 执行命令历史里的第n条命令
!Word 执行命令历史里最后一条这个Word的命令
在输入命令时可使用tab键补全命令 按一下tab键若是命令没有补全则存在多个以你当前输入相同的开头的命令 这时你须要按两下tab键 列出全部相似命令找到你须要的继续输入
在CentOS7中还能够补全命令参数 默认是不能的 要安装bash_completion 来实现 安装完成后重启机器便可使用
alias命令能够查看系统中使用了别名的命令
alias 别名 =' 原命令 ' 能够定义别名
unalias 别名 能够取消自定义别名
* 能够匹配全部字符
? 匹配全部单个字符
[0-9] 匹配任意一个数字
[a-z] 匹配任意一个小写字母
[A-Z]匹配任意一个大写字母
[0-9a-zA-Z]匹配任意一个数字或字母
{1,2,3}匹配其中一个
> 输出重定向 会删除原有文档内容
>>输出追加剧定向 在原有文档末尾增长
2>错误输出重定向 会删除原有文档内容
2>>错误输出追加剧定向 在原有文档末尾增长
> 加 2> 等于 &> 正确和错误的一块儿重定向到一个文件
正确和错误分别重定向到不一样文件(下图):
< 输入重定向 左边为命令右边是文件
友情连接:阿铭Linux