运维笔记8


运维笔记8

Shell命令的种类

  • 外部命令

    可以利用type命令来查看命令是否为内部命令,外部命令储存在磁盘上,载入需要比较长的时间。

  • 内部命令

    enable命令可以用来查看内部命令,内部命令在系统上电之后就被自动载入内存,所以执行速度快。

命令的格式

  • COMMAND [OPTIONS...] [ARGUMENTS...]

    1. 选项:用于启用或关闭命令的某个或某些功能。

      • 短选项:-c 例如:-l-h
      • 长选项:--word 例如:--all--human-readable
    2. 参数:命令的作用对象,比如文件名用户名等

  • 注意

    1. 多个选项以及多参数和命令之间使用空白字符分割
    2. 取消和结束命令执行:Ctrl+cCtrl+d
    3. 多个命令可以使用;号隔开
    4. 一个命令可以用\分成多行

管理内部命令的办法

  • enable命令可以用来管理内部命令。
  • enable -n [command]命令可以用来禁用该命令。
  • enable [command]命令可以用来恢复命令,是命令使能。
  • enable -n可以用来查看所有被禁用的命令。

系统执行命令的过程(按照如下顺序执行)

  1. 检查别名alias内部是否有和输入命令相同的命令,有的话使用该命令。否则进行下一步。

    • alias [name]=["command"]可以用来定义命令的别名alias。使用这种方法定义别名alias仅仅是暂时性的,如果重新登录或者重启系统,该别名会失效,如果想要使别名alias永久有效,需要使用下面的操作。

    • 如果想要使别名alias永久性生效,需要将别名写入/etc/.bashrc文件中,这个会设置所有用户的别名,如果仅仅想要设置特定用户的别名,需要在该用户的家目录下寻找.bashrc文件,将别名写入该文件。

    • 如果要使得这个文件的修改立刻生效,有如下几种方法

      1. 重启终端或者重启系统。
      2. 使用source .bashrc. .bashrc命令可以使得配置文件生效。其中source命令与.命令等价。
    • 使用unalias命令可以删除别名。

    • 使用\[aliasname]可以忽略别名。

  2. 判断命令是否为内部命令,否则执行下一步。

  3. 判断hash表里是否有该命令,有的话按照hash表找到命令所在位置,执行命令,否则进行下一步。

    • 使用hash命令可以查看命令的缓存情况,并可以查看命令的命中次数,即缓存的命中率,利用了存储器的局部性原理。
    • 使用hash -d [command]命令可以删除hash表里面的命令。
    • 使用hash -r命令可以删除hash表中所有的命令。
    • hash表中记录了外部命令所在的路径。
  4. 判断是否命令存储在外存中,否则执行下一步。其中$PATH记录了命令在外存中的位置。

  5. 发送命令找不到提示。

命令的等待、命令的终止与单行多命令的写法

  • 多命令写在单行内

    [command1];[command2];[command3]
    
  • 命令终止

    可以使用快捷键ctrl + c或者ctrl + d

  • 命令的等待

    可以使用sleep [n]命令来等待,n表示等待的时间,以秒为单位。


文章作者: 南航古惑仔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 南航古惑仔 !
  目录