bash,将管道命令视为捕获输出的命令
假设我在bash中有一组管道命令:bash,将管道命令视为捕获输出的命令,bash,pipe,Bash,Pipe,假设我在bash中有一组管道命令: mysqldump mydatabase | head -1100 | tail -n 100 将其视为一个命令的正确/最佳方法是什么,这样我就可以捕获输出 我尝试将命令封装在backticks中(据我所知,这会打开一个新的shell,这似乎是不必要的),但出现了一个错误 `mysqldump mydatabase | head -1100 | tail -n 100 ` > output.txt error mysq
mysqldump mydatabase | head -1100 | tail -n 100
将其视为一个命令的正确/最佳方法是什么,这样我就可以捕获输出
我尝试将命令封装在backticks中(据我所知,这会打开一个新的shell,这似乎是不必要的),但出现了一个错误
`mysqldump mydatabase | head -1100 | tail -n 100 ` > output.txt
error mysqldump: Got errno 32 on write
不确定该错误是否与bash命令或mysql有关(在我添加backticks之前它就已经工作了)
无论如何,我更感兴趣的是如何将管道命令视为一个/组来捕获它们 左侧命令的stdout充当右侧命令的stdin,因此
mysqldump mydatabase | head-1100 | tail-n100>output.txt
应该可以工作
如果你真的想“弄清楚”,这应该行得通
(mysqldump mydatabase | head-1100 | tail-n100)>output.txt
左侧命令的stdout充当右侧命令的stdin,因此mysqldump mydatabase | head-1100 | tail-n100>output.txt应该可以工作
如果你真的想“弄清楚”,这应该行得通(mysqldump mydatabase | head-1100 | tail-n100)>output.txt
行中的每个命令都会获取一些输入并返回一个输出,因此您可以将其视为数据传递的链
如果希望结果显示在控制台中,只需编写
mysqldump mydatabase | head -1100 | tail -n 100
否则,若要将其保存在文件中,您需要将输出重定向到一个文件,如下所示
mysqldump mydatabase | head -1100 | tail -n 100 > output.txt
.行中的每个命令都会获取一些输入并返回一个输出,因此您可以将其视为数据传递的链
如果希望结果显示在控制台中,只需编写
mysqldump mydatabase | head -1100 | tail -n 100
否则,若要将其保存在文件中,您需要将输出重定向到一个文件,如下所示
mysqldump mydatabase | head -1100 | tail -n 100 > output.txt
.您可以使用sed
查找行号的部分,而不是创建两个管道
mysqldump mydatabase | sed -n '1000,1100p' > output.txt
您可以使用sed
查找行号的部分,而不是创建两个管道
mysqldump mydatabase | sed -n '1000,1100p' > output.txt
如果您只想将管道命令的结果放入一个文件.Juse,请使用:mysqldump mydatabase | head-1100 | tail-n100>output.txt。绝对不需要把**
放在`
上,在这种情况下是危险的。如果命令生成作为输出字符串的rm-rf/
,如果您只想将管道命令的结果放入文件中,请使用:mysqldump mydatabase | head-1100 | tail-n 100>output.txt。绝对不需要把**
放在`
上,在这种情况下是危险的。如果命令生成作为输出字符串的rm-rf/
,则不需要成像。重定向管道的输出相当于重定向函数调用的输出,执行相同的管道,只有函数调用会产生更多的开销。也许我应该问问OP为什么说他想“将管道命令视为一个命令”。如果他需要在脚本中多次使用同一管道,这个功能是必要的,这是不必要的。重定向管道的输出相当于重定向函数调用的输出,执行相同的管道,只有函数调用会产生更多的开销。也许我应该问问OP为什么说他想“将管道命令视为一个命令”。如果他需要在脚本中多次使用同一管道,这项职能是必要的。