8.1 shell介绍
- shell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具(命令解释器)
- 支持特定的语法,比如逻辑判断、循环
每个用户都是自己的shell,在centos7中默认的shell为bash
系统中还有zsh与ksh,使用起来类似,但是 有些细节上的差异。
8.2 命令历史
- 敲过的命令会保存在用户的家目录下.bash_history中,这样就能通过上下方向键来查看之前敲的命令。
/root/bash_history //root用户
使用history命令可以查看之前敲过的命令,系统默认最大记录数为1000条。执行
echo $HISTSIZE
来查看最大记录数。
有时候命令数超过1000时,现在的命令历史暂时存在云内存中,只有用户正常退出shell时,在当前shell中运行的命令才会保存到.bash_history文件中。history -c 可以清空当前内存里面的命令历史清空,但不会清空.bash_history文件中的命令历史。
- 变量HISTSIZE在/etc/profile中去修改。修改完成后重新进终端或是执行
source /etc/profile
才会生效。
- 默认执行的命令是不能看到执行时间的,要想记录某条命令执行的时间可以将变量重新赋值即可
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
需要注意赋值的结果只在当前终端下生效。要想在下次登录时也生效,可以把上面这条命令写入到.bash_history中。
- 命令历史永久保存,不想被人修改它。可以加上特殊权限,让它只能追加,不能删除。
chattr +a /root/.bash_history
- 与命令历史有关的特殊字符!
(1)!!:连续2个!表示执行上一条命令
(2)!n :这里的n是数字,表示执行命令历史中的第n条命令。
(3)!字符串(字符串≥1):例:!ls 表示执行命令历史中最近一次以ls开头的命令
8.3 命令补全和别名
按Tab键可以帮我们补全一个参数、一个路径或者一个文件名。连续按2次,则系统会把所有的命令或文件名都列出来。
想在centos7中补全参数,需要安装bash-completion包,然后重启生效。
alias是系统特有的功能之一,可以通过alias把一个经常使用且很长得命令取一个简单易记的新名字。
直接执行alias可以列出所有的alias,包括自定义的。这些alias存在于用户家目录下的.bashrc和/etc/profile.d/下
取消alias,可以使用unalias+定义的名字
8.4 通配符
- 在bash下
(1)使用*来匹配零个或多个字符。
(2)使用?来匹配一个字符。
(3)[0-9] 表示指定范围,方括号里面的字符任选其一。
(4){ }花括号的作用与[ ]方括号类似。其中的字符用“,”分开
8.5 输入输出重定向
- 输入重定向用于改变命令的输入,输出重定向用于改变命令的输出,后者更常用
- 输出重定向>
cat 1.txt > 2.txt //查看到的1.txt文件内容重定向到2.txt
- 追加重定向>>
cat 2.txt >> 3.txt //表示将2.txt的文件内容追加到3.txt 但不会删除3.txt原来的文件内容。
-错误重定向2>
ls x.txt 2>a.txt //表示将ls命令的错误信息指定到a.txt中,而不会在屏幕上显示
错误追加重定向2>>
正确、错误重定向全部重定向一个文件中,并支持追加.。 >+2> 等于&>
ls {1,2}.txt aaa.txt > 3.txt 2>a.txt //表示正确与错误的输出分别重定向
- 输入重定向<
wc -l < 2.txt //输入的对象只能是命令,不能是文件。