cundeng 发表于 2018-8-22 11:53:02

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

shell介绍
  shell是一个命令解释器,提供用户与机器之间的交互
  例如我们远程登录的工具,它其实就是一个shell
  centos默认的shell是bash(Bourne Agin Shell)
  ·
命令历史
  history命令
  命令历史存在用户家目录下的.bash_history,如root用户就是/root/.bash_history
  ·
  history可以查看命令历史,.bash_history文件了里最多可以存1000条,它是由环境变量HISTSIZE决定的,不过history有时候也会查看到超过1000条的命令历史,不过那是没有写进文件里的,还存在于内存中
  ·
  history -c可以把当前内存里的命令历史清空,但是并不会删除.bash_history文件里存的命令历史。

  ·
  当你退出终端的时候系统会把内存里的命令历史存到.bash_history文件里。
  ·
  当然我们可以更改.bash_history文件的1000条数限制,只需要编辑/etc/profile,把里面HISTSIZE这一行后的1000改一下,然后source /etc/profile刷新一下,或者重新进一下终端即可生效。



  ·
  我们也可以让history出来的历史命令显示时间,使用如下命令,定义HISTTIMEFORMAT变量为后面的格式,不过它只在当前窗口当前终端里生效。
  HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

  ·
  如果想要让它在其他窗口并且一直生效,可以编辑/etc/profile文件,这行命令放到HISTSIZE这一行下面,之后source /etc/profile刷新一下,或者重新进一下终端即可生效。

  `
  如果想要永久保存你的命令历史,不想别人删除,可以给它加一个特殊权限a,即使有最大1000条的限制,也是可以保存超过1000条的。

  ·
  不过如果你不是正常退出终端,你敲过的命令历史就会保存的不全。
  想要使用命令历史的最后一条命令,也就是你使用的上一条命令可以用!!
  想要使用命令历史的多少行命令,那就可以使用!加行数
  想要使用命令历史里最后一个以xx开头的命令可以使用!加xx
  ·
命令补全和别名
  在打命令的时候按tab键可以自动补全,可以补全文件,也可以补全命令,如你打了文件名的一半然后按一下tab键系统可以自动帮你补全剩下的一半。
  不过有一种情款就是有两个及以上的文件都是以你打出来的部分文件名开头的,这时候按一下tab就没有用了,这时候我们可以按两下,系统会显示出所有以你打出来的部分文件名开头的文件。

  ·
  然后你可以找到你要打的文件名,继续输入,直到没有其他以你输出的部分文件名开头的文件,再按一下tab就可补全了。
  ·
  在centos7里tab还可以补全命令的参数,不过需要安装一个bash-completion包,然后重启系统才能生效。

  ·
  我们先看没有安装bash-completion时我们使用systemctl restart network.service命令tab的情况

  ·
  tab是没有反应的
  我们安装bash-completion,然后重启再试下

  ·
  这时tab已经可以tab出来了
  ·
  我们还可以给较长的命令设置别名,使用alias命令,如我们把systemctl restart network.service别名设置成restartnet,之后我们就可以使用restartnet命令代替了。

  ·
  直接运行alias可以查看系统中所有的别名。这些别名存在于用户家目录下的.bashrc文件(自定义的alias)以及/etc/profile.d/目录下的文件里。

  ·
  取消别名使用unalias加别名

  ·
通配符
  用法
表示查看当前目录下名字中以.txt结尾的所有文件或目录。
  ·
表示查看当前目录下名字中含有txt的文件或目录。
  ·
表示查看当前目录下名字以1开头的文件或目录
  ·
  ?用法
  查看当前目录下文件名是一个字符加.txt的文件(?表示一个任意的字符)

  ·
  [数字-数字]用法(方括号[]   )
  查看当前目录下设定数字范围内的所有以.txt结尾的文件(同时也支持字母如a-z或A-Z)

  ·

  ·
  查看当前目录下以1、2、3开头的,然后以.txt结尾的文件(123可以无顺序   随便输)

  ·
  {字符、字符、字符}(花括号{    }   )
  类似于,字符之间是或者的关系,(花括号里边,需要用英文逗号隔开)

  ·
输入输出重定向
  把前面的命令的输出输入到后面的文件里面去,下图就是把1.txt里的内容覆盖到2.txt里。(会把原本2.txt里的内容删掉)
cat 1.txt >2.txt

  ·
  >把前面的命令的输出追加到后面的文件里面去,下图就是把1.txt里的内容追加到2.txt里(不会把原本2.txt里的内容删掉)
cat 1.txt >> 2.txt

  ·
  2>把前面的命令产生的错误信息输入到后面的文件里去。

  ·
  2>>把前面的命令产生的错误信息追加到后面的文件里去。

  ·
  &>把前面的命令产生的正确信息以及错误信息都输入到后面的文件里去。(同样也支持追加,使用&>>)

  ·
  把前面的命令产生的正确信息以及错误信息分别输入到后面的两个文件里去可以使用

  ·
  
页: [1]
查看完整版本: shell介绍 命令历史 命令补全和别名 输入输出重定向