重定向 apt 和 apt-get 命令

Ali*_*deh 4 package-management command-line apt bash

sudo apt-get install -y blender重定向到 时/dev/null,安装过程完成,没有任何警告或错误。

但是当sudo apt install -y blender重定向到时/dev/null,会显示此警告:

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Run Code Online (Sandbox Code Playgroud)

那么导致此警告的命令apt-getapt命令之间有什么区别?

我知道最好使用apt而不是apt-get,但是如何在apt没有此警告的情况下重定向输出?

有没有另一种方法可以使 apt 不那么嘈杂?(因为-q-qq选项并非应有的默默无闻)

Zan*_*nna 7

如果您重定向输出是为了根本看不到它,那么您可以忽略警告。它旨在告诉您,如果您想稍后将输出作为日志读取,如果您使用apt-get,您可以期待更清晰的信息,因为从 的某些动态输出apt没有被准确捕获。

显然,APT 足够聪明,可以意识到您正在重定向其输出,但不了解您将其发送到何处。

顺便说一句,如果您需要,您可以随时阅读记录的输出;它会自动保存/var/log/apt/term.log(并在变旧时压缩和旋转)。

  • @cat 程序无法判断管道的另一端是什么(即它是否只是 `less` 或一些复杂的 awk 脚本),但它可以判断它是被发送到文件、管道还是设备(特别是 /dev/null 可以通过检查主要和次要编号来识别),使用 `fstat`。 (2认同)

Mel*_*ius 5

警告被打印到标准错误输出。您可以使用重定向它2>

命令

sudo apt install -y blender > /dev/null 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

将完全安静地运行。(这也意味着任何其他错误和警告都将被丢弃。)

  • 在`bash`中,以下内容是等价的;`a &> b` 和 `a > b 2> b` (3认同)