1
对于特定的应用,可能有一个标志或配置可以设置,例如, git diff --no-pager
。控制是否有任何程序使用寻呼机(不能使用寻呼机)的标准方法是什么?
但我不想改变任何默认行为或任何东西。我只是试图强制(对于脚本PTY事件的特定实例)输出以非交互方式出现。
我能想到的两种方法:
......或者...... cat <(command)
这些命令在PTY(具体而言,它们通过script.sh发送到tmux
要运行,就像tmux new-window script.sh
),这实际上并不像运行脚本(就像它是如何写入的),而是像实际输入它一样。
我假设第一个cat
方法实际上是要fork出一个程序并制作一个管道,以便可能慢一点。据我所知,虽然第二种方法做同样的事情。我怎样才能避开使用猫?这是一个真正有用的使用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
非常迂回。
还有其他可能的方法吗?哪一个最好?
Oooooh,这是整洁!我想知道是否有任何程序不检查PAGER,但仍可以去交互化。例如,我知道我实际上可以做像'printf'这样的东西\ n“| vim -c“:BundleInstall”',使Vim接受一个Enter(用于消除装载错误配置时出现的错误消息),这是此答案不包含的某些带外巧妙的示例。 –
...仍然使用猫。也许我可以避开猫吗? (因为否则我只想管它给猫,因为我觉得有更高的机会会正常工作) –
这些程序期望'$ PAGER'中有东西可以插入;猫是简单地回应未经修改的输入的最方便的选择。 –