在尝试存储 SSH 检查的输出以查看我是否具有对帐户的 SSH 访问权限时,我看到了奇怪的行为。我尝试了以下方法:
ssh git@bitbucket.org > temp.txt
Run Code Online (Sandbox Code Playgroud)
并且我希望收到一条字符串消息,告诉我权限是否被拒绝或不保存到temp.txt. 但输出直接到终端,而不是保存到文件。但是,如果我这样做
ls -l > temp.txt
Run Code Online (Sandbox Code Playgroud)
该输出保存到文件。什么可能导致这种行为差异?我最终将把输出保存到一个变量中,但在这种情况下也会看到类似的行为。我使用的是 Ubuntu 16.04 bash 版本 4.3.48(1)。
由于“权限被拒绝”通常被视为错误,因此输出是否路由到 stderr 而不是 stdout?如果是这样,您需要使用2> temp.txt或> temp.txt 2>&1。
更多信息:
在许多系统上,程序输出被分成多个流,最常见的是stdout(标准输出)和stderr(标准错误)。当你使用的时候>,那只是重定向stdout,但是2>可以用来重定向stderr。(如果您希望正常输出和错误转到两个不同的文件,这非常有用。)
语法2>&1意味着“获取 stderr 上的所有输出并将其重定向到 stdout”,因此您的文件将包含来自两个流的输出。
| 归档时间: |
|
| 查看次数: |
1956 次 |
| 最近记录: |