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=1000HISTTIMEFORMAT="%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内的信息都会被替换。