LinuxShell——特殊符号

摘要:本文主要学习了Shell命令中具有特殊功能的一些符号。

多命令执行

顺序执行“;”

如果使用“;”连接多条命令,那么这些命令会依次执行,但是各命令之间没有任何逻辑关系,也就是说,不论哪条命令报错了,后面的命令仍会依次执行。

举个例子:

 [root@localhost ~]# ls; cd /demo; pwd
anaconda-ks.cfg
-bash: cd: /demo: 没有那个文件或目录
/root
[root@localhost ~]#

可以看到即便有命令执行错误,后面的命令仍然执行了。

逻辑与“&&”

如果使用“&&”连接多条命令,那么这些命令之间就有逻辑关系了。只有第一条命令正确执行了,第二条命令才会执行。如果$?返回值是0,则证明上一条命令正确执行,如果$?返回值不是0,则证明上一条命令执行错误。

举个例子:

 [root@localhost ~]# cd /demo && pwd
-bash: cd: /demo: 没有那个文件或目录
[root@localhost ~]#

因为第一个命令执行失败了,所以后面的命令不予执行。

逻辑或“||”

如果使用“||”连接多条命令,则只有前一条命令执行错误,后一条命令才能执行。

举个例子:

 [root@localhost ~]# cd /demo || pwd
-bash: cd: /demo: 没有那个文件或目录
/root
[root@localhost ~]# cd /home || pwd
[root@localhost home]#

可以看到只有在第一个命令执行错误的情况下,第二个命令才会执行。

管道

应用场景

在执行shell命令的时候,会有数据输出到屏幕上,在某些情况下还需要对输出到屏幕上的数据进行处理,这时就需要用到管道了。

定义

管道命令是一种能接收标准输出数据,并进行处理的命令。

管道命令使用“|”作为界定符,在界定符后面的命令就是管道命令,界定符前面的命令可以为非管道命令,但这个非管道命令必须要有标准输出。

管道命令只能处理标准输出,对于标准错误输出会进行忽略,但可以在非管道命令里通过数据流重定向进行处理。

管道命令和多命令

管道命令要求前面一个命令必须要有标准输出,而且要求后面一个命令必须能接收标准输出。多命令对是否有标准输出没有要求。

举例

如果想查看目录下占用容量最大的5个目录,就可以使用管道符实现:

 [root@localhost /]# ls -lh -S | head -
总用量 28K
drwxr-xr-x. root root .0K 7月 : etc
dr-xr-xr-x. root root .0K 7月 : boot
dr-xr-x---. root root .0K 7月 : root
drwxr-xr-x. root root .0K 7月 : usr
[root@localhost /]#

通配符

在BASH中,如果需要模糊匹配文件名或目录名,就要用到通配符。

常用的通配符如下:

 ?:匹配一个任意字符。
*:匹配0个或任意多个任意字符,也就是可以匹配任何内容。
[]:匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c。
[-]:匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母。
[^]:逻辑非,表示匹配不是中括号内的一个字符。例如,[^-]代表匹配一个不是数字的字符。

括号

如果用于一串命令的执行,那么小括号和大括号主要区别在于:

 ()执行一串命令时,需要重新开启一个子Shell来执行。{}执行一串命令时,在当前Shell中执行。
()最后一条命令可以不用分号,{}最后一条命令要用分号。
()里的各命令不必和括号有空格,{}的第一条命令和左括号之间必须有一个空格。
()和{}都是把一串命令放田括号里面,并且命令之间用“;”隔开。
()和{}中括号里面的某条命令的重定向只影响该命令,但括号外的重定向则会影响到括号里的所有命令。

数据流重定向

平常我们在输入的命令或者在屏幕上显示的信息就是数据流。数据流重定向就是使输入的命令信息来自于文件而不是终端的输入,或者将输出的数据传输到文件中而不在屏幕上显示。

分类

输入流重定向:将原本需要从键盘的输入中获取数据,改由从文件的内容中获取。

输出流重定向:将原本需要输出到终端的数据,输出到文件中,文件不存在则创建。

输出流重定向

输出流有两种,分别是标准输入和标准错误输出:

 标准输出(stdout):输出的信息是正确信息。代码为1。使用>将导致文件内容被覆盖,使用>>将在文件尾部追加。
标准错误输出(stderr):输出的信息是错误信息。代码为2。使用>将导致文件内容被覆盖,使用>>将在文件尾部追加。

举个例子,将文件列表写入trueFile,错误的结果将会显示在屏幕上:

 [root@localhost ~]# ls a b > trueFile

举个例子,将正确的结果写入trueFile,将错误的结果写入falseFile:

 [root@localhost ~]# ls a b > trueFile > falseFile

举个例子,将正确的结果写入trueFile,将错误的结果丢弃:

 [root@localhost ~]# ls a b > trueFile > /dev/null

输入流重定向

 标准输入(stdin):从键盘中输入的信息。代码为0。使用<后面接想要输入的文件,使用<<后面接终止输入的结束符。

