Алексей Федорчук
Во времена, когда я был применителем openSUSE, мне очень нравился пакетный менеджер этого дистрибутива — zypper
. Помимо прочих бесчисленных достоинств (а их у него, пожалуй, побольше, чем у всех остальных, вместе взятых), он обладает свойством понимать короткие формы своих внутренних команд. То есть можно дать команду
$ zypper in [packagename]
для установки пакета, или
$ zypper se [packagename]
для его поиска, вместо субкоманд install
и search
, соответственно. По сравнению с громоздкими конструкциями apt-get
и apt-cache
это выглядело очень изящно.
Реализация утилиты apt
из пакета mintsystem
избавила применителя от лишних сущностей вроде get
и cache
. Но вот понимания ей кратких форм внутренних команд для полного счастья явно не хватало.
Что же, все знают чьих рук делом должно быть спасение утопающих, хотя этот пункт в конституцию РФ пока ещё не внесли. Тем более, что в элементарном исполнении задача легко решается с помощью банальных псевдонимов, типа aptin
для apt install
, и так далее.
Однако это решение показалось мне не вполне изящным — в том числе и потому, что корёжит исходную команду. А поскольку я полностью погряз в Zsh’е, то решил воспользоваться одной из его убойных фишек — глобальными псевдонимами, для создания alias’ов не команды с субкомандами, а только субкоманд. Псевдонимы я частично заимствовал из краткой форму субкоманд zypper
‘а, частично изобрёл сам, пытаясь сочетать краткость и мнемонику.
Определять псевдонимы для всех внутренних команд Mint-реализации apt
мне показалось бессмысленным — ряд из них употребляется достаточно редко (а некоторые, типа dselect-upgrade
, подозреваю, никогда), и их проще подсмотреть при необходимости в выводе
$ apt help
Так что я отобрал только те субкоманды, которые употребляю более или менее регулярно, и в том количестве, в каком в состоянии запомнить. И в результате мой ~/.zshrc
пополнился следующим блоком, для удобства восприятия разбитым на секции:
### Глобальные псевдонимы ### для субкоманд утилиты apt ## Поиск и информация alias -g se='search' alias -g sh='show' alias -g ve='version' alias -g ct='content' alias -g cs='contains' alias -g dep='depends' alias -g rec='recommends' ## Установка и обновление alias -g in='install' alias -g ri='reinstall' alias -g si='source' alias -g up='update' alias -g ug='upgrade' alias -g dup='dist-upgrade' ## Смена статуса alias -g he='held' alias -g ho='hold' alias -g uh='unhold' ## Удаление и очистка alias -g rm='remove' alias -g pu='purge' alias -g ar='autoremove' alias -g cl='clean' alias -g ac='autoclean'
Далее интересно было бы заняться фильтрацией вывода команды
$ apt se *
на предмет выявления пакетов с различным статусом (например, автоматически установленных или удалённых с сохранением конфигов) с помощью всё тех же глобальных псевдонимов, но об этом — как-нибудь в другой раз.
автодополнения по Tab не нравятся?
псевдонимы другие утилиты не поломают случаем? Они же «глобальные».
Автодополнения (в данном случае) не нравятся.
А на счёт поломатия — да, надо проверять на совпадение с имеющимися командами, дважды напарывался. Но поскольку они таки глобальные — не очень критично, в отличие от обычных псевдонимов.