当前位置:首页 > 数码 > BASH中同时重定向多个命令的输入-深化讲解

BASH中同时重定向多个命令的输入-深化讲解

admin2个月前 (04-15)数码11

在Bash脚本中,有时咱们须要将多个命令的输入同时重定向到文件或日志中。上方引见几种经常出现的方法。

单个命令的输入重定向

关于单个命令的输入重定向,最便捷的模式是经常使用大于符号(>)将输入重定向到文件。例如,要将date​命令的输入保留到文件file​中,可以经常使用以下命令:

雷同,假设只想重定向规范失误输入,可以经常使用大于符号(>​)和数字2将其重定向到文件。例如:

date2>file

同时重定向规范输入和规范失误输入

假设宿愿同时重定向规范输入和规范失误输入,可以经常使用大于符号(>​)和2>&1​将它们兼偏重定向到同一个文件。例如:

command>file2>&1

另外,假设经常使用Bash,还可以经常使用更繁复的模式将规范输入和规范失误输入同时重定向到文件,即使用&>​操作符。例如:

#仅适用于Bash。同等于date>file2>&1,但无法移植。date&>file

循环的输入重定向

有时刻咱们须要将整个循环的输入重定向到文件中。这在处置批量义务时十分有用。上方是一个示例,展现了如何将循环的输入重定向到文件:

foriin"${list[@]}";doecho"正在处置$i"#其余的命令操作...done>file2>&1

在这个例子中,循环中的一切命令的输入都会被重定向到file​文件中。

经常使用exec​命令重定向脚本的输入

假设宿愿整个脚本的输入都被重定向到一个文件(比如日志文件),可以经常使用exec​命令来成功。上方是一个示例:

#将规范输入和规范失误输入都重定向到"log.txt"exec>log.txt2>&1#如今一切输入,包含规范失误输入,都将进入"log.txt"

经过这种模式,脚本中一切的输入都会被重定向到指定的文件中。

除了上述方法,还可以经常使用命令组合来将多个命令的输入重定向到文件。例如:

{command1command2command3}>messages.log2>&1

在这个例子中,大括号内的多个命令的输入都会被重定向到messages.log2​文件中。

以上是在Bash脚本中同时重定向多个命令输入的几种经常出现方法。依据详细的需求,选用适合的方法可以更好地治理和记载脚本的输入信息。假设您感觉文章内容对你有一点协助可以关注我,我在头条平台会继续分享更多适用的shell技巧和最佳通常,假构想系统的极速学习shell的各种高阶用法和消费环境避坑指南可以看看 《shell脚本编程最佳通常》专栏 ,专栏里有更多的适用小技巧和脚本代码分享。

深化讲解

如何像测试人员介绍linux中的重定向命令“>”?

你好在linux中,一切都是文件,对于控制台程序,这意味着:- 键盘表示为一个文件,bash从中读取你的输入。 - 显示器表示为一个文件,bash把输出写入它。 重定向是一种机制,即可将来自键盘的输入或显示器的输出,重定向到另一个文件。 < :用文件替换标准输入(即用文件代替键盘)> :用文件替换标准输出(即用文件代替显示器)>>:与>相同,但不是覆盖原有文件,而是追加到原有文件的末尾比如,我们调用ping 的命令,来测试本机与头条服务器之间网络的连通性。 屏幕会不断输出网络的延时。

Bash shell 特点总结

自学Linux的过程中做了一点小总结,因此写出来和大家分享一下,希望能共同进步! Bash shell的特点: 1、 命令的自动补齐:Tab键 2、 命令的历史记忆功能:上下键;!+数字可以自动找出在history中的相应命令并且执行;!+string可以自动找到最近一个以string开头的命令并且执行;!$指的是上一个命令的最后一个参数;!!指的是上一个命令,因为在脚本中不能进行翻页,所有常作为脚本命令执行,ctrl+R可以搜索历史命令。 3、 别名功能:alias可以查看别名;unalias cp取消别名;~username/可以进行永久别名的设置;\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中执行命令 {}将几个元素括起来表示一个集合,可以用来批量创建和删除文件 \ 转义字符,让元字符回归本意

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: BASH