Самый простой способ просмотреть метаданные бинарного пакета Debian — использовать less
(, если быть точным, препроцессор less
)бинарного пакета. Другими словами:
less pkgname...deb
Вот соответствующее содержание /bin/lesspipe
.
*.deb|*.udeb|*.ddebi|*.ipk)
echo "$1:"; dpkg --info "$1"
echo
echo '*** Contents:'; dpkg-deb --contents "$1"
;;
Чтобы это работало, вам нужно добавить следующее куда-нибудь, где оно будет источником. ~/.bashrc
хорошее место.
export LESSOPEN="|/usr/bin/lesspipe %s"
( Если только вы не используете zsh
в качестве интерактивной оболочки... )Проблема в том, что двойные кавычки будут восприниматься как часть шаблона. Команда, которую вы на самом деле запускаете, будет эквивалентна
find. -name '"Bik*"'
Вы получаете это, потому что оболочка будет выполнять разбиение слова -на не заключенное в кавычки $a
, разбивая строку на два слова -name
и "Bik*"
. Затем слова подвергаются генерации имени файла ("подстановке" ), что означает, что "Bik*"
будет расширено до всех имен файлов, соответствующих этому конкретному шаблону в текущем каталоге (, включая двойные кавычки ). Вряд ли у вас есть такие имена файлов, поэтому шаблон остается нераскрытым, а кавычки остаются.
Если бы вы использовали a='-name Bik*'
, то сработало бы , но только если у вас нет ничего, соответствующего Bik*
в текущем каталоге.
Если бы в bash
вы использовали shopt -s nullglob
, обе попытки привели бы к ошибке из find
, так как -name
не был бы задан шаблон (, оболочка удалила бы несопоставленный шаблоны ).
(В оболочке zsh
вы получите сообщение об ошибке от find
, так как он не знает, что такое опция -name "Bie*"
, т.е. вся строка ; это связано с тем, что оболочка zsh
по умолчанию не выполняет эти операции разбиения -и -глобуса на расширениях без кавычек.)
Вместо этого, если вы используете оболочку с массивами, используйте
a=( -name 'Bik*' )
find. "${a[@]}"
Это будет правильно цитировать каждое отдельное слово при использовании с find
так, как показано здесь.
Или вы могли бы использовать
a='Bik*'
find. -name "$a"
Связанные:
Также вторая половина из мое решение по установить -f внутри функции