当前位置:   article > 正文

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

linux命令执行顺序和重定向
数据流重定向

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

echo 'hello world'
hello world
  • 1
  • 2

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

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

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

管道输出

管道是一种通信机制,通常用于进程间的通信(也可通过 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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
命令执行顺序
  • 顺序执行多条命令
    例如
    此句意思为先更新软件或命令可下载目录,然后安装p7zip命令,命令用 ; 分隔开,按顺序执行
yum update;yum install p7zip
  • 1
  • 有选择的执行命令
    && 用来实现选择性执行的,表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回 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
# 错误命令
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

请添加图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/213114
推荐阅读
相关标签
  

闽ICP备14008679号