<Linux>Shell编程

标准输入输出举例:

在这里插入图片描述
在这里,cat命令等待标准输入,然后用户输入hello,然后在屏幕上输出hello

标准错误输出:
在这里插入图片描述

重定向

  • 所谓重定向,就是不使用系统的标准输入端口、标准输出端口或标准错误端口,而进行重新的指定,所以重定向分为输出重定向、输入重定向和错误重定向。通常情况下重定向到一个文件中

  • 在Shell中,要实现重定向主要依靠重定向符实现,即Shell是检查命令行中有无重定向符来决定是否需要实施重定向

重定向符

1、输入重定向

重定向符说明
<输入重定向

2、输出重定向

重定向符说明
>覆盖式的输出重定向
>>追加式的输出重定向

举例:
在这里插入图片描述
可以看出,一开始文件内容为"Hello World",使用覆盖式输出重定向后内容被覆盖了,因此变为“I am 18”,使用追加式输出重定向后,“I am a student”是追加到原来的内容后面。

空设备(/dev/null):

  • 空设备是个黑洞,发往它的任何内容都将不复存在
  • 经常用于屏蔽命令的输出或错误输出,尤其用于shell脚本

例如:

  • 屏蔽命令的输出和错误输出
    $ myprogram &> /dev/null
    $ myprogram >/dev/null 2>&1
  • 清空文件内容

3、错误输出重定向

重定向符说明
2>覆盖式的错误输出重定向
2>>追加式的错误输出重定向

管道

管道的引入

  • UNIX 系统的一个基本哲学是:一连串的小命令能够解决大问题。其中每个小命令都能够很好地完成一项单一的工作。现在需要有一些东西能够将这些简单的命令连接起来,这样管道就应运而生
  • 许多Linux命令具有过滤特性,即一条命令通过标准输入端口接受一个文件中的数据,命令执行后产生的结果数据又通过标准输出端口送给后一条命令,作为该命令的输入数据。后一条命令也是通过标准输入端口而接受输入数据。

  • 管道(使用符号“|”表示)用来连接命令
    • 命令1 | 命令2
    • 将命令1的STDOUT发送给命令2的STDIN
    • STDERR不能通过管道转发
  • 用来组合多种工具的功能
    • 命令1 | 命令2 | 命令3 |……
      • cat mytext | tr ‘a-z’ 'A-Z‘ | wc
    • 管道线中的每一条命令都作为一个单独的进程运行,每一条命令的输出作为下一条命令的输入
    • 由于管道线中的命令总是从左到右顺序执行的,因此管道线是单向的

举例:
myFile文件内容如下:
在这里插入图片描述

(1)cat myFile | head 3

在这里插入图片描述
在这里,先是查看myFile的文件内容,然后将其显示的内容作为head -3的输入,因此最终输出的结果为myFile的前三行

(2)cat myFile | grep “^this.*line”

在这里插入图片描述

该命令先是查看myFile的内容,然后查找this开头,line结尾的行。

T型管道

  • 格式
    命令1|tee 文件名|命令2

  • 功能
    将命令1的STDOUT保存在文件名中,然后管道输入给命令2

  • 用于
    1、保存不同阶段的输出
    2、复杂管道的故障排除
    3、同时查看和记录输出

命令替换

  • 使用命令的输出,常用于:
    1、在文本中嵌入命令的执行结果
    2、命令参数是另一个命令执行的结果

  • 使用方法:
    1、$(command) 或 `command`(注意这里不是单引号)
    2、cmd1 $(cmd2) 或 cmd1 `cmd2`

  • 例子:

    1、打印当前时间
    在这里插入图片描述
    2、显示当前目录下所有文件
    在这里插入图片描述
    命令组合:
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值