什么是shell
- shell是一个命令解释器,提供用户和机器之间的交互
- 支持特定语法,比如逻辑判断、循环
- 每个用户都可以有自己特定的shell
- CentOS7默认shell为bash(Bourne Agin Shell)
- 还有zsh、ksh等
命令历史
- history命令,查看命令的输入历史
- .bash_history,命令输入历史保存文件,默认1000条
- 变量HISTSIZE,在/etc/profile中修改;HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S ",历史命令中时间格式化显示
- /etc/profile文件生效方式: 重新进终端或者source /etc/profile
- 永久保存命令输入历史 chattr +a ~/.bash_history
- !! # 执行上一条命令
- !n # 执行命令历史文件中第n条命令
- !word 根据时间在命令历史文件中从新到老找到的第一个word命令执行
- history -c # 清空内存中缓存的命令,不会清空.bash_history文件的内容
- 退出终端时会把内存中的命令写到.bash_history文件中
命令补全及别名
- tab键,敲一下会补全能唯一确定的一个命令,敲两下列出可选的命令
- 命令参数补全,安装bash-completion,安装完成后需要重启系统才能生效(CentOS7支持)
- alias 别名 # 给命令重新起个名字
- 各用户都有自己配置别名的文件 ~/.bashrc,另外的别名配置文件在目录/etc/profile.d/下
- 自定义的alias放到 ~/.bashrc
[root@centos01 ~]# alias cat1='cat 1.txt'
[root@centos01 ~]# cat1
1
[root@centos01 ~]# unalias cat1
[root@centos01 ~]# cat1 # 取消别名
-bash: cat1: command not found
通配符、输入输出重定向
- ls *.txt # *通配任意个字符
- ls ?.txt # ?表示一个任意字符
- ls [0-9].txt # [0-9] 取0到9之间的任意一个
- ls {1,2}.txt # 列出1.txt和2.txt 等价于 [12].txt
- cat 1.txt > 2.txt # 把命令cat 1.txt输出的内容直接写到2.txt(重写前会清空2.txt) -cat 1.txt >> 2.txt # 把命令cat 1.txt输出的内容追加写到2.txt(重写前不会清空2.txt)
- ls aaa.txt 2>err # 命令ls aaa.txt产生的错误信息输入到err文件
- ls aaa.txt 2>>err # 命令ls aaa.txt产生的错误信息追加输入到err文件
- wc -l < 1.txt # 输入重定向,左边必须是命令
- command > 1.txt 2>&1 # command执行的正确和错误结果输出到1.txt,其中&1表示标准正确输出目标,而命令command > 1.txt已经定义了正确输出的文件1.txt,所以&1指代1.txt
[root@centos01 ~]# ls
1.txt anaconda-ks.cfg a.txt d0917 link_test s_link0.log test.txt
[root@centos01 ~]# ls *txt
1.txt a.txt test.txt
[root@centos01 ~]# ls
1.txt anaconda-ks.cfg a.txt d0917 link_test s_link0.log test.txt
[root@centos01 ~]# ls aaaa.txt 2>err.txt
[root@centos01 ~]# cat err.txt
ls: cannot access aaaa.txt: No such file or directory
[root@centos01 ~]#
[root@centos01 ~]# ls aaaa.txt >> err.txt
ls: cannot access aaaa.txt: No such file or directory
[root@centos01 ~]# cat err.txt
ls: cannot access aaaa.txt: No such file or directory
[root@centos01 ~]#
[root@centos01 ~]# ls
1.txt anaconda-ks.cfg a.txt d0917 err.txt link_test s_link0.log test.txt
[root@centos01 ~]# ls {1,2}.txt
ls: cannot access 2.txt: No such file or directory
1.txt
[root@centos01 ~]# ls {1,2}.txt > err.txt
ls: cannot access 2.txt: No such file or directory
[root@centos01 ~]# cat err.txt
1.txt
[root@centos01 ~]# ls {1,2}.txt &> err.txt
[root@centos01 ~]# cat err.txt
ls: cannot access 2.txt: No such file or directory
1.txt
[root@centos01 ~]# ls {1,2}.txt &> err.txt
[root@centos01 ~]# cat err.txt
ls: cannot access 2.txt: No such file or directory
1.txt
[root@centos01 ~]# ls {1,2}.txt &>> err.txt
[root@centos01 ~]# ls {1,2}.txt &>> err.txt
[root@centos01 ~]# cat err.txt
ls: cannot access 2.txt: No such file or directory
1.txt
ls: cannot access 2.txt: No such file or directory
1.txt
ls: cannot access 2.txt: No such file or directory
1.txt
[root@centos01 ~]# ls {1,2}.txt > res.txt 2>err.txt
[root@centos01 ~]# cat res.txt
1.txt
[root@centos01 ~]# cat err.txt
ls: cannot access 2.txt: No such file or directory
[root@centos01 ~]# ls {1,2}.txt > ttt.log 2>&1
[root@centos01 ~]# cat ttt.log
ls: cannot access 2.txt: No such file or directory
1.txt
来源:oschina
链接:https://my.oschina.net/u/996931/blog/2243843