我有一个bash脚本my_script
执行:
scp -- 'somehost:*.txt' dest_dir
现在,当我从交互式shell会话中运行这个脚本时,scp在复制文件时列出文件。但是当我运行第二个脚本时,包含:
exec 5>&1
foo=$(my_script | tee /dev/fd/5) || exit -1
(动机参见这个问题)- SCP在复制文件时不列出文件。
为什么?除了使用scp -v
,我还能避免这个问题吗?
为什么?
scp
程序检查输出是否为tty,如果是,则打印进度。如果输出不是tty,则不打印进度信息。
除了使用scp -v,我还能绕过这个问题吗?
如何欺骗命令,使其认为其输出将发送到终端
具体来说,在unbuffer
之前调用scp
可能就足够了:
unbuffer scp -- 'somehost:*.txt' dest_dir