美文网首页
第五章 理解shell

第五章 理解shell

作者: 1e42ed00ff39 | 来源:发表于2017-08-07 20:21 被阅读16次

    本章内容: 1)探究shell类型2)理解shell的父/子关系3)别出心裁的子shell用法4)探究内建的shell命令


    5.1 shell的类型


    个人的用户配置:系统启动什么样的shell程序. /etc/passwd

    默认的交互shell在某个控制端应用程序或在GUI中运行终端仿真器时启动

    $ exit退出shell程序

    5.2 shell的父子关系


    注: 当输入bash.生成子shell的时候, 你是看不到任何相关的信息, 因此需要另一个命令帮助我们理清这一切 $ ps —forest

    $ ps -f 查看当前创建的shell的状态

    $ bash 创造一个子的shell程序

    $ ps -f的 PPID可以查看PID的父程序

    用$ man bash 查看关于bash的手册

    5.2.1 进程列表


    一行指定依次运行的一系列指令

    $ pwd ; ls ; cd /etc ; pwd ; cd ; pwd; ls (分号分割)

    进程列表: $ ( pwd ; ls ; cd /etc ; pwd ; cd ; pwd; ls )

    进程列表: 命令分组 commanding grouping, 另一个命令分组是将命令放入花括号中, 尾部放入;

    语法为 { command; }

    进程列表可以创建子shell, { command } 不可以创建shell

    每一个() 都创建一个子shell: (pwd; ls ; cd /etc ; pwd ; cd ; pwd ; ls ; echo $BASH_SUBSHELL)

    在shell脚本中, 经常使用子shell进行多进程处理。但采用子 shell的成本不菲,会明显拖慢处理速度。

    5.2.2 别处心裁的子shell用法


    交互的shell CLI: 进程列表, 协程和管道都采用了子shell

    探索后台模式

    后台模式: 运行命令可以在处理命令的同时让出CLI

    命令置于后台 &

    $ sleep 20&

    [1] 21447【第一条显示在方括号中的后台作业号;第二条是后台作业的进程ID】

    $jobs 显示后台作业情况

    只显示后台的作业

    [2]+Runningsleep 20 &

    $ jobs -l 查看更多命令

    2. 将进程列表置入后台【( pwd; ls ; (echo $BASH_SUBSHELL)) 进程列表】

    3.协程

    作用 : 后台生成一个子shell, 并在这个子shell中执行命令

    $ coproc sleep 10

    扩展语法

    $ coproc My_Job { sleep 10; }

    5.3 理解shell的内建命令


    5.3.1 外部命令


    外部命令: 文件系统命令, 是存在于bash shell之外的程序, 不是shell程序的一部分

    位置: /bin , /usr/bin, /sbin 或者/usr/sbin

    $ which ps 或者 $ type -a ps

    当外部命令执行的时候会创建一个子进程,(forking)

    5.3.2 内建命令


    内建命令和外部命令的区别在于前者不需要使用子进程来执行

    $ type cd

    //内建命令执行速度要更快,效率也要更高

    $ type -a echo

    //echo is a shell bulitin. //echo is /bin/echo

    $ echo 有内建命令和外部命令

    使用外部文命令就需要使用

    /bin/pwd

    1.使用history命令

    bash shell会跟踪你的命令,使用history搜索到全部的命令, 同时可以唤回所有的命令并重新使用

    $ history

    $ !!唤出刚刚使用的那条命令

    $ !(Number) 可以使用之前使用的命令

    2.命令别名

    $ alias -p

    相关文章

      网友评论

          本文标题:第五章 理解shell

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