【发布时间】:2021-08-24 20:52:19
【问题描述】:
例如我有一个 python 脚本:
#!/usr/local/bin/python3.7
import time
n=0
while True:
print(n)
n = n + 1
time.sleep(1)
如果我像这样在 shell 中执行$test.py,我可以随时点击Ctrl+C 取消脚本。
但是如果我像这样执行脚本:$test.py 2>err&,我可以停止脚本的唯一方法是从另一个终端使用kill 命令。
我找不到任何对 2>err& 的引用,它的真正含义是什么?
【问题讨论】:
-
不是重定向,是
&在后台执行命令。正好在stderr重定向后写到这里没有空格。即,如果您运行test.py &,它也会在后台运行。2>将第 2 号文件描述符(即 stderr)重定向到后面命名的目的地,此处为err。 -
写成
2>err &会更好——这样可以减少混乱。
标签: bash shell unix redirect io-redirection