2

对于特定的应用程序,可能有一个可以设置的标志或配置,例如git diff --no-pager

但我不想改变任何默认行为或任何东西。我只是试图强制(对于脚本化 PTY 事件的特定实例)输出以非交互方式出现。

我可以想到两种方法:

command | cat... 或者 ...cat <(command)

这些命令将在 PTY 中运行(具体来说,它们是tmux通过 script.sh 发送到的,tmux new-window script.sh比如在。

我假设第一种cat方法实际上是分叉出一个程序并制作一个管道,这样可能会更慢。据我所知,虽然第二种方法做同样的事情。我怎样才能绕过 cat 的使用?这是一个真正有用的用途cat吗??

我又想到了两种方法:

mkfifo fifo
command > fifo &
cat fifo

好吧,那个看起来很愚蠢,而且是长期的|

command > file &
tail -f file

如何知道文件何时完成写入?

rm -f file
touch file
tail -f file &
PID=$!
command >> file
kill $PID

相当迂回。

还有其他可能的方法吗?哪个最好?

4

1 回答 1

3

最好的方法是分配cat$PAGER,这样任何正确编写的应用程序都只会转储它们的输出。

export PAGER=cat
于 2013-07-25T05:19:50.967 回答