首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Shell 功能、配置和插件(2)

Shell 功能、配置和插件(2)

  • 命令别名命令别名是一个比较有用的东西,特别适应用于简化命令输入。比如,你要更新cocoapods时,在shell输入以下命令行
    pod update --verbose --no-repo-update但每次都输入这么长的命令行,多么麻烦啊。所以,这时使用命令别名来简化命令行的输入:
    alias pod_update='pod update --verbose --no-repo-update'下次你只需要输入pod_update就可以更新cocoapod
    你可以使用alias命令来显示所有命令别名

    list all alias .png

  • 任务控制(job control)使用shell登陆系统后,想要一边复制文件、一边查找文件、一边进行编译代码、一边下载软件,当然可以通过开启多个shell来完成,但如果想只在一个shell来完成以上多个任务时,此时可以使用shell的一个特性任务控制
    在学会如何使用命令来控制任务之前,先了解两个概念:前台(foreground)后台(background)前台就是出现提示符让用户操作的环境,而后台就是不能与用户交互的环境,你无法使用 ctrl-c 终止它,可使用 bg/fg 呼叫该任务。
    下面介绍一些命令如何控制任务:
    1. 将任务放在后台运行:命令行 + &
    job control 1.png

    注意一下上面打印信息,[1]表示job number(任务编号),7089表示PID(进程号)。在后台执行的命令,如果有stdout和stderr,数据依旧输出到屏幕上,可以通过数据重定向传输到文件中,就不会影响前台的工作。

    job control 2.png

    2. 将任务丢到后台暂停:ctrl-z在shell中执行find / -print命令,然后按下ctrl-z将任务丢到后台暂停:

    job control 3.png


    由上面打印可知,任务find / -print暂停执行,并将任务放在后台,返回一个job number[2]
    3. 查看后台所有任务状态:jobs -l输入jobs -l 查看后台所有的任务状态:

    job control 4.png


    仔细查看打印信息,有没有留意到在PID 7417和7431之前有-和+两个符号,-表示最近第二个被放到后台的任务号码,+表示最近被放到后台的任务号码。
    4. 将后台的任务拿到前台处理:fg %jobnumber输入fg会默认取出+的任务,然后迅速按下ctrl-z

    job control 5.png


    看上面打印的PID是7431,确实如此。再次输入jobs -l来查看后台所有任务的信息

    job control 6.png


    这次输入fg %1来讲后台的任务拿到前台处理。
    5. 将后台的任务变成运行中:bg %jobnumber输入jobs -l查看任务状态:

    job control 7.png


    然后输入bg %2; jobs -l将后台任务变成运行,并查看任务状态,然后不断地输入打印信息,这时需要关闭终端才能kill这个shell进程的子进程。
    6. 管理后台当中的任务:kill -signal %jobnumber有时,任务在后台运行或暂停,这时我想结束这个任务,怎样办呢?你可以使用kill命令将任务结束。
    输入find / -print命令,并按下ctrl-z暂停任务:

    job control 8.png


    输入kill -9 %1;jobs -l结束任务并显示任务状态:

    job control 9.png

  • shell scriptshell script是利用shell的功能所编写的一个程序,这个程序使用纯文本文件来保存一些shell的命令,并遵循shell的语法规则,搭配数据重定向、管道、和正则表达式等功能来组合各种工具,实现简单重复任务的自动化。
  • 通配符除了完整的字符串之外,shell还支持许多的通配符来帮助用户查询和命令执行。我简答地列出常用的几个通配符:
符号含义*表示0到无穷多个任意字符?表示有一个任意字符[]表示有一个在中括号内的字符。例如[abc]表示有个字符,可能是abc其中一个[-]表示在编码顺序内的所有字符。例如[1-7]表示有个字符,范围1到7其中一个[^]表示反向选择。例如表示有一个字符,只要不是a,b,c的其他字符都可以
继承事业,薪火相传
返回列表