一、命令组合运用
1、顺序分割
分号:命令1;命令2;命令3;
各个命令依次执行,只有先后,没有逻辑
eg:
systemctl stop firewalld ; systemctl start firewalld
[root@localhost ~]# systemctl iptables stop ; systemctl iptables start
[root@localhost ~]#
2、逻辑“与” 分隔
使用&&
命令1 && 命令2 &&命令3
逻辑关系为与,期望所有的命令都能执行成功
一旦执行失败,后续命令将不再执行
systemctl start firewall && systemctl stop firewalld
[root@localhost ~]# systemctl start firewall && systemctl stop firewalld
Failed to start firewall.service: Unit firewall.service not found.
[root@localhost ~]#
3、逻辑“或”分割
使用 ||
命令1 || 命令2 || 命令3
逻辑关系或,任何一条命令执行成功都复核期望
只有前一条命令执行失败时,才会执行后一条命令
eg:使用ip命令检查用户是否存在,如果存在该用户,就回显用户标记,不存在则创建该用户
id first || useradd first
[root@localhost ~]# id first || useradd first
uid=1000(first) gid=1000(first) groups=1000(first)
[root@localhost ~]#
4、|| 、&& 的组合应用
查询指定路径下是否有指定文件,有,则输出YES,无则输出NO
cat /root/qwe 2> /dev/null && echo YES || echo NO
[root@localhost ~]# cat /root/qwe 2> /dev/null && echo YES || echo NO
NO
[root@localhost ~]#
5、管道操作
管道的作用:将命令的屏幕输出交给另一端的命令处理
命令1 | 命令2 | 命令3
后续命令要能正确处理传来的文本,否则无意义
ip addr | less 分页查看 ip addr 输出的结果
计算 /etc目录西包含多少个普通文件
命令1 :使用find 命令在 /etc目录下递归查找。列出所有普通文件
命令2:将查询结果通过管道符交给wc命令统计行数
find /etc -type f | wc -l
[root@localhost ~]# find /etc -type f | wc -l
401
[root@localhost ~]#
统计正在处于监听状态的tcp端口数
1、使用netstat 命令列出如有TCP的链接信息
2、将查找的数据通过管道符交给grep命令过滤,计算出状态为LISTEN的连接数
[root@localhost ~]# netstat -anp | grep -c "LISTEN"
10
二、标准的输入和输出
对于linux,unix来说,一切皆是文件
linux的I/O交互
标准输入:从该设备中接受用户输入的数据
标准输出:通过该设备向用户回显输出正常的结果
标准错误::通过该设备报告执行中的错误信息
类型 | 设备文件 | 文件描述告 | 默认设备 |
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误 | /dev/stderr | 2 | 显示器 |
三、重定向
类型 | 操作符号 | 功能 |
---|---|---|
重定向输入 | < | 将文本输入来源有键盘指定为文件 |
重定向输出 | > | 将命令行的正确执行结果输出保存到文件,会覆盖源文件内容 |
>> | 将命令的输出结果追加到指定文件的末尾,不会覆盖源文件内容 | |
重定向错误 | 2> | 将命令执行的错误信息保存到指定文件,会覆盖源文件 |
2>> | 将命令执行的错误信息追加保存到指定文件,不会覆盖源文件 | |
混合重定向 | &> | 相当于 >和2>会覆盖源文件 |