Shell中的管道

Shell中的管道,第1张

管道,从一头进去,从另一头出来。

在Shell中,管道将一个程序的标准输出作为另一个程序的标准输入,就像用一根管子将一个程序的输出连接到另一个程序的输入一样。

管道的符号是 | ,下面的程序将 cat 的标准输出作为 less 的标准输入,以实现翻页的功能:

有时候我们想要同时将程序的输出显示在屏幕上(或旦备进入管道)和保存到文件中,这个时候可以使用 tee 。

tee 程序的输出和它的输入一样,但是会将输入内容额外的保存到文件中:

上面的例子中, tee 程手迟悉毕乎序将 cat 程序的输出显示在屏幕上,并且在 hello.txt.bk 文件中保留了副本。需要注意的是,如果 tee 命令中指定的文件已经存在,那么它将会被覆盖,使用 -a 选项在文件末尾追加内容(而不是覆盖):

command1 &&command2 只有在 command1 成功执行后才会执行 command2 ; command1 || command2 在 command1 没有成功执行时执行 command2 。

比如下面的命令,会首先执行 sudo updatedb ,如果执行失败,则会执行 echo "update database error." :

工作中用到一个shell脚本

内部是循环,在循环内需要更改循环外的颤桐值

简单结构如下

结果是 list_true和list_false肯灶铅定是空

因为管道符的原因,隐洞好会开启子shell,而子shell跟父shell变量不是通用的

解决方案一:

采用如下结构

解决方案二:

将变量存入文件,然后读取文件

自学Linux的过程中做了一点小总结,因此写出来和大家分享一下,希望能共同进步!

Bash shell的特点:

1、 命令的自动补齐:Tab键

2、 命令的顷哪历史记忆功能:上下键;!+数字可以自动找出在history中的相应命令并且执行;!+string可以自动找到最近一个以string开头的命令并且执行;!$指的是上一个命令的最后一个参数;!!指的是上一个命令,因为在脚本中不能进行翻页,所有常作为脚本命令执行,ctrl+R可以搜索历史命令。

3、 别名功能:alias可以查看别名;unalias cp取消别名;~username/.bashrc可以进行永久别名的设置;\cp –rf /etc/hosts表示忽略别名

4、 快捷键:^R搜索历史命令;^D登出系统;^A将光标移到命令开始;^E将光标移到命令结尾^K将光标移到中间删除后半部命令;^U将光标移到中间删除前部分命令;^Y撤销上个 *** 作

5、 前后台作业控制 :命令之后加一个&表示将工作提交到后台执行;命令前加一个nohup可以让该命令在终端关闭之后还可以执行;^C杀死前台正在运行的任务;^Z,将前台工作扔到后台去执行;bg展示后台正在运行的工作,也可以用jobs;fg表示将后台运行的工作调到前台运行;kill %+数字表示杀死后台某一个作业

6、 输入输出重定向:0表示标准输入;1表示标准输出;2表示标准错误,也就是错误输出;>表示写入某一个文件,>>表示追加写入某一个文件2>&1:&表示等同于的意思,2>&1,表示2的输出重定向等同于1,即和1重定向的文件系统上的位置是一样的cat <<EOF >file:EOF是一个从标准输入传递命令给cat的标志,执行结束的命令输出到file文件中保存

7、 Tee管道,相当于一个三通,可以在特定地方截取管道命令的输出信息。

管道文件不同于常用文件,管道文件就跟水一样是一个动态的文件,每个时间点打开管道文件查看都能看到不一样的东西,而常用文件只要不进行更改都是一样雀猛码的内容,另外管道文件都遵循一个原则:先进先出后进后出,顾名思义就是先被管道接受的东西首先被记录。

另:

关于命名知含管道与匿名管道的区别:创建命名管道:mkfifo +管道名字

8、 命令排序:

不具备逻辑判断能力:分号

具备逻辑判断能力:&&和 ||

注意:

Command &  后台执行

Command &>/dev/null  混合重定向

Command1 &&Command2  命令排序,具备逻辑判断能力

9、 shell通配符(元字符,即表示的不是本意)

*匹配任意多个字符

?匹配任意一个字符

[]表示匹配括号内的任意一个字符:[abc]表示匹配abc中的任意一个,而[^abc]表示除了abc之外的任意一个字符。

(command)在子shell中执行命令

{}将几个元素括起来表示一个集合,可以用来批量创建和删除文件

\ 转义字符,让元字符回归本意


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12143340.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存