自动化运维[shell编程]——————多命令顺序执行[;、&&、|| ]、管道符[ | ]、通配符、其他特殊符号

    技术2025-09-24  46

    文章目录

    1.多命令顺序执行1.1 ; (dd)1.2 &&1.3 ||1.4 综合判断一条命令是否正确 2.管道符2.1 分页查看命令2.2 查看已连接的网络连接(grep) 3.通配符4.bash中的其他特殊符号

    1.多命令顺序执行

    linux中可以执行的多命令顺序符号有以下两个:

    多命令执行符格式作用;命令1:命令2多个命令顺序执行,命令之间没有任何逻辑联系&&命令1&&命令2逻辑与.当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行||命令1||命令2逻辑或,当命令1执行不正确,命令2才会执行;当命令1执行正确,命令2就不会执行

    1.1 ; (dd)

    dd命令是linux中进行磁盘复制或数据复制的命令,他与cp不同,cp命令只能复制文件,但是dd可以复制特殊文件,也能复制分区,甚至整个硬盘。它不光复制这个分区或硬盘中的数据,还复制了,分区或硬盘的文件系统。

    命令格式如下:

    dd if=输入文件 of=输出文件 bs=字节数 count=个数 选项: if=输入文件 指定源文件或源设备 of=输出文件 指定目标文件或目标设备 bs=字节数 指定一次输入/输出多少字节,即把这些字节看作一个数据块 count=个数 指定输入/输出多少数据块

    dd主要不是为了复制文件,主要是为了磁盘复制。

    date;dd if=/dev/zero of=/root/testfilezero bs=1K count=100000;date

    先看一下时间;输入0,向testfilezero不停的写入0,每次写入1k的0,总共写入100M的0;再看一下时间。

    相当于计算写入100M数据要使用多长时间。

    测试包含错误命令,;中的命令互不影响。

    1.2 &&

    逻辑与:

    当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行。

    之前在编译安装源码包的时候,执行过以下命令:

    ./configure && make && make install

    就是说,首先进行编译,编译成功,在进行测试测试成功,最后再安装,其中一个出错,后面的就不执行。

    这里的&&是不能换为||或;,命令之间是有先后关系的。

    其他命令测试:

    1.3 ||

    逻辑或:

    当命令1执行不正确,命令2才会执行;当命令1执行正确,命令2就不会执行。

    1.4 综合判断一条命令是否正确

    命令 && echo yes || echo no

    这条的含义是如果命令正确则执行echo yes,这条命令正确执行,后面的echo on就不会执行了。

    如果命令错误,则echo yes也不会执行,当前面都没执行echo on就会执行了。

    这样就可以检查命令是否正确。

    2.管道符

    管道符是|,是用来连接两个命令的:

    命令1 | 命令2

    他的作用是命令1的正确输出作为命令2的操作对象。

    2.1 分页查看命令

    测试: 我们知道more是用来分屏查看文件的,我们可以使用这个命令来分屏查看命令1的结果:

    注意:命令1一定要有正确输出,否则命令2不能执行。

    2.2 查看已连接的网络连接(grep)

    需要使用grep命令:

    grep [选项] "搜索内容" 文件名 选项: -i:忽略大小写 -n:输出行号 -v:反向查找 --color=auto:搜索出的关键字用颜色显示

    作用是在文件当中搜索赋和条件的字符串: 命令测试,搜索一个文件中的指定字符串: 查看所在行号:

    现在我们就可以加上管道符,让他查看命令结果中的关键字:

    3.通配符

    在linux中常见的统配符有以下内容:

    通配符作用?匹配任意一个字符*匹配0个或任意多个任意字符,可以匹配任何内容[ ]匹配中括号中任意一个字符。[abc]代表匹配一个字符,a、b或者是c[ - ]匹配中括号在景洪任意一个字符,-代表一个范围。[a-z]代表匹配,任意一个小写字母[ ^ ]逻辑非,表示匹配不是中括号内的一个字符,[ ^0-9 ] 代表匹配一个不是数字的字符

    通配符其实在批量操作的时候是方便的。

    ls *abc #任意0个或多个字符后面只能跟abc

    ls ?abc # 任意1个字符后面只能跟abc

    ls [0-9]abc # 任意一个数字后跟abc

    ls [^0-9]abc # 任意一个非数字后跟abc

    rm -fr * # 删除当前位置所在目录下的所有内容

    4.bash中的其他特殊符号

    这些符号就比较多了,挑几个常用的来介绍:

    符号作用’ ’单引号,在单引号中所有的特殊符号,如"$“和” ` "(反引号)都没有特殊含义" "双引号,在双引号中特殊符号都没有特殊含义,但是"$" 、" ` "和 " \ "是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义` `反引号。反引号阔起来的是系统命令,在bash中会先执行它。和$( )作用一样,不过推荐使用$( ),` ` 容易看错$( )用来引用系统命令##开头的行代表注释$用于调用变量的值,如需调用变量name的值时,需要用$name的方式得到变量的值\转义符,跟在\之后的特殊符号失去特殊含义,变为普通字符。 name=song # 定义变量name echo $name # 输出变量name的值

    echo '$name' # 输出$name字符串 echo "$name" # 输出变量name的值

    两者相比,’ '更有强制的含义。如下测验

    echo '$(date)' # 强制输出字符串$(date) echo "$(date)" # 输出执行系统命令date的结果

    name=`date` # 将命令date的执行结果附值给name name=$(date) # 将命令date的执行结果附值给name

    echo "$name" # 输出变量name的值 echo "\$name" # 将$转义为一个普通字符,输出$name字符串

    Processed: 0.009, SQL: 9