美文网首页
Shell(3)shell理解

Shell(3)shell理解

作者: 六亲不认的步伐 | 来源:发表于2019-07-25 16:22 被阅读0次

    默认shell

    • 默认系统shell:存储查看位置在/bin/sh
    • 默认交互shell:存储查看位置在/etc/passwd

    shell父子关系

    • 在第一个shell中输入bash即可打开新的shell,此时的新shell就作为老shell的子进程
    • 命令参数修改启动方式
    1. -c string 从string中读取命令并处理
    2. -i 启动能够接收用户输入的交互shell
    3. -l 以登陆shell形式启动
    4. -r 启动受限shell,限制在默认目录
    5. -s 从标准输入读取命令
    • ps --forest可以直观查看父子关系

    进程列表

    • 使用(shell1;shell2 ;shell3 ;):开启子进程来执行这个命令列表
      例如:

    (ls;pwd;cd ../;)

    是否生成了子shell,使用环境变量的命令$BASH_SUBSHELL进行查询
    结果为0则未生成子进程,为非0数字则生成子进程。
    例如:

    (ls;pwd;cd ../;($BASH_SUBSHELL))
    结果输出2

    后台模式

    • 可以高效的使用使用子shell,后台模式中运行命令可以在处理命令的同时让出CLI
    • 使用方式在命令后置&
      例如:

    sleep 1000&
    执行此命令后可用ps -f查看

    • 显示后台命令可以使用jobs
    1. -l:在默认的显示基础上可以显示PID

    后台命令常用于文件解压
    (tar -cf Rich.tar /home/rich ; tar -cf My.tar /home/christine)&

    协程

    • 可以同时做两件事
    • 使用方法coproc command/command list
      例如:

    coproc { sleep 300; }&

    外部命令

    • 定义:文件系统命令,存在于bash shell之外,通常位于/bin、/usr/bin、/sbin或/usr/sbin
    • 可以通过which 和type进行查找
      which ps / type ps可查找ps命令
    • 执行过程:由父进程发出ps命令,子进程执行ps命令。(也成为衍生forking)

    内建命令

    • 不需要子进程来进行执行 例如 cd , exit
    • 可通过type进行检验,返回 is a shell builtin
    • type命令参数:
    1. -a :可针对即是内建命令也是外部命令进行查看
    • 若干个内建命令

    1.history 查询历史命令
    命令历史记录被保存在隐藏文件.bash_history,当shell退出时才被写入到历史文件中。
    -a :会强制进行写入到.bash_history
    -n :强制重新读取.bash_history文件,更新终端会话的历史记录
    2.!! 唤出刚用过命令来使用

    !20:编号为20的命令从命令历史记录中被取出

    命令别名

    alias

    1. -p :查询当前可用的别名
      2.自定义别名创建
      例如:

    alias li='ls -li'
    注意:别名仅在它所被定义的shell进程中有效

    相关文章

      网友评论

          本文标题:Shell(3)shell理解

          本文链接:https://www.haomeiwen.com/subject/qkxhrctx.html