shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向

81 shell介绍

什么是shell?
shell是一个命令解释器,提供用户和机器之间的交互;
支持特定的语法,例如逻辑判断,循环;
每个用户都可以有自己的shell;
CentOS7默认的shell是bash(Bourne Agin Shell);
还有其他的如zsh、ksh等。

[root@localhost httpd-2.2.34]# yum list |grep zsh
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
zsh.x86_64                                  5.0.2-28.el7               base     
zsh-html.x86_64                             5.0.2-28.el7               base     
[root@localhost httpd-2.2.34]# yum list |grep ksh
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
ksh.x86_64                                  20120801-34.el7            base     
mksh.x86_64                                 46-5.el7

82 命令历史

shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向_第1张图片
命令历史
[root@localhost httpd-2.2.34]# history(查看已经使用过的命令)
[root@localhost httpd-2.2.34]# cat /root/.bash_history (同样可以查看使用过的命令)
[root@localhost httpd-2.2.34]# echo  $HISTSIZE (CentOS7系统默认最多保存1000条命令历史)
1000
[root@localhost httpd-2.2.34]# history -c (清除内存中的命令,退出终端时才会写入文件中)
[root@localhost httpd-2.2.34]# vim /etc/profile(更改默认最多保存历史命令条数)
更改默认最多保存历史命令条数

这里我们修改为2000

[root@localhost httpd-2.2.34]# echo $HISTSIZE
1000
[root@localhost httpd-2.2.34]# source /etc/profile(需要source才能生效)
[root@localhost httpd-2.2.34]# echo $HISTSIZE
2000

默认的命令历史不太详细可以通过修改配置文件 /etc/profile 来给命令历史添加日期和时间


在配置文件中添加变量
[root@localhost httpd-2.2.34]# vim /etc/profile
[root@localhost httpd-2.2.34]# source /etc/profile
[root@localhost httpd-2.2.34]# history(这时会显示命令时间信息)
    1   2018/01/22  16:53:58  vim /etc/profile
    2   2018/01/22  16:59:06  echo $HISTSIZE
    3   2018/01/22  16:59:19  source /etc/profile
    4   2018/01/22  16:59:21  echo $HISTSIZE
    5   2018/01/22  17:03:17  vim /etc/profile
    6   2018/01/22  17:04:20  source /etc/profile
    7   2018/01/22  17:04:45  history

想要永久保存命令历史 就是用命令 chattr +a ~/.bash_history
history -c 可以清楚内存中的命令历史 保存在 /etc/profile 中的不受影响
注:终端非正常关闭命令历史会记录不完善
!! 执行命令历史里的最后一条命令

!! 执行命令历史里的最后一条命令
!n 执行命令历史里的第n条命令
!Word 执行命令历史里最后一条这个Word的命令

83 命令补全和别名

shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向_第2张图片
命令补全和别名

在输入命令时可以使用tab键补全命令
按一下tab键如果命令没有补全则存在多个以你当前输入相同的开头的命令
这时你需要按两下tab键 列出所有类似命令找到你需要的继续输入

在CentOS7中还可以补全命令参数 默认是不能的 要安装bash_completion 来实现 安装完成后重启机器即可使用

[root@localhost httpd-2.2.34]# yum install -y bash-completion
[root@localhost ~]# reboot

这个时候命令也是可以补全了

[root@localhost ~]# alias(alias命令可以查看系统中使用了别名的命令)
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]# alias lsa='ls -la'(定义别名)
[root@localhost ~]# lsa
总用量 700
dr-xr-x---.  4 root root    227 1月  22 17:04 .
dr-xr-xr-x. 17 root root    224 12月 26 08:10 ..
-rw-------.  1 root root   1418 12月 26 08:11 anaconda-ks.cfg
-rw-------.  1 root root  13503 1月  22 17:33 .bash_history
-rw-r--r--.  1 root root     18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root    176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root    176 12月 29 2013 .bashrc
-rw-r--r--.  1 root root    100 12月 29 2013 .cshrc
drwxr-xr-x.  3 root root     91 1月  10 11:50 d6z
-rw-r--r--.  1 root root 654748 1月  10 17:14 d6z.tar.gz
-rw-------.  1 root root     53 12月 30 16:40 .lesshst
-rw-r--r--.  1 root root  12288 1月   4 10:33 .passwd.swp
drwx------.  2 root root     29 12月 30 10:47 .ssh
-rw-r--r--.  1 root root    129 12月 29 2013 .tcshrc
-rw-------.  1 root root   3497 1月  22 17:04 .viminfo
[root@localhost ~]# unalias lsa(取消别名)
[root@localhost ~]# lsa
-bash: lsa: 未找到命令

84 通配符

shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向_第3张图片
通配符

* 可以匹配所有字符
? 匹配所有单个字符
[0-9] 匹配任意一个数字
[a-z] 匹配任意一个小写字母
[A-Z]匹配任意一个大写字母
[0-9a-zA-Z]匹配任意一个数字或字母
{1,2,3}匹配其中一个

85 输入输出重定向

> 输出重定向 会删除原有文档内容
>>输出追加重定向 在原有文档末尾增加
2>错误输出重定向 会删除原有文档内容
2>>错误输出追加重定向 在原有文档末尾增加
加 2> 等于 &> 正确和错误的一起重定向到一个文件
< 输入重定向 左边为命令右边是文件

[root@localhost ~]# laaa 2>a.txt
[root@localhost ~]# cat a.txt 
-bash: laaa: 未找到命令
[root@localhost ~]# cat a.txt >> a1.txt 
[root@localhost ~]# cat a.txt 
-bash: laaa: 未找到命令
a.txt
[root@localhost ~]# cat a1.txt 
-bash: laaa: 未找到命令
a.txt
[root@localhost ~]# cat a.txt >> a1.txt 
[root@localhost ~]# cat a1.txt 
-bash: laaa: 未找到命令
a.txt
-bash: laaa: 未找到命令
a.txt

你可能感兴趣的:(shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向)