举个例子,将test文件中的内容输入到file文件中:

 [root@localhost ~]# cat > file < test

举个例子,将键盘输入的内容保存在file文件中,并且当输入end的时候终止输入,end不会被保存:

 [root@localhost ~]# cat > file << end

LinuxShell——特殊符号的更多相关文章

  1. Batch pk Shell - WindowsBatch与LinuxShell比较 [变量符号和关键字]

    原文地址:WindowsBatch与LinuxShell比较[变量符号和关键字] 一 简单实例1)batch file @echo off rem output helloworld ::  outp ...

  2. 情景linux--shell如何实现多线程?

    情景linux--shell如何实现多线程? 情景 shell脚本的执行效率虽高,但当任务量巨大时仍然需要较长的时间,尤其是需要执行一大批的命令时.因为默认情况下,shell脚本中的命令是串行执行的. ...

  3. Linux-Shell脚本编程-学习-1-Linux基本命令

    在学习Linux-Shell脚本编程之前,我们需要学习一定的Linux基本命令,不然在后面学习Shell脚本编程的的时候,我们就呵呵了. 我学习所用的系统是Ubuntu 16.04版本 也没有什么规则 ...

  4. 程序员必知的LinuxShell命令

    程序员必知的LinuxShell命令 grep (Globle Regular Expression Print全局正则表达式) 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的 ...

  5. LinuxShell脚本——选择结构

    LinuxShell脚本——选择结构 摘要:本文主要学习了Shell脚本中的选择结构. if-else语句 基本语法 最简单的用法就是只使用if语句,它的语法格式为: if 条件 then 命令 fi ...

  6. LinuxShell脚本——变量和数据类型

    LinuxShell脚本——变量和数据类型 摘要:本文主要学习了Shell脚本中的变量和数据类型. 变量 定义变量的语法 定义变量时,变量名和变量值之间使用“=”分隔,并且等号两边不能有空格: 变量名 ...

  7. LinuxShell——正则表达式

    LinuxShell——正则表达式 摘要:本文主要学习了Shell中的正则表达式. 简介 含义 正则表达式,也称作正规表示法,是用于描述字符排列和匹配模式的一种语法规则,它主要用于字符串的模式分割.匹 ...

  8. LinuxShell——变量

    LinuxShell——变量 摘要:本文主要学习了Shell命令中的变量. 什么是变量 简单的说,变量就是让某一个特定字串代表不固定的内容. 变量是计算机内存的单元,其中存放的值可以改变.当Shell ...

  9. LinuxShell——内嵌命令

    LinuxShell——内嵌命令 摘要:本文主要学习了Shell的常用内嵌命令. alias命令 alias命令可以为指定命令定义一个别名. 基本语法 查看所有别名: alias 设置别名: alia ...

随机推荐

  1. bug调试宝典

    bug调试技巧 宝典之一 : 坚信一个原则,程序不会说谎,一定是有原因的 多数的错误表现看起来莫明奇妙,甚至不可思议 但当我们找到问题后会发现:其实问题的根源是如此简单.如此的合乎道理. 这就要求我们 ...

  2. RV32FDQ/RV64RDQ指令集(2)

    下面我们逐个看下每个指令的细节: fadd.s fadd.s rd, rs1, rs2     //f [rd] = f [rs1] + f [rs2]单精度浮点加(Floating-point Ad ...

  3. 在PyCharm中打开文件的位置

    选中文件,右键选择  Show in Explorer (在资源管理器中显示) 只需要路径时,选择第四个Copy Path ,会复制文件的路径

  4. yum update 执行报错: error : unpacking of archive failed on file /usr/.../...;5d26ff7c: cpio : symlink

    早前已发现有台机一直在报这么个错误, 一用yum update 就报一堆: Error: unpacking rpm package ..... error: xxxx : install faile ...

  5. 02-Django项目创建

    第一.Django项目创建 django-admin startproject 项目名 # 注意如果使用虚拟环境,创建应用必须先进入虚拟环境 进入项目目录,tree看项目结构(此时提示tree com ...

  6. 01-路由跳转 安装less this.$router.replace(path) 解决vue/cli3.0语法报错问题

    2==解决vue2.0里面控制台包的一些语法错误. https://www.jianshu.com/p/5e0a1541418b 在build==>webpack.base.conf.j下注释掉 ...

  7. c# 第36节 接口的声明

    本节内容: 1:字面理解接口 2:计算机的接口是什么呢 3:接口的声明 4:接口的注意点 1:字面理解接口 大家现在手机上,可能有很多app软件,比如天气预报的软件,有很多种,什么墨迹天气啊之类的等等 ...

  8. 第十五周博客作业 <西北师范大学| 周安伟>

    第十五周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10946673 ...

  9. grub2详解

    本文主要介绍的是grub2,在文末对传统grub进行了简述,但在grub2的内容部分中包含了很多grub2和传统grub的对比. 如果仅仅是想知道grub2中的boot.img/core.img/di ...

  10. 2019年最新50道java基础部分面试题

    [软帝学院]1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法. 1.一个".j ...