命令运行时临时显示标准输出

命令运行时临时显示标准输出

我连续将几个大文件发送到几台服务器。我想查看进度(所以我不想使用scp --quiet),但复制完成后我不需要查看统计信息。

是否有一个工具可以接收标准输入上的输入,将其回显到标准输出,然后在输入流关闭时将其删除?这让我想起了 ncurses 可以做的事情,但我似乎在网上找不到任何可以做到这一点的东西。

例如,如果调用这样的实用程序echo-then-discard,我可以将其称为:

scp lots-*-of-files "$server:$dest" | echo-then-discard

即使这样的工具存在,也可能无法与更新类型一起工作scp——因为管道scp输出似乎只是放弃了进度(可能是因为 ncurses 需要直接访问终端来进行花哨的更新)。

答案1

图形桌面环境

一个简单的方法是在终端仿真器窗口中使用less,只需重定向程序的输出,

program-name | less

例如,如果你想保留颜色,

ls -l --color ~/* | less -r

当你退出 less (使用“q”)时,之前的对话就在那里。

文本模式屏幕

许多较新的文本模式屏幕不保留以前的对话,但您可以安装和使用screen.

screen
# run some programs here

screen
# run the program from which you want temporary output saved here
exit

然后您就回到了“第一个屏幕”及其对话。

screen是一个高级程序,我只知道它的一些基本功能,但我测试过它是这样工作的。

相关内容