相关疑难解决方法(0)

在shell中,"2>&1"是什么意思?

在Unix shell中,如果我想要组合stderrstdout进入stdout流进行进一步操作,我可以在命令的末尾添加以下内容:

2>&1
Run Code Online (Sandbox Code Playgroud)

所以,如果我想head在输出上使用g++,我可以这样做:

g++ lots_of_errors 2>&1 | head
Run Code Online (Sandbox Code Playgroud)

所以我只能看到前几个错误.

我总是很难记住这一点,而且我不得不去查阅它,主要是因为我不完全理解这个特殊技巧的语法.

有人可以打破这个并按字符解释具体2>&1 意义吗?

unix bash shell redirect

2121
推荐指数
16
解决办法
103万
查看次数

将所有输出重定向到文件

我知道在Linux中,要将屏幕输出重定向到文件,我可以使用>tee.但是,我不确定为什么部分输出仍然输出到屏幕而不写入文件.

有没有办法将所有输出重定向到文件?

linux bash io-redirection

712
推荐指数
9
解决办法
102万
查看次数

在Bash中重定向stderr和stdout

我想将进程的stdout和stderr重定向到单个文件.我怎么用Bash做到这一点?

bash shell redirect pipe

635
推荐指数
10
解决办法
66万
查看次数

如何将stdout和stderr重定向到文件

我正在运行一个bash脚本,它创建一个日志文件来执行命令

我使用以下内容

Command1 >> log_file
Command2 >> log_file
Run Code Online (Sandbox Code Playgroud)

这仅发送标准输出,而不是终端上显示的标准错误.

我可以记录记录到文件的stderr和stdout吗?

bash stdout stderr

277
推荐指数
4
解决办法
19万
查看次数

写入文件,但如果存在则覆盖它

echo "text" >> 'Users/Name/Desktop/TheAccount.txt'
Run Code Online (Sandbox Code Playgroud)

如何创建文件(如果文件不存在),如果它已经存在则覆盖它.现在这个脚本只是附加.

unix bash

220
推荐指数
5
解决办法
23万
查看次数

如何在脚本本身内重定向整个shell脚本的输出?

是否可以将Bourne shell脚本的所有输出重定向到某个地方,但是脚本本身内部有shell命令?

重定向单个命令的输出很简单,但我想要更像这样的东西:

#!/bin/sh
if [ ! -t 0 ]; then
    # redirect all of my output to a file here
fi

# rest of script...
Run Code Online (Sandbox Code Playgroud)

含义:如果脚本以非交互方式运行(例如,cron),则将所有内容的输出保存到文件中.如果从shell以交互方式运行,请让输出像往常一样转到stdout.

我想为通常由FreeBSD定期实用程序运行的脚本执行此操作.它是日常运行的一部分,我通常不会每天都看到电子邮件,所以我没有发送它.但是,如果这个特定脚本中的某些内容失败,那对我来说很重要,我希望能够捕获并通过电子邮件发送这部分日常工作的输出.

更新:Joshua的回答是正确的,但我也想在整个脚本周围保存和恢复stdout和stderr,这样做:

# save stdout and stderr to file descriptors 3 and 4, then redirect them to "foo"
exec 3>&1 4>&2 >foo 2>&1

# ...

# restore stdout and stderr
exec 1>&3 2>&4
Run Code Online (Sandbox Code Playgroud)

shell

179
推荐指数
4
解决办法
16万
查看次数

如何将输出附加到文件?

如何command > file以附加到文件的方式执行某些操作,而不是覆盖?

linux shell command-line

122
推荐指数
2
解决办法
13万
查看次数

将Unix时间戳转换为日期字符串

是否有一种快速的,单行的方式将Unix时间戳转换为Unix命令行中的日期?

date可能会工作,除了指定每个元素(月,日,年,小时等)相当尴尬,我无法弄清楚如何让它正常工作.似乎可能有一种更简单的方法 - 我错过了什么吗?

unix bash shell unix-timestamp

114
推荐指数
5
解决办法
15万
查看次数

在Linux上使用Bash将所有输出重定向到文件?

我试图将命令行程序的所有输出重定向到文件.我正在使用Bash.一些输出被定向到文件,但是一些仍然出现在终端中并且不存储到文件中.

这里描述了类似的症状:

将所有输出重定向到文件

但是我尝试了所提出的解决方案(捕获stderr)但没有成功:

<cmd> <args> > stdout.txt 2> stderr.txt
Run Code Online (Sandbox Code Playgroud)

文件stderr.txt已创建但为空.

可能的线索是命令行程序是与同一台机器上的服务器通信的客户端.可能有些输出来自服务器.

有没有办法捕获终端的所有输出,无论其来源如何?

编辑:

我已经确认缺少的输出是由服务器生成的.在单独的终端中运行命令会在两个终端中产生一些输出,我可以将命令终端的所有输出传输到文件.这引发了有关如何捕获服务器输出的问题,但这是一个不同的问题.

linux bash stdout stderr

71
推荐指数
5
解决办法
11万
查看次数

创建文本文件并使用bash填充它

我需要创建一个文本文件(除非它已经存在)并使用bash向文件写一个新行.

我确信这很简单,但有人可以向我解释一下吗?

unix

65
推荐指数
4
解决办法
16万
查看次数