8.1 shell介绍
8.2 命令历史
8.3 命令补全和别名
8.4 通配符
8.5 输入输出重定向


shell介绍


image.png

Shell脚本只是一个表现,所谓的shell是一个命令解释器,用户和机器的一个交互


Shell我们主要使用的是bash shell 另外还有zsh ksh等

yum list |grep zsh

yum list |grep ksh

image.png


history查看历史命令

-c 是清空内存的命令历史


其实所有的历史命令都存在一个文件里

/root/.bash_histroy这个文件里

image.png

默认的存放条数是1000,可以修改,如果只是修改环境变量的话 $HISTSIZE =10000,但是最终还是要到环境变量的文件中去进行修改

这个文件是 /etc/profile

这里面可以修改存储的个数,比如$HISTSIZE=10000改成10000条

也可以增加记录中使用命令的时间 比如$HISTTIMEFORMAT 

$HISTTIMEFORMAT="%Y/%m/%d %H:%M:$s |"

这样就定义了显示的时间格式

image.png

但是修改完之后要么是退出当前用户,要么是需要source 这个文件才可以生效

image.png

可以使用echo $HISTSIZE $HISTTIMEFORMAT显示定义的值


 image.png

image.png


如果不想丢失历史记录怎么办呢?

有办法。

现在已经定义了可以存放的历史命令的个数,如果超了就会覆盖,那我们直接可以追加模式 echo$?可以看到上一步运行的是否有错误

image.png

history显示历史命令之后

有一些命令可以快速使用之前的命令

!! 上一条命令

!数字 运行第X条命令

!word 倒着往上找第一个以word开头的命令

image.png

image.png


命令补全和别名

image.png


tab键 一个的话敲一下补全 两个以及以上就会显示出来

centos 支持命令参数补全 默认还是不支持的 需要安装一个包 bash-completion 后重启系统

image.png

image.png


alias别名 给命令重新起名字

如果有的命令比较长 可以把命令做别名

alias 别名=‘原来的命令’

image.png


直接alias可以看到系统里所有的别名,也包括自己的定义的

image.png

这些别名的定义在什么地方呢?

用户家目录下的.bashrc中

目录 etc/profile.d下的几个文件中


如何取消自定义的别名?

unalias 别名


通配符


*

[0-2] =[012] [0-3a-zA-Z] 中间不用加任何的标点符号


{1,2,3,} =[1-3]区别是有逗号



输入输出重定向

> 前面的输出作为后面的输入 覆盖 前面文件内容不会受影响

>> 前面的输出作为后面的输入 追加 前面的文件内容不会受到影响


image.png


2>是将前面命令的错误信息保存到后面的文件中 当然了2>>是追加

如果前面的是正确的会把后面的文件内容覆盖

image.png


>+2 == &> 覆盖  >>追加

image.png


还可以分开把正确的和错误的写入文件 >  2>

image.png


<叫做输入重定向 很少用到

是把右边内容重定向到左边命令

比如 wc word count -l line 查看行数 

把1.txt的内容重定向查看行数

image.png


但是不能把右边文本内容输出到左边文件中,左边必须是命令