我有一个流程是这样的:
- 运行一条命令,在一堆文件中生成一堆结果
- 在 vim 中打开一个文件
- 编辑其中一个结果
- 后台vim,获取下一个结果,前台vim
- 重复直到列表完成
不过,每次我在背景和前景 vim 时,bash/zsh 都会打印两条如下所示的消息:
[1] + 4321 continued nvim
[1] + 4321 suspended nvim
这些很烦人,因为它们会占用屏幕空间,最终结果会从屏幕上过滤掉。我必须重新运行该命令或不断上下滚动才能找到它。
有没有办法获取“继续/暂停”消息以避免添加这么多换行符?或者,我可以完全抑制它们吗?
最佳答案
实现方法:
这不是执行此操作的最有效方法,但它是一种工作方法。这是一个假定的文件结构:
backgroundRun.sh
|
tmp
|
|_ outFile.txt
这是 backgroundRun.sh
的样子:
backgroundRun.sh:
#backgroundRun.sh
myCommand > tmp/outFile.txt 2>&1 &
代码输出:
./backgroundRun.sh
user@domain~$
工作原理:
基本概念是 myCommand
(查看 backgroundRun.sh
)的所有输出都存储在 tmp/outFile.txt
中,在后台运行时。
附言:outFile.txt
将是一个空文件(占位符)。
这是一种有效的方法。这个问题是输出会回显到屏幕上(如果有的话)。就像这样一个简单的命令:
(myCommand &) #Hit enter:
user@domain~$
工作原理: 这段代码是关于简单的;它所做的只是子 shell 中的命令(在后台)。
这是另一种有效的方法。在这里,您只需要一个文件:backgroundRun.sh
。这是代码:
backgroundRun.sh:
myCommand & > /dev/null 2>&1
代码输出:
./backgroundRun.sh
user@domain~$
工作原理:
它运行命令,将其输出到 /dev/null
。如果这不起作用,则会给出错误 (2>&1
)。
附言:此代码仅适用于 *nix/POSIX 系统,因为 /dev/null
不存在于其他操作系统中
关于bash - 不在 "continued/suspended"消息中添加换行符的后台和前台 bash/zsh 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54601696/