day 23 Linux Shell基础

8.1 shell介绍

  • shell 是一个命令解释器,提供用户和机器之间的交互
  • 支持特定语法,比如逻辑判断、循环
  • 每个用户都可以有自己特定的shell
  • CentOS7 默认shell为bash
8.2 历史命令

  • 历史命令存放在当前用户家目录下.bash_history文件中
  • #history --#可以查看历史命令,环境变量HISTSIZE的值为1000,表示历史命令最大可存1000条,有时候通过history查看时,会显示大于1000的历史命令,此时这些命令只是暂时存在内存中,只有退出终端后,内存中的历史命令才会保存到.bash_history文件中去
  • #history -c                                                   --#将当前内存中的历史命令清空,但不能清空.bash_history中的历史命令
  • 环境变量HISTSIZE/etc/profile中定义,若修改该变量要使之生效,需要退出终端重新登录或者执行命令#source /etc/profile
  • 使用命令HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 可以记录命令执行的时间,若使之在其它终端中也生效,只需编辑/etc/profile,将其加到变量HISTSIZE下一行即可,并运行#source /etc/profil
  • 若想永久保留历史命令,不想被删除与破坏,可以给.bash_history文件增加一个隐藏权限a,使该文件只能增加内容,不能删除: #chattr +a ~/.bash_history, 如果输入了很多命令,但是没有执行exit或logput退出终端,而是直接关闭终端,那么刚才输入的一系列命令会记录不全
  • !!                                --#表示上一条命令(历史命令中最近一条命令)
  • !n                                 --#表示运行历史命令中第n条命令
  • cmd --#会在历史命令倒着向上搜寻,第一个以该命令(关键字)开头的命令执行
8.3 命令补全与别名

  • tab键                                                               --#敲一下,匹配命令或参数, 敲两下,显示匹配信息供选择
  • #yum install -y bash-completion --#安装bash-completion,实现命令的参数补全,重启系统生效,例如systemctl restart
  • #alias                                                              --#列出系统所有别名,包括自定义的别名
  •  #alias 命令别名='原命令'                               --#给命令取一个别名,例如alias restartnet=‘systemctl restart network.service’
  • 通常系统默认的别名配置文件存在于~/.bashrc文件和/etc/profile.d/目录下各对应文件(比如colorls.sh、colorgrep.sh)中
  • 各用户都有自己配置别名的文件: ~/.bashrc自定义的别名放置到该文件中
  • #unalias 命令别名 --#取消某个命令的别名设置
8.4 通配符

  •                          --#任意多个字符
  •                          --#一个任意的字符
  • [ ]                         --#方括号中的字符任选其一,可以是一个字段或数字范围,比如:[0-9]、[a-zA-Z]、[234]、[cgkn]、[0-9a-zA-Z]
  • { }                         --#花括号当中的一个,或的关系,其中内容用逗号“,”隔开,如{1,2,a}
day 23 Linux Shell基础

8.5 输入输出重定向

  •                                                    --#输出重定向,“cmd > 文件”,将前一个命令执行成功的输出结果重写到文件当中
  • >>                                                   --#追加重定向,“cmd >> 文件”, 将前一个命令执行成功的输出结果追加到文件当中
  • 2>                                                   --#错误重定向, “cmd 2> 文件” ,将前一个命令执行错误的结果重写到文件当中
  • 2>>                                                 --#错误追加重定向, “cmd 2>> 文件” ,将前一个命令执行错误的结果追加到文件当中
  • &>                                                   --#结合了命令执行成功错误的输出结果,重写到同一个文件中,如下图
  • &>>                                                 --#结合了命令执行成功和错误的输出结果,追加到同一个文件中,如下图
day 23 Linux Shell基础

  • cmd> file12> file2 --#将前一个命令执行成功与错误的输出结果分别重写到对应的文件中
  •                                                      --#输入重定向,“cmd < file” ,将后面文件中的内容输出到前面的命令或文件中,前面必须是命令