8.1 shell介绍

一、什么是shell 

1shell是一个命令解释器,提供用户和机器之间的交互 

2、支持特定语法,比如逻辑判断、循环 

3、每个用户都可以有自己特定的shell 

4CentOS7默认shellbashBourne Agin Shell

5、 还有zshksh

bash它是shBourne Shell)的增强版本,Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh

 

看系统是否有安装zshksh,示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@aminglinux-01 ~]yum list |grep zsh

zsh.x86_64                              5.0.2-25.el7                   installed

autojump-zsh.noarch                     22.3.0-3.el7                   epel    

zsh.x86_64                              5.0.2-28.el7                   base    

zsh-html.x86_64                         5.0.2-28.el7                   base    

zsh-lovers.noarch                       0.9.0-1.el7                    epel    

[root@aminglinux-01 ~]# yum list |grep ksh

ksh.x86_64                              20120801-34.el7                base    

mksh.x86_64                             46-5.el7                       base    

python-XStatic-Rickshaw.noarch          1.5.0.0-4.el7                  epel    

python-moksha-common.noarch             1.2.3-2.el7                    epel    

python-moksha-hub.noarch                1.5.3-2.el7                    epel    

python-moksha-wsgi.noarch               1.2.2-2.el7                    epel

 8.2 命令历史

 一、命令历史:

1history命令             //查看之前使用的命令。

2.bash_history       //存储使用过的命令文件,在root的家目录下

3、变量HISTSIZE 默认值1000         //存储使用命令数值为1000

4/etc/profile中修改变量HISTSIZE   //修改存储命令数值

5HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " //记录命令的使用时间

6、永久保存 chattr +a ~/.bash_history

7!!                        //执行上一条命令

8!n                     //n表示数字   比如:!176   这样它就会执行命令历史里的176这条命令

9!echo            //echo表示你需要找命令历史里从下往上找以word开头的第一条命令执行它。

 

1.1  history命令 

我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令,这些命令保存在用户的家目录中的.bash_history文件中。只有正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。 

4月20日_4月20日 

1.2 清空当前命令历史 history -c

4月20日_4月20日_02 

(使用命令history -c 命令可以清空内存中的命令,

文件.bash_history里的配置文件命令不会清空)

1.3  查看预设命令条数显示命令: echo $HISTSIZE

4月20日_4月20日_03 

1.4 修改记录的历史数,可以使用命令: 

     vim /etc/profile 中修改变量HISTSIZE: 

4月20日_linux_04 

 

4月20日_4月20日_05 

1.4.1 修改后使用命令 :source /etc/profile 让它生效,

   然后再用命令:echo $HISTSIZE 来查看修改结果

4月20日_4月20日_06 

1.5 记录命令的使用时间,可以输入以下变量即可(只限当前窗口的shell): 

  HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S ” 

4月20日_4月20日_07 

1.5.1 如果要在其他的窗口shell中也生效,可以进入 /etc/profile 中添加一行HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S ” 即可

 (保存退出后source /etc/profile一下生效):

4月20日_4月20日_08 

1.6 永久生效,不让别人删除命令:chattr +a ~/.bash_history 添加权限只能追加,不能修改删除

注意:如果执行了这条命令后,你并没有正常退出终端,就会导致保存的命令不全。

1.7  !! 表示执行上一条指令 

4月20日_4月20日_09 

1.8  !n 表示执行命令历史中n条指令,如!593条命令 

4月20日_linux_10 

1.9  !echo 表示执行命令历史中最近一次 ‘echo’ 为开头的命令

 

8.3 命令补全和别名

一、命令补全和别名:

 

1tab键,敲一下,敲两下

2、参数补全,安装bash-completion

3alias别名给命令重新起个名字

4、 各用户都有自己配置别名的文件 ~/.bashrc    //存放别名的路径地址

      ls /etc/profile.d/                              //存放别名的路径地址

      自定义的alias放到~/.bashrc         //自定义后别名存放的地址

 

1.1 命令补全: 

tab键,它可以帮你补全一个命令,也可以帮你补全一个路径或者一个文件名。

连续按两次tab键,系统则会把所有的指令或者文件名都列出来 

4月20日_linux_11 

1.2 参数补全,安装bash-completion   ,命令:yum install -y bash-completion

需要重启一下才管用 reboot

1.3  alias别名 

通过alias把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用unalias解除别名功能。直接敲alias会看到目前系统预设的alias. 

4月20日_4月20日_12 

1.4  alias目前系统预设的别名在:.bashrc

4月20日_4月20日_13 

 其他alias自定义别名,存放于 /etc/profile.d/

 

8.4 通配符

一、通配符:

1ls *.txt              //表示查找.txt通配文件

2ls ?.txt             //表示一个任意的字符

3ls [0-9].txt        //列出满足条件范围内的文件

4ls {1,2}.txt        //用花括号列出你需要的文件

 

1.1 1.2bash下,可以使用 * 来匹配零个或多个字符,而用 ? 匹配一个字符

4月20日_4月20日_14 

1.3 也可以使用[0-9a-zA-Z]范围来匹配,如 : ls [1-3].txt 

1.4  用花括号列出你需要的文件 ,ls {1,2345}.txt 

4月20日_linux_15 

 

8.5 输入输出重定向

输入重定向用于改变命令的输入输出重定向用于改变命令的输出

输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。

   输入重定向的命令是<,

   输出重定向的命令是> ,

   追加重定向 >> ,

   2>是错误重定向,

   2>>错误追加重定向

 >+2> 等于 &>) 

一、 输入输出重定向,试验

 

1cat 1.txt >2.txt        //>它会把命令产生的正确信息输出到指定文件里去,删除之前文件内容重写。

2cat 1.txt >> 2.txt     //>>把前面命令输出内容重定向追加到后面命令里去,不删除旧的。

3ls aaa.txt 2> err      //它会把命令产生的错误信息输出到指定文件里去

4ls aaa.txt 2>> err   //  错误信息输出追加重定向                                                  

5wc -l < 1.txt           //查看一个文件的行数

 

1.1 输出重定向> ,把前面的命令追加到后面的文件里去,原内容删除重写

4月20日_linux_16 

1.2 追加重定向 >>把前面命令输出内容重定向追加到后面命令里去,不删除旧的。

4月20日_4月20日_17 

1.3  2>是错误重定向,它会把命令产生的错误信息输出到指定文件里去,没有产生错误就无效

4月20日_linux_18 

1.4  2>>错误追加重定向,追加一次错误信息到文件,&>正确定向和错误 定向到一个文件

4月20日_linux_19 

1.5 输入重定向的命令是<,左边必须是命令 ,不可以文件到文件 <

以下是查看文件行数是几行

4月20日_linux_20