bash - 不在 "continued/suspended"消息中添加换行符的后台和前台 bash/zsh 作业

标签 bash vim zsh foreground job-control

我有一个流程是这样的:

  • 运行一条命令,在一堆文件中生成一堆结果
  • 在 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/

相关文章:

vim - 如何编写一个调用 VimGrep 的 vim 函数?

Vim 代码补全菜单

zsh - 在 shell 中启动交互式命令时 Enter 不起作用

rvm 不使用 zsh 设置默认的 ruby

linux - 是否可以为我的 linux 函数复制命令的制表符补全?

linux - BASH 遍历文件夹和文件

bash - 将 cURL 响应重定向到 POST 的 cURL,但不通过文件

bash - MacOS 上的 "xargs"与 linux 不一样吗?

vim - Vim 中的 Sublime 类代码方法浏览器

linux - bash 脚本从 shell 但不是从 cron 作业运行