apt发出“不稳定的CLI界面”警告


63

我正在编写一个脚本,该脚本需要读取包含我写此行的软件包信息的文件

apt show $PACKAGE_NAME > pack_info.txt

但是,这不会创建pack_info.txt文件,并始终发出以下警告:

警告:apt没有稳定的CLI界面。在脚本中谨慎使用。

目前,我尝试同时重定向STDOUTSTDERR使用&>,结果给出了pack_info.txt我们需要的文件。

我也尝试从中获取内容dpkg,这也有效:

dpkg -s $PACKAGE_NAME > pack_info.txt

它既不显示警告也不显示错误是件好事。

不好的是,我们不想使用dpkg,而只希望apt的STDOUT重定向到文件。

因此,我有三个问题要问:

  1. 稳定的CLI界面到底是什么意思?
  2. 如何安全无误地在脚本中使用此类命令?[请注意举例说明]
  3. 有没有一种方法可以只将STDOUT重定向apt show到文件?

Answers:


80

apt对于终端并给出了漂亮的输出,而apt-getapt-cache是脚本,并给予稳定的,可解析的输出。apt show因此,与您的命令等效的脚本为:

apt-cache show $PACKAGE_NAME >pack_info.txt

现在一个接一个地回答您的问题:

稳定的CLI界面到底是什么意思?

apt的输出在脚本中不能很好地使用。例如,apt install(与相比apt-get install)显示了一个进度条,该进度条对脚本没有用,并且在解析输出时可能会引发错误。apt show firefox显示了一条额外记录的提示,这在脚本中也完全没有用,您希望它仅在此处输出每条记录-就是apt-cache show firefox这样。让我们看看该man apt说些什么:

所述易于(8)的命令行被设计为最终用户工具也可能改变的版本之间的行为。尽管它尝试不破坏向后兼容性,但如果更改对交互使用有利,则也无法保证。

apt(8)的所有功能在apt-get(8)和apt-cache(8)等专用APT工具中都可用。 apt(8)仅更改某些选项的默认值(请参阅apt.conf(5),尤其是Binary范围)。因此,您应该更喜欢在脚本中使用这些命令(可能启用了一些附加选项),因为它们尽可能保持向后兼容性。


如何安全无误地在脚本中使用此类命令?

只需分别使用apt-getapt-cache代替plain即可apt。:)请参阅此答案以获取等效列表。


有没有一种方法可以只将apt show的STDOUT重定向到文件?

您已经正确地做到了:>file或者1>file重定向stdout,2>file重定向stderr &>file并将两者都重定向到file

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.