我在尝试存储SSH检查的输出时看到奇怪的行为,看我是否有SSH帐户访问权限。我尝试了以下方法:
ssh git@bitbucket.org > temp.txt
我希望有一条字符串消息告诉我权限是否被拒绝或不保存到temp.txt
。但是输出直接到终端并且没有保存到文件中。但是,如果我这样做
ls -l > temp.txt
该输出保存到文件中。什么可能导致这种行为上的差异?我最终会成为saving the output to a variable,但也会看到类似的行为。我在Ubuntu 16.04 bash版本4.3.48(1)上。
答案 0 :(得分:2)
由于"许可被拒绝"通常被认为是错误,输出是否被路由到stderr而不是stdout?如果是,则需要使用2> temp.txt
或> temp.txt 2>&1
。
更多信息:
在许多系统上,程序输出被分解为多个流,最常见的是stdout
(标准输出)和stderr
(标准错误)。使用>
时,只会重定向stdout
,但2>
可用于重定向stderr
。 (如果您希望正常输出和错误转到两个不同的文件,这非常有用。)
语法2>&1
表示"在stderr上获取所有输出并将其重定向到stdout",因此您的文件将包含两个流的输出。
答案 1 :(得分:0)
试试这个:
ssh git@bitbucket.org > temp.txt 2>&1
基本上这是什么告诉linux将stderr(2)重定向到stdout(& 1),然后将stdout重定向到你的文件“temp.txt”