shell介绍
Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。这种对话方式可以是交互的方式(从键盘输入命令,可以立即得到shell的回应),或非交互(脚本)的方式。换句话说,Shell是一个命令行解释器,它为用户提供一个像Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动,挂起,停止甚至是编写一些程序。
Shell还是一个功能相当请打的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
Linux Shell的种类很多,目前流行的Shell包括ash、bash、ksh、csh、zsh等。
1.ash
ash Shell是由Kenneth Almquist编写的,是Linux 中占用系统资源最少的一个小Shell,它只包含24个内部命令,因而使用起来很不方便。
2. bash
bash是Linux系统默认使用的Shell,它由Brian Fox 和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40 个。Linux 使用它作为默认的Shell是因为它具有以下特色:
可以使用类似DOS下面的doskey的功能,用上下方向键查阅和快速输入并修改命令。
自动通过查找匹配的方式,给出以某字串开头的命令。
包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助信息。
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。
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