shell 介绍

  • shell是一个壳,是基于内核提供的一个用户接口,用来解释用户输入信息及执行和反馈用户相关命令。
  • shell 具有自己的逻辑和判断处理方法,支持特定语法
  • 用户的shell设定: /etc/passwd 用户登录shell设定。centos默认是bash.另外其它shell有zsh,ksh,tcsh等。

命令历史

  • 用户输入命令,默认会保存若干条。

    • 可通过shell中上下键进行查找或重复执行命令。

    • 可通过快捷键 ctrl+R 进行查找历史命令。

    • 也可通过+命令的前些字符或是 +命令所在记录的编号 进行执行命令。

        ``` shell
        #如 最近 执行的  ls -la /tmp 查看 /tmp 目录 文件。可通过下面方法执行
        !ls
        #假如上条 ls -la /tmp 命令在命令历史中 编号是 888 那么可通过下面命令执行
        !888
        ```
      
    • 最近的一条命令相关信息:

      #执行最近命令 
      !! 
      #查看上条命令执行结果
      echo $?
      
  • 用户默认的历史命令保存在家目录下 ~/ .bash_history 文件。

  • 默认历史命令可存 1000条,通过 环境变量 $HISTSIZE 控制存储条数。

  • 当前登录用户在没有退出前,默认输入的命令会保存在内存中,在退出时会写入该文件中。

  • 清空当前用户 内存中存储 的历史命令: history -c

  • 系统设置 history 命令条数文件:/etc/profile 可通过重声明来修改。如:export HISTSIZE=5000

  • 默认系统是只保留相关的命令,没有命令执行时间 。可通过修改 环境变量保存格式来保存相关信息:HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 。也可保存在 profile 文件中。

  • 用户历史命令保存禁止删除,可通过对保存文件.history添加隐藏追加权限. 如:chattr +a ~/.bash_history


命令补全和别名

  • 为帮助用户减少输入和提醒用户命令的全名和命令的参数,linux中提供命令补全,默认是TAB键。
  • 在centos6中只支持命令补全,centos7添加参数补全。相关的包是:yum install -y bash-completion。安装后,需重启服务器。
  • 另外,有些命令和参数比较多,又比较常用,为帮助用户减少重复输入,引入别名。将长命令重命令以简短不重复的单词。
  • 查看系统默认别名:alias
  • 设置命令别名:alias xxx="命令"。如常用 的ll命令:alias ll='ls -l --color=auto'
  • 取消别名设置:unalias xxx
  • 默认全局别名设置:/etc/.bashrc 和 目录/etc/profile.d/下脚本文件。个人设置别名存放于用户家目录下:~/.bashrc

通配符

  • 除命令补全外,linux对命令的对象也引入帮助机制--通配符。
  • 常见通配符如下:

星号*:可匹配所有的字符,不限个数,如命令:ls 1*,可匹配1.txt,133.sh 问号?:可匹配所有字符,只匹配一个。 单个字符范围:[123],[1-3],[abc],[a-z]等。 单个字符范围另种表示方法:{1,2,a,3,6}等。


输入输出重定向

  • 某些命令输入输出比较多时,或是输出信息需要保存时,linux引入了输入输出重定向符号。
  • 重定向包含两种类型:重定向和追加重定向。
  • 输入重定向:< 常用来表示输入文件内容。
  • 输入追加重定向:<<后需跟终止符 如"EOF" 。表示后续输入信息都是输入的内容,直到遇见终止 符后。
     wc -l << EOF #此处回车
    hello
    	world
    	good
    

EOF

* 输出重定向:`>`。输出追加重定向:`>>`
* 输出重定向表示:命令输出的信息 保存在后面跟随的文件中,如果原文件有内容,那么之前信息会删除掉。
* 输出追加重定向:原文件内容不变,将当前命令的输出信息追加到该文件中。
* 一般命令输出分为两类:正确输出和错误输出。文件描述符是1和2。可通过指定文件描述符输出追加重定向来指定命令输出 的保存位置。
	>如:cat 1.txt > ~/2.txt
	>cat 3.txt 1&2 >>  ~/2.txt
	>cat 4.txt &>> ~/2.txt
	>cat 6.txt 1>>~/2.txt  2>1