相关疑难解决方法(0)

如何使用Bash将stdout和stderr重定向并附加到文件中?

要将stdout重定向到Bash中的截断文件,我知道要使用:

cmd > file.txt
Run Code Online (Sandbox Code Playgroud)

要在Bash中重定向stdout,追加到文件,我知道要使用:

cmd >> file.txt
Run Code Online (Sandbox Code Playgroud)

要将stdoutstderr重定向到截断的文件,我知道要使用:

cmd &> file.txt
Run Code Online (Sandbox Code Playgroud)

如何重定向附加到文件的stdoutstderrcmd &>> file.txt不适合我.

linux bash redirect pipe stream

1440
推荐指数
8
解决办法
70万
查看次数

管道stdout和stderr到shell脚本中的两个不同进程?

我做了一个pipline

 command1 | command2
Run Code Online (Sandbox Code Playgroud)

因此,command1的stdout进入command2,而command1的stderr进入终端(或shell的stdout所在的地方).

command3当stdout仍然要命令2时,如何将command1的stderr传递给第三个进程()?

bash shell pipe io-redirection

54
推荐指数
4
解决办法
1万
查看次数

OS X/Linux:管道分为两个进程?

我知道

program1 | program2
Run Code Online (Sandbox Code Playgroud)

program1 | tee outputfile | program2
Run Code Online (Sandbox Code Playgroud)

但有没有办法将program1的输出提供给program2和program3?

unix macos shell pipe

21
推荐指数
3
解决办法
2988
查看次数

获取巨大的gziped文件的最后一行

在数据库备份过程中,我生成一个文本转储文件.由于数据库非常庞大,转储文件也很庞大,所以我用gzip压缩它.生成转储时压缩是内联完成的(感谢Unix管道!).

在进程结束时,我通过观察最后一行来检查转储文件的有效性,并检查"转储完成"字符串的存在.在我的脚本中,我通过将最后一行提取到变量中来实现:

str=`zcat ${PATHSAVE}/dumpFull.sql.gz | tail -n1`
Run Code Online (Sandbox Code Playgroud)

由于数据库转储文件很大(目前超过200Gb),因此最终进程检查需要花费大量时间(目前超过180分钟).

我正在寻找一种方法来快速提取我的.gz文件的最后一行...任何人都有想法?

注1:对于解释上下文,我们可以说数据库是MySql社区,备份工具是mysqldump,生成的dumpfile是一个全文文件.操作系统是CentOs.备份脚本是Bash shell脚本.

注意2:我知道Percona xtraBackup,但在我的情况下,我想使用mysqldump进行这个特定的备份工作.恢复所需的时间不是问题.

mysql bash shell

8
推荐指数
1
解决办法
280
查看次数

Shell - 管道到文件中的多个命令

我想在管道输入上运行2个命令,并希望打印(到stdout)两者的输出.

每个命令都是grep,sed和awk的组合.

这两个命令都必须位于单个.sh文件中.

示例命令:

cat mult_comm.sh       
sed 's/World/Boy/g'|grep Boy ; grep World

# Input
cat input.log
Hello World

# This command HAS to work EXACTLY like this
cat input.log | bash mult_comm.sh
Run Code Online (Sandbox Code Playgroud)

预期产出

Hello Boy
Hello World
Run Code Online (Sandbox Code Playgroud)

实际输出

Hello Boy
Run Code Online (Sandbox Code Playgroud)

我尝试过使用三通

cat mult_comm.sh
tee >(sed 's/World/Boy/g'|grep Boy) | grep World
Run Code Online (Sandbox Code Playgroud)

但这只是给出了

Hello World
Run Code Online (Sandbox Code Playgroud)

我可以根据需要修改.sh文件,但无法更改管道命令.有任何想法吗?

这与OS X/Linux类似:管道分为两个进程?管道输出到两个不同的命令,但我无法弄清楚如何在脚本中使用命名管道.

bash shell tee

5
推荐指数
1
解决办法
8039
查看次数

如何将标准输出定向到两个管道中?

我需要对程序的标准输出流做两件事:比如说,将它导入两个管道,或者将它打印到终端并将其导入管道。但是 - 这些东西都没有将它定向到文件中。

如果我想要一个管道 + 一个文件,我会使用tee命令:myprog | tee out.txt | another_command,如解释here。但是如果这两个操作都没有写入文件呢?

bash shell pipe tee output-redirect

0
推荐指数
1
解决办法
52
查看次数

标签 统计

bash ×5

shell ×5

pipe ×4

tee ×2

io-redirection ×1

linux ×1

macos ×1

mysql ×1

output-redirect ×1

redirect ×1

stream ×1

unix ×1