8.1 shell介绍
shell是一个命令解释器,提供用户和机器之间的交互
shell 脚本,仅仅是shell 的一种表现
用户登录的流程,就是一个shell 的表现
支持特定语法,比如逻辑判断、循环
每个用户都可以有自己特定的shell
CentOS7默认shell为bash(Bourne Agin Shell),Bourne为开发者
还有zsh、ksh等,也是shell的一种,用法和bash 差不多。
8.2 命令历史
查看命令历史的命令
history
输入过的命令,会有一个文件专门保存的
/roo/.bash_history
这个文件最大可以存1000条
根据环境变量定义保存命令历史的最大数量
echo $HISTSIZE
history -c 清空命令历史里面的记录,并不会删除.bash_history 文件里保存的命令
==命令一开始是保存在内存里的,只有退出终端的时候,命令历史里面的命令才会保存到 .bash_history 文件内==
HISTSIZE 变量在 /etc/profile 配置文件中可以做改动
source /etc/profile 重启 profile 服务
记录history 命令历史里面的命令的运行时间
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
没有修改配置,所以,这个环境变量值只会在当前终端窗口生效 只需要修改 /etc/profile 在HISTSIZE 下增加一个即可
HISTSIZE=1000
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
修改完毕后,重启profile 服务
source /etc/profile
对.bahs_history 的文件的假如隐藏权限,使这个文件,只能追加,不能删除;使用下面这个命令
chattr +a ~/.bash_history
执行运行命令历史里面的最后一条命令
!! 重复执行前一条命令
!n n为数字,直接运行该数字的命令
!ehco 从命令历史里,最后一条命令向上查找,最近的,且符合echo 的命令,并进行使用
8.3 命令补全和别名
在centos6下,是不支持命令的参数补全的,但在centos7下就支持命令和参数补全,需要单独安装一个包
yum install -y bash-completion
可以查看系统所有的 别名命令
alias
自定义命令别名,aming等同于ls -lha
alias aming='ls -lha'
取消aming自定义别名
unalias aming
系统默认自定义别名有部分别名
vim /root/.bashrc
部分自定义别名的存放在
/etc/profile.d/
8.4 通配符
一般用法:
1* 匹配 以1开头的所有
*.txt 匹配以txt结尾的所有
通配符 | 通配符含义 |
---|---|
* | 匹配所有字符 |
? | 匹配一个任意字符,如果文件名为两个或者两个以上的,将不在匹配范围内 |
[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 内
- 错误信息追加重定向
2>>
lsaaa 2> a.txt
把运行的错误信息,添加到 a.txt 下,输入过程,如果发生错误信息 ,会直接把错误信息追加到a.txt内,在末行进行添加
- 拓展知识点
>+2> = &>
ls [12].txt aaa.txt &> a.txt
把运行的错误和正确的信息,全部重定向输入到 a.txt 里面;运行过程,会把a.txt原有信息删除,写入新的信息。不在屏幕上显示
>>+2>> = &>>
ls [12].txt aaa.txt &>> a.txt
把运行的错误和正确的信息,全部添加输入到 a.txt 里面,并不会删除a.txt 原有的信息。不在屏幕上显示。```
ls [12].txt aaa.txt > 1.txt 2>a.txt
把运行正确的结果,重定向到1.txt;把运行错的结果,重定向到a.txt。因为使用的是重定向,每次操作,1.txt、a.txt内的信息都会被替换。