如何使用 zsh 和 bash 隐藏所有命令输出

use*_*456 4 command-line bash zsh

如何隐藏在终端中写入和输出的所有输出?

换句话说,我正在寻找添加字符串

>/dev/null 2&>1
Run Code Online (Sandbox Code Playgroud)

我写的每一个命令。

  • 你会如何用 bash 做到这一点?
  • 你会如何用 zsh 做到这一点?
  • 理想情况下如何进行配置以考虑任何终端。

Ada*_*hon 6

zsh

您可以/dev/null通过运行这两个命令将以下任何命令的 stdout 和 stderr 重定向到:

exec >/dev/null
exec 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

注意:这仍然会显示提示和您在命令行上键入的任何内容,但不会显示其他内容。

bash

您可以使用以下命令重定向 stdout 和 stderr

exec >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

笔记

  • 这可能会抑制任何输出,包括提示和您在命令行中键入的内容。(当我在 2016 年首次创建此答案时,zsh5.2 和bash4.4就是这种情况。虽然bash5.1.8似乎仍然如此,但zsh至少从 5.8 版开始,情况似乎不再如此)

  • 要再次启用输出,请运行

      exec >/dev/tty
      exec 2>/dev/tty
    
    Run Code Online (Sandbox Code Playgroud)