8.1 shell介绍
shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。这种对话方式可以是交互的方式(从键盘输入命令,可以立即得到shell的回应),或非交互(脚本)的方式。
1. 常用操作系统的默认Shell
- linux是Bourne Again shell(bash)
- Solaris和FreeBSD缺省的是Bourne shell(sh)
- AIX下是Korn Shell(ksh)
- HP-UX缺省的是POSIX shell(sh)
- Centos linux系统默认的shell是bash
2. Shell运行过程
用户-shell命令解释器-内核-硬件-内核-shell命令解释器-用户
8.2 命令历史
1. history 命令历史
Linux可以记录敲过的命令,预设的是可以记录1000条。这些命令历史记录会保存在.bash_history
文件里面。只有退出该终端的时候,才会保存到这个文件里。
- 更改环境变量HISTSIZE,是系统能保存更多的命令历史记录
vim /etc/profile 环境变量HISTSIZE 在路径/etc/profile里面
... 找到HISTSIZE这一行
HISTSIZE=1000 系统默认保存是1000条命令历史记录,可以在这里面修改
改成 HISTSIZE=2000 改成2000条
qw 保存退出
soure /etc/peofile 刷新一下配置文件
- 清除history里面的命令记录
history -c 但是之前保存在 .bash_history 文件的记录不会掉
- 关于history的一些高级用法
让history详细显示命令历史格式
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
在/etc/peofile 里面添加 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" ,保存刷新,就可以了
让history命令历史永久保存
chaeer +a ~/.bash_history
和history有关的快捷键
!! 执行上一条命令
!761 执行第761条命令
!echo 运行 从命令历史里面从下往上找,以echo开头的命令
8.3 命令补全和别名
1. Tab键
不仅可以补全命令也可以补全路径,敲一个tab会补全一个路径或者一个文件名或者一个命令。 敲两下就会把所有的命令或者文件名都列出来。
另外,centOS7中,tab
已经支持补全参数了, 需要安装一个软件包。
yum install -y bash-completion 安装完成之后重启一下系统即可
例如,systemctl restart network 就是参数的一种,centOS6的时候需要全部手打出来,centOS7不用了。输入到一半就可使用tab就可以补全。
2. alias
alias命令命名的别名记录配置文件有2个
- 用户家目录下的.bashrc
- /etc/profile.d (但最好编辑上一个,这个别动)
8.4 通配符
通配符 | 通配符含义 |
---|---|
* | 匹配所有字符 |
? | 匹配一个任意字符,如果文件名为两个或者两个以上的,将不在匹配范围内 |
[0-9] 中括号 | 匹配0-9范围内的,也可以是字母 a-z、A-Z;可以同时写多个[0-9a-zA-Z] |
{1,2,3} 花括号 | 匹配范围内的字符,需要以 , 逗号分隔, |
8.5 输入输出重定向
重定向符号 | 例子 | 重定向符含义 |
---|---|---|
> 重定向 | cat 1.txt > 2.txt | 把 1.txt 的输出结果,输入到2.txt内,输入过程,会把2.txt内的内容删除,然后再把内容写入2.txt 内 |
>> 追加重定向 | cat 1.txt > 2.txt | 把 1.txt 的输出结果,添加到2.txt内,输入过程,会直接把内容追加到2.txt内,在末行进行添加 |
2> 错误信息重定向 | lsaaa 2> a.txt | 把运行的错误信息,输入到 a.txt 下,输入过程,如果发生错误信息,会把a.txt内的内容删除,然后再把内容写入a.txt 内 |