小编exi*_*tus的帖子

在没有文件描述符副本的情况下将 stdout 和 stderr 重定向到同一个文件是否安全?

我从空目录开始。

$ touch aFile
$ ls
aFile
Run Code Online (Sandbox Code Playgroud)

然后我有ls两个参数,其中一个不在此目录中。我将两个输出流都重定向到一个名为output. 我使用>>是为了避免同时写入。

$ ls aFile not_exist >>output 2>>output
$ cat output
ls: cannot access 'not_exist': No such file or directory
aFile
Run Code Online (Sandbox Code Playgroud)

这似乎有效。这种方法有什么危险吗?

io-redirection stdout stderr

27
推荐指数
2
解决办法
2225
查看次数

使用 Python 运行多行命令

Python 有一个选项允许我们将 python 语句作为参数传递给程序。

\n\n

一个示例用法是

\n\n
$ python -c "print(\\"I\'m running Python.\\")"\nI\'m running Python.\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 Python 的手册页中我们读到

\n\n
当使用-c命令调用时,它会执行作为命令给出的 Python 语句。这里的命令可能包含多个由换行符分隔的\xe2\x80\x90\n ple语句。
\n\n

我试图传递多行,但不能:

\n\n
$ python -c "print(0)\\nprint(1)"\n  File "<string>", line 1\n    print(0)\\nprint(1)\n                     ^\nSyntaxError: unexpected character after line continuation character\n
Run Code Online (Sandbox Code Playgroud)\n\n

我也尝试过这里文档但没有成功。我该如何进行这项工作?

\n

python

2
推荐指数
1
解决办法
5998
查看次数

使用 3&gt;&amp;1 1&gt;/dev/null 重定向时会发生什么?

我正在尝试使用文件描述符来更好地理解它们,但我无法理解以下内容。

$ grep "..." 3>&1 1>/dev/null
1
12
13
123
321
3
Run Code Online (Sandbox Code Playgroud)

上面的内容没有在 shell 中显示任何匹配项,这显然是发生的,因为我正在重定向到 /dev/null。我不明白的是为什么3>&1不这样做,这样我仍然可以看到输出,因为我在 fd 3 中复制了它。

我缺少什么?

io-redirection file-descriptors

0
推荐指数
1
解决办法
396
查看次数