我连续将几个大文件发送到几台服务器。我想查看进度(所以我不想使用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
是一个高级程序,我只知道它的一些基本功能,但我测试过它是这样工作的。