转载:

http://www.linuxeden.com/html/softuse/20140112/147406.html

http://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/

Linux命令中的链接的意思是,通过操作符的行为将几个命令组合执行。Linux中的链接命令,有些像你在shell中写短小的shell脚本,并直接在终端中执行。链接使得自动处理变得更方便。不仅如此,一个无人看管的机器在链接操作符的帮助下能够十分有条理地运行。

Linux中的10个链接操作符

本文旨在介绍一些常用的链接操作符,通过简短的描述和相关的例子帮助读者提高生产力、降低系统负载、写出更加简短有意义的代码。

1. 和号操作符 (&)

&’的作用是使命令在后台运行。只要在命令后面跟上一个空格和 ‘&’。你可以一口气在后台运行多个命令。

在后台运行一个命令:

tecmint@localhost:~$ ping ­c5 www.tecmint.com &

同时在后台运行两个命令:

root@localhost:/home/tecmint# apt-get update & mkdit test &

2. 分号操作符 (;)

分号操作符使你可以一口气运行几个命令,命令顺序执行。

root@localhost:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test

上述命令先后执行了update和upgrade,最后在当前工作目录下创建了一个‘test’文件夹

3. 与操作符 (&&)

如果第一个命令执行成功,与操作符 (&&)才会执行第二个命令,也就是说,第一个命令退出状态是0。(译注:原文的这里明显写错了,我们进行了改译,有兴趣的读者可以参看原文以及原文下面的评论。在UNIX里面,0表示无错误,而所有非0返回值都是各种错误)。这个命令在检查最后一个命令的执行状态时很有用。

比如,我想使用links 命令在终端中访问网站tecmint.com,但在这之前我需要检查主机是否在线不在线

root@localhost:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com

4. 或操作符 (||)

或操作符 (||)很像编程中的else语句。上面的操作符允许你在第一个命令失败的情况下执行第二个命令,比如,第一个命令的退出状态是1

举例来说,我想要在非root帐户中执行‘apt-get update‘,如果第一个命令失败了,接着会执行第二个命令‘links www.tecmint.com‘。

tecmint@localhost:~$ apt-get update || links tecmint.com

上面的命令中,由于该用户不允许更新系统,这意味着第一个命令的退出状态是’1′,因此最后一个命令‘links tecmint.com‘会执行。

如果第一个命令成功执行并且退出状态是‘0‘呢?很明显的,第二个命令不会执行。

tecmint@localhost:~$ mkdir test || links tecmint.com

这里,用户在家目录创建了一个‘test‘文件夹,这是被允许的。命令成功的执行,退出状态是‘0‘,因此,最后的命令不会执行。

5. 非操作符 (!)

非操作符 (!)很像except语句。这个命令会执行除了提供的条件外的所有的语句。要理解这点,在你的主目录创建一个目录‘tecmint’,并‘cd’到它这里。

tecmint@localhost:~$ mkdir tecmint
tecmint@localhost:~$ cd tecmint

接下来,在文件夹‘tecmint’下创建不同类型的文件。

tecmint@localhost:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

看一下我们在文件夹‘tecmint’创建的新文件。

tecmint@localhost:~/tecmint$ ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

用一种聪明的办法马上删除除了 ‘html’之外的所有文件。

tecmint@localhost:~/tecmint$ rm -r !(*.html)

验证一下上次的执行结果,使用ls 命令列出可见所有文件。

tecmint@localhost:~/tecmint$ ls 

a.html  b.html

6. 与或操作符 (&& – ||)

上面的操作符实际上是‘’和‘’操作符的组合。它很像‘if-else‘语句。

比如,我们ping tecmint.com,如果成功打印‘已验证’,否则打印‘主机故障’。

tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"

示例输出

PING www.tecmint.com (212.71.234.61) 56(84) bytes of data.
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms --- www.tecmint.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms
Verified

现在,断开我们现在的网络连接诶,再试一下相同的命令。

tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"

实例输出

ping: unknown host www.tecmint.com
Host Down

7. 管道操作符 (|)

PIPE在将第一个命令的输出作为第二个命令的输入时很有用。比如,‘ls -l’的输出通过管道到‘less’,并看一下输出。

tecmint@localhost:~$ ls -l | less

8. 命令合并操作符 {}

合并两个或多个命令,第二个命令依赖于第一个命令的执行。

比如,检查一下文件‘xyz.txt’是否在Downloads目录下,如果不存在则创建之并输出提示信息。

tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz.txt ] || touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"

但是这样的命令的运行结果并不如我们预期的运行,会始终都输出提示信息。因此需要使用{}操作符来合并命令:

tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz1.txt ] || {touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"}

“The file does not exist”

(译注:原文这里应该也是复制或书写的时候,出现了一些问题,例子中并没有出现小标题中的"{}"操作符,所以这里我们进行了修改)

9. 优先操作符 ()

这个操作符可以让命令以优先顺序执行。

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

在上面的伪代码中,如果Command_x1执行失败了会怎么样,Command_x2,Command_x3Command_x4没有一个会执行,对于这种情况,我们使用优先操作符

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

在上面的伪代码中,如果Command_x1执行失败,Command_x2不会执行,但是Command_x3会继续执行, Command_x4会依赖于 Command_x3的退出状态。

10. 连接符 ()

连接符 ()如它名字所说,被用于连接shell中那些太长而需要分成多行的命令。可以在输入一个“\”之后就回车,然后继续输入命令行,直到输入完成。比如,下面的命令会打开文本文件test(1).txt

tecmint@localhost:~/Downloads$ nano test\
1.txt

今天就到这里,我会近日开始另外一个有趣的文章。不要走开,继续关注我们。不要忘记在评论栏里提出有价值的反馈。

Linux中命令链接操作符的十个最佳实例的更多相关文章

  1. Linux中命令选项及参数简介

    登录Linux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着“选项”(英文options)或“参数”(英文arguments).即Linux中命令格式为: command [opti ...

  2. Linux 中的命令链接操作符

    && 与 || 配合 eg: cat test.sh #!/bin/bash [ -e /etc/hosts ] && echo "ok" || e ...

  3. linux中的链接命令

    ln 解释 命令名称:ln 命令英文原意:link 命令所在路径:/bin/ln 执行权限:所有用户 功能描述:生成链接文件 语法 ln -s [源文件] [目标文件] -s 创建软链接 示例 # 创 ...

  4. Linux中的链接文件_软链接和硬链接

    一.链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link).两种链接的本质区别在于inode.以下是详细介绍: 硬链接:当系统要读取一个 ...

  5. Linux中命令行编译java接口总是提示找不到符号的疑难杂症的解决

    今天学习java的接口,在linux的命令行下写代码练练手吧,啪啪啪一顿猛敲,写了一个接口UsbInserface,UDisk继承UsbInterface,写完了那就编译到bin目录呗. 当时写程序的 ...

  6. linux中硬链接与软链接

    硬链接记录的是目标的inode,软链接记录的是目标的路径. 软链接就像快捷方式,而软链接就像备份.软链接能够做跨分区的链接,而硬链接因为inode的缘故,仅仅能在本分区中做链接,所以软链接使用很多其它 ...

  7. linux笔记:linux常用命令-链接命令

    文件处理命令:ln(创建链接文件) ln -s  源文件 链接文件 需要源文件已经建立,执行链接文件就是执行源文件. 软链接文件的特点: 1.类似于windows中快捷方式的作用: 2.它的文件类型是 ...

  8. Linux中命令行终端切换工具screen

    screen命令 本文转自:http://man.linuxde.net/screen Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令 ...

  9. Linux常用命令——链接命令

    链接命令:ln ln -s [原文件] [目标文件] 命令英文原意:link 功能描述:生成链接文件 选项:-s 创建软链接,也叫符号链接 硬链接特征: 1.拥有相同的i节点和存储block块,可以看 ...

随机推荐

  1. Azure中的分布式1——多实例

    Azure中的WebRole和WorkerRole天然支持负载均衡,只需要简单配置一下即可,下面我以一个WebRole为例说明这一点. 创建一个项目类型为MVC4的WebRole 项目结构如下: 右键 ...

  2. linux 从命令行自动识别文件并将其打开的命令

    若是shell是 zsh,则可: 使用 alias -s 定义后缀别名 (zsh) % alias -s pl=perl % script.pl perl script.pl % alias -s p ...

  3. 关于python requests包新版本设置代理的问题

    在更新了requests包之后,发现我电脑上的charles工具无法再成功抓取到数据包.百度了半年都没有找到原因. 然后 我使用了 google 查到了 charles的最新的文档发现.需要设置代理, ...

  4. c#读properties文件

    @(编程) properties文件 MONGO_URL = mongodb://172.16.20.3/srtc_dc CURRENT_VERSION = 2.0 IS_AUTO_UPDATE = ...

  5. svn switch relocate用法

    svn info svn info 得到 Path: . Working Copy Root Path: /Users/chunhuizhao/phpworkspace/buptef_wxpay/tr ...

  6. 用python实现远程复制 (scp + expect )

    scp 功能很强大,但需要人工输入 password, 当然可以通过把 公钥保存在远程主机的 ~/.ssh 目录中,而后就不用输入password,但这需要配置. 用 sshpass 可能在命令输入 ...

  7. 使用paramiko来实现sftp

    sftp是一个基于ssh的文件传输协议,是在Windows上往linux传送文件最常用的方式(例如SecureFX,Xftp). 在python下,paramiko实现了sftp,可以让大家方便地在代 ...

  8. 接口是干爹, 继承是亲爹 ---JAVA

    接口(interface)是干爹, 因为你可以有很多很多的干爹爹... 继承(extends)是亲爹, 因为你只能有一个父类, 只有一个亲生的父亲. 单继承,多接口?./>./..

  9. PetaPoco T4模板修改生成实体

    PetaPoco T4 模板生成的实体类全部包含再一个.CS文件中.通过修改PetaPoco的T4模板,生成单文件实体. 1.生成单CS文件模板: SigleFile.ttinclude <#@ ...

  10. js打开新页面 关闭当前页 关闭父页面

    js打开新页面.关闭当前页.关闭父页面 2010-04-29 14:04:13|  分类: 页面与JavaScript |  标签: |字号大中小 订阅     //关闭当前页面,并且打开新页面,(不 ...