Чтобы установить yaourt
, откройте терминал и запустите
git clone https://aur.archlinux.org/package-query.git
cd package-query
makepkg -si
cd..
git clone https://aur.archlinux.org/yaourt.git
cd yaourt
makepkg -si
cd..
Сохраните и запустите;
sudo pacman -Sy yaourt base-devel fakeroot
yaourt -Syu --devel --aur
alsamixer
является частью alsa-utils
, пакет light
должен быть установлен из AUR
Команда find
, которую вы показываете,
( set -f; find ${PATH//:/ } -type f -maxdepth 1 -executable )
подходит для большинства случаев, учитывая, что он был запущен на машине с установленным GNU find
, который реализует как -maxdepth
, так и -executable
(, и я действительно не хочу пробовать для создания эквивалентного теста для -executable
с использованием стандартных предикатов find
). Также требуется bash
для подстановки параметров значения PATH
, замены каждого :
пробелом (. Это также можно сделать, установив IFS=:
и используя переменную без кавычек как есть, удалив требование дляbash
).
В другом ответе на аналогичный вопрос я также защитил команду find
от интерпретации путей поиска как потенциальных опций с помощью --
. Команда, показанная здесь, использует подход с IFS
, а также слегка изменена после надлежащего тестирования :
(
set -f; IFS=:
find -L -- $PATH -maxdepth 1 ! -type d -executable
)
! -type d
гарантирует, что исполняемые символические ссылки, но не каталоги, также будут найдены. Опция -L
гарантирует, что метаданные, относящиеся к найденным символическим ссылкам, берутся из того, на что указывает ссылка (, это предотвращает поиск символических ссылок на доступные, то есть исполняемые, подкаталоги ).
Сравнение этого с compgen -c
в bash
показывает, что compgen -c
создаст список команд, перекрывающийся с результатом приведенной выше команды find
, и что любые дополнительные команды, которые находит compgen -c
, ограничены встроенными -в командах, не имеющих внешней реализации.
Очевидно, чтобы ограничить это командами, начинающимися с символа g
, вы также можете использовать-name 'g*'
(compgen -c g
вbash
).
Оболочка, обеспечивающая завершение команд с помощью табуляции, например bash
, может предоставлять команды для взаимодействия с этим механизмом. Эти команды вряд ли будут переносимы между оболочками и, возможно, даже между версиями одной и той же оболочки. Команда find
выше,кажется, обеспечивает довольно хорошее приближение к тому, что даст вам завершение с помощью табуляции внешних команд, и зависит только от присутствия GNU find
.
Для перезаписи предиката -executable
с использованием стандартных предикатов find
см. ответ Стефана Шазела на другой вопрос (, касающийся -readable
, но решение аналогично -executable
).
Предикат -maxdepth
также не является стандартом -, но чаще используется в различных вариантах команды find
.