对于特定的应用程序,可能有一个可以设置的标志或配置,例如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
相当迂回。
还有其他可能的方法吗?哪个最好?