6月28日任务

8.1 shell介绍

8.2 命令历史

8.3 命令补全和别名

8.4 通配符

8.5 输入输出重定向





shell介绍


26期20180628 shell 命令操作 通配符 输出输入重定向

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


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

yum list |grep zsh

yum list |grep ksh

26期20180628 shell 命令操作 通配符 输出输入重定向


history查看历史命令

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


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

/root/.bash_histroy这个文件里

26期20180628 shell 命令操作 通配符 输出输入重定向

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

这个文件是 /etc/profile

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

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

HISTTIMEFORMAT="%Y/%m/%d %H:%M:$s |"    (注意在文件里写的时候就不要加$了)

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

26期20180628 shell 命令操作 通配符 输出输入重定向

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

26期20180628 shell 命令操作 通配符 输出输入重定向

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


 26期20180628 shell 命令操作 通配符 输出输入重定向

26期20180628 shell 命令操作 通配符 输出输入重定向


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

有办法。

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

26期20180628 shell 命令操作 通配符 输出输入重定向

history显示历史命令之后

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

!! 上一条命令

!数字 运行第X条命令

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

26期20180628 shell 命令操作 通配符 输出输入重定向

26期20180628 shell 命令操作 通配符 输出输入重定向


命令补全和别名

26期20180628 shell 命令操作 通配符 输出输入重定向


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

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

26期20180628 shell 命令操作 通配符 输出输入重定向

26期20180628 shell 命令操作 通配符 输出输入重定向


alias别名 给命令重新起名字

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

alias 别名=‘原来的命令’

26期20180628 shell 命令操作 通配符 输出输入重定向


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

26期20180628 shell 命令操作 通配符 输出输入重定向

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

用户家目录下的.bashrc中

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


如何取消自定义的别名?

unalias 别名




通配符


*

[0-2] =[012] 


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


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



输入输出重定向

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

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


26期20180628 shell 命令操作 通配符 输出输入重定向


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

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

26期20180628 shell 命令操作 通配符 输出输入重定向


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

26期20180628 shell 命令操作 通配符 输出输入重定向


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

26期20180628 shell 命令操作 通配符 输出输入重定向


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

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

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

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

26期20180628 shell 命令操作 通配符 输出输入重定向


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