apt дает предупреждение «Нестабильный интерфейс CLI»

Я не знаю, что случилось с ${eval}, и никто в чате Конки не смог объяснить это мне, но они предложили использовать ${execpi}, и он сделал именно то, что я хотел:)

14
задан 30 December 2017 в 19:27

3 ответа

Это довольно просто: apt для терминала и дает красивый вывод, в то время как apt-get и apt-cache предназначены для скриптов и дают стабильный, синтаксический вывод. Таким образом, эквивалент скрипта вашей команды apt show:

apt-cache show $PACKAGE_NAME >pack_info.txt

Теперь, чтобы ответить на ваши вопросы один за другим:

apt 's вывод не очень полезен в сценариях , Например, apt install (по сравнению с apt-get install) отображает индикатор выполнения, который бесполезен для скриптов и может вызывать ошибки при анализе вывода. apt show firefox показывает подсказку для дополнительной записи, которая также абсолютно бесполезна в скрипте, вы хотите, чтобы она просто выводила каждую запись там - вот что делает apt-cache show firefox. Давайте посмотрим, что man apt должно сказать об этом: Командная строка apt (8) разработана как инструмент конечного пользователя и может изменять поведение между версиями. Хотя он пытается не нарушать обратную совместимость, это не гарантируется, если изменение кажется полезным для интерактивного использования. Все функции apt (8) доступны в специализированных инструментах APT, таких как apt-get (8) и apt-cache (8). apt (8) просто изменяет значение по умолчанию для некоторых параметров (см. apt.conf (5) и, в частности, двоичную область). Поэтому вам следует использовать эти команды (возможно, с некоторыми дополнительными опциями) в ваших сценариях, поскольку они максимально поддерживают обратную совместимость. Просто используйте apt-get или apt-cache вместо обычного apt. :) См. Этот ответ для списка эквивалентов. Вы сделали это правильно уже: >file или 1>file перенаправляет stdout, 2>file перенаправляет stderr и &>file перенаправляет оба на file.
11
ответ дан 22 May 2018 в 15:51

Это довольно просто: apt для терминала и дает красивый вывод, в то время как apt-get и apt-cache предназначены для скриптов и дают стабильный, синтаксический вывод. Таким образом, эквивалент скрипта вашей команды apt show:

apt-cache show $PACKAGE_NAME >pack_info.txt

Теперь, чтобы ответить на ваши вопросы один за другим:

apt 's вывод не очень полезен в сценариях , Например, apt install (по сравнению с apt-get install) отображает индикатор выполнения, который бесполезен для скриптов и может вызывать ошибки при анализе вывода. apt show firefox показывает подсказку для дополнительной записи, которая также абсолютно бесполезна в скрипте, вы хотите, чтобы она просто выводила каждую запись там - вот что делает apt-cache show firefox. Давайте посмотрим, что man apt должно сказать об этом: Командная строка apt (8) разработана как инструмент конечного пользователя и может изменять поведение между версиями. Хотя он пытается не нарушать обратную совместимость, это не гарантируется, если изменение кажется полезным для интерактивного использования. Все функции apt (8) доступны в специализированных инструментах APT, таких как apt-get (8) и apt-cache (8). apt (8) просто изменяет значение по умолчанию для некоторых параметров (см. apt.conf (5) и, в частности, двоичную область). Поэтому вам следует использовать эти команды (возможно, с некоторыми дополнительными опциями) в ваших сценариях, поскольку они максимально поддерживают обратную совместимость. Просто используйте apt-get или apt-cache вместо обычного apt. :) См. Этот ответ для списка эквивалентов. Вы сделали это правильно уже: >file или 1>file перенаправляет stdout, 2>file перенаправляет stderr и &>file перенаправляет оба на file.
17
ответ дан 18 July 2018 в 00:11

Это довольно просто: apt для терминала и дает красивый вывод, в то время как apt-get и apt-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 должно сказать об этом:

Что мы подразумеваем под контентом CLI?

Все функции apt (8) доступны в специальных инструментах APT, таких как apt-get (8) и apt-cache (8). apt (8) просто изменяет значение по умолчанию для некоторых параметров (см. apt.conf (5) и, в частности, двоичную область). Поэтому вы должны использовать эти команды (возможно, с некоторыми дополнительными опциями) в своих сценариях, поскольку они максимально поддерживают обратную совместимость.

Командная строка apt (8) предназначена как конец -user, и это может изменить поведение между версиями.

Есть ли способ только и только перенаправлять STDOUT для apt show для того, чтобы показать, что это не означает, что изменение кажется полезным для интерактивного использования. файл?

Как безопасно и безошибочно использовать такие команды в скриптах?

18
ответ дан 24 July 2018 в 17:10

Другие вопросы по тегам:

Похожие вопросы: