Завершение Bash и grep

Использовать less и затем / для поиска:

petrus@hive:/usr/bin$ ls -l | less
total 535796
-rwxr-xr-x 1 root   root        30244 2011-02-23 14:22 [
lrwxrwxrwx 1 root   root            8 2011-05-26 01:22 2to3 -> 2to3-2.7
-rwxr-xr-x 1 root   root           96 2011-04-11 21:07 2to3-2.7
[...]
-rwxr-xr-x 1 root   root         9588 2011-02-24 09:43 appres
-rwxr-xr-x 1 root   root         6930 2011-05-20 23:53 apr-1-config
:

И теперь путем ввода/, менее быстрое (:) изменится. Если я ищу "lsusb":

-rwxr-xr-x 1 root   root         9588 2011-02-24 09:43 appres
-rwxr-xr-x 1 root   root         6930 2011-05-20 23:53 apr-1-config
/lsusb
lrwxrwxrwx 1 root   root           13 2011-05-26 01:24 lsusb -> ../sbin/lsusb
-rwxr-xr-x 1 root   root       114528 2010-11-24 18:16 ltrace
[...]
4
26.03.2013, 01:18
4 ответа

Используйте compgen встроенный для получения списка возможных завершений:

compgen -c | grep top

Можно запросить завершения на различные типы действий завершения как команды, псевдонимы, функции..., например. -c эквивалентно -A commands. Посмотрите man bash для получения дополнительной информации.

6
27.01.2020, 20:47

Используя compgen определенно хороший. С другой стороны, и это работало бы с любой оболочкой POSIX, Вы могли регистрировать команды $PATH с:

(IFS=:; set -f; ls -- $PATH | grep top$)

С zsh:

type -m '*top'

Можно также запросить whatis базу данных:

man -ks1:8 top$
3
27.01.2020, 20:47

В то время как можно изобразить его из системы завершения, это не самый очевидный метод.

Почти все программы, установленные pacakges, находятся в /usr/bin, таким образом, можно перечислить программы в /usr/bin чье имя заканчивается top:

echo /usr/bin/*top

Можно перечислить файлы ко времени изменения inode. Время изменения установленной программы обычно является временем, она была скомпилирована, потому что архивация и программы установки копирует время изменения вместе с данными. Но время изменения inode файла является прошлым разом, когда что-либо произошло с ним, включая то, чтобы быть извлеченным или скопировало (на самом деле, ему изменяли его время изменения, которое сбрасывает время изменения inode). Так как Вы недавно установили программу, это - один из последних, показанных следующей командой:

ls -lctr /usr/bin/*top

Удалите r опция, если Вы хотите начать смотреть от вершины, а не от нижней части.

Вы могли также посмотреть на журнал программ, которые Вы установили. Они находятся в /var/log/history.log.

2
27.01.2020, 20:47

Вы могли использовать функцию оболочки, которая ищет Ваш ПУТЬ и известные каталоги, которые содержат двоичные файлы, но которые не находятся в Вашем ПУТИ. Пример:

findprogram() {
  ls $(echo $PATH:/sbin:/usr/sbin | sed "s/:/\ /g") | grep "$1" | sort --unique
}

Использование:

findprogram top

Это производит отсортированный список кандидатов.

1
27.01.2020, 20:47

Теги

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