Linux命令学习之数据流重定向、管道输出、命令执行顺序(学习内容记录)

Linux系统中,有stdin,stdout,stderr三个特殊设备处理输入和输出。重定向允许我们改变数据流向,如`echohello,world!>>2.txt`将输出写入文件。管道使得命令间能共享输出,如`yumlist|grep7zip`。此外,使用`;`、`&&`和`||`可以控制命令的顺序和选择性执行。
摘要由CSDN通过智能技术生成
数据流重定向

Linux 默认提供了三个特殊设备,用于终端的显示和输出,分别为 stdin(标准输入,对应于你在终端的输入),stdout(标准输出,对应于终端的输出),stderr(标准错误输出,对应于终端的输出)
例如,这一句时将hello,world!字符串输出到终端屏幕,这是标准输出

echo 'hello world'
hello world

例如,这一句时将hello,world!字符串输出到2.TXT文件中,需要查看文件才能在终端显示

echo 'hello,world!' >> 2.txt
[root@kafka root2]# cat 2.txt
hello,world!

之前面没有用到的 < 和 << 操作也是没有问题的,它们的区别在于重定向的方向不一致而已,> 表示是从左到右,< 右到左

管道输出

管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),表现出来形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)
例如,下面命令意思就是列出所有可安装的软件包信息输出给grep查找 7zip作为输入

  yum list | grep 7zip
p7zip.x86_64                             16.02-20.el7                   @epel
p7zip-doc.noarch                         16.02-20.el7                   epel
p7zip-gui.x86_64                         16.02-20.el7                   epel
p7zip-plugins.x86_64                     16.02-20.el7                   epel

命令执行顺序
  • 顺序执行多条命令
    例如
    此句意思为先更新软件或命令可下载目录,然后安装p7zip命令,命令用 ; 分隔开,按顺序执行
yum update;yum install p7zip
  • 有选择的执行命令
    && 用来实现选择性执行的,表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回 0 则执行后面的,否则不执行
    || 在这里就是与 && 相反的控制效果,当上一条命令执行结果为 ≠0($?≠0) 时则执行它后面的命令:
[root@kafka root2]# which cowsay>/dev/null && echo "cowsay software is installed" || echo "no"
cowsay software is installed
# 正确命令

[root@kafka root2]# which cowsasy>/dev/null && echo "cowsay software is installed" || echo "no"
/usr/bin/which: no cowsasy in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
no
# 错误命令

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值