一、shell介绍
shell是系统跟计算机硬件交互使用的中间介质,它只是系统的一个工具。shell和计算机硬件之间还有一层东西——系统内核。若把计算机硬件比作人的躯体,那系统内核就是大脑,shell就是五官。用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。
shell是一个命令解释器,提供用户和机器之间的交互。
每个用户都可以有自己特定的shell。
centos7默认的shell为bash(Bourne Agin Shell)
系统里还有zsh、ksh的shell,有细节差异。
shell还有自己特定的语法,比如逻辑判断、循环。
二、命令历史
history命令 查看命令历史
/root/.bash_history 所在路径
可以使用该命令查看存了多少条,该文件最大存一千条。
该命令由一个环境变量给它配置:HISTSIZE。可以echo $HISTSIZE查看到为1000,代表最大存1000条命令,这是系统内置的环境变量。出来的第1000条以后的命令,没有存入命令历史,暂时存在了内存中。
# history -c 把内存里命令历史清空,不能把配置文件给清空
只有退出当前终端的时候,命令才会存到配置文件里面去,在终端里的时候就是存在了内存的命令历史里。
定义环境变量HISTSIZE的配置文件:/etc/profile
进入后可以直接查找HISTSIZE即可,将数据可以更改为自己想定义的量。
更改保存后,必须执行# source /etc/profile命令,否则该变量不会生效,或者重新进终端也行。
# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 使命令历史有时间显示。只在当前终端生效。Y:年份;m:月份;d:日期;H:小时;M:分钟;S:秒钟。
若想永久生效,将它写入到配置文件/etc/profile中,放到HISTSIZE=1000下面一行。写到配置文件后,保存退出,再重新进终端就可以验证命令历史是不是有时间显示。
# chattr +a ~/.bash_history
永久保存,使命令历史的配置文件直接追加不能删除。若不正常退出,那命令就不会正常的保存到命令历史里面。
# !!命令历史里的最后一条命令
# !n n后跟数字,可以再执行一遍命令历史里的第n条命令。
# !echo 从后往前在命令历史里找以echo开头的命令再执行一次,如!tree,等。
三、命令补全和别名
命令补全 tab键,敲一下补全,敲两下搜索出以该命令开头的2个以上的选项。可以补全命令和文件路径。
命令参数补全:centos7支持,需要# yum install -y bash-completion。安装这个包。centos6仅仅支持命令本身的补全,安装完后还需要重启系统才行。
命令参数如systemctl restart network.service。
# alias restartnet="systemctl restart network.service"
将这条长命令做一个别名。再使用时敲别名即可。
unalias解除别名。
别名位置:用户家目录下的.bashrc下和/etc/profile.d/下。自定义的别名在.bashrc下。
四、通配符
* 表示通配,不分字符,不分几个
? 表示匹配一个字符,如ls ?.txt,会将.txt的文件全部列出来。
[ ] 示例:ls [0-3].txt或ls [123456].txt。写一个范围。
{ } 和[ ]类似,但是这个{ }里要加逗号,如{1,2,3,4}
五、输入输出重定向
> 输出重定向
> 把前面命令的输出输入到后面的文件里面去。一个大于号会把后面的文件删除掉将前面的输出覆盖后面的文件。所以一般用两个>>,追加的意思,不会把原来的文件删除。
2>,把命令产生的错误信息指定的输入到一个文件去。2>>,错误信息追加重定向。
>+2>=&>,将正确和错误的信息输出到后面的文件里去。用&>表示即可。
< 输入重定向,>的反向用法。左边必须是命令,不能是文件反向输入到文件。
原文地址:http://blog.51cto.com/13576245/2084001