将SCP的标准输出发送到屏幕,将STDERR发送到文件



有很多关于在使用SCP或仅使用stdout本身时如何重定向out和err的讨论,但我很好奇是否有人知道如何在stdout继续打印到屏幕时将stderr重定向到文件。

目前,如果我们像这样重定向stderr:

scp user@XXXX:*.txt  . 2>errfile.txt

stdout上不显示任何内容,在errfile.txt中只捕获错误和echo。

以下是的工作方式

MPBAB:work anj$ cat test.sh
echo "Hello there"
echo "This is a test script"
badcommand
MPBAB:work anj$ ./test.sh 2> err.log
Hello there
This is a test script
MPBAB:work anj$ cat err.log
./test.sh: line 4: badcommand: command not found

正如您所看到的,当test.sh尝试调用badcommand时,它会抛出错误。然而,这两个echo语句工作得很好,并显示在STDOUT中,而STDERR则登录到err.log中。

现在实现您尝试的方式-

MPBAB:work anj$ ./test.sh . 2>err.log
Hello there
This is a test script
MPBAB:work anj$ cat err.log
./test.sh: line 4: badcommand: command not found

工作方式相同。在你的情况下,我不得不认为你发出的scp命令是不正确的。CCD_ 8需要CCD_ 9和CCD_。类似这样的东西(我想将scp test.txt发送到远程服务器)

MPBAB:work anj$ scp ./test.txt user@secure.server.com:/home/data 2>scperr.txt
user@secure.server.com's password: #<this is because I dont have the public key installed>
test.txt              100%  291     0.3KB/s   00:00    
MPBAB:work an$ cat scperr.txt
MPBAB:work anj$ 

因此,您可以看到,文件被复制,并且在STDOUT中显示test.txt 100% 291 0.3KB/s 00:00,并且由于没有错误,scperr.txt为空。

相关内容

  • 没有找到相关文章

最新更新