Автоматический завершенный для часто используемых команд командной строки?

Для некоторых проектов я часто ввожу в паре команд, как, например:

cd an/extremely/long/path/in/which/I/have/some/kinda/project

и

./runmyproject --with some --command line --options set

Наблюдение, что я довольно ленив, я стараюсь не вводить те команды полностью снова и снова. Таким образом, я могу, конечно, использовать ключевое много для нахождения назад тех команд, но часто, у меня также есть столько промежуточных команд, тот поиск его занимает еще больше времени, чем просто ввод его.

Я теперь задаюсь вопросом, существует ли некоторая утилита, которая может предложить полную команду, которая я использую много, когда я еще не ввел все это. Так, чтобы я мог, например, ввести 'CD /' и что он уже предлагает остальную часть пути, потому что я использовал его так прошлый месяц.

Я действительно находил что-то названным Bash Умный Завершенный. Но это - маленькие "немые" в этом, это не смотрит на команды, которые я использовал прежде. Я просто также нашел это, ТАК ответьте, который предлагает поместить команды, я использую много в файле. Это однако, не является достаточно быстро реагирующим в этом, я должен был бы создать новый файл для него каждый раз, когда я запускаю новые проекты или папки изменения или аргументы программы.

Кто-либо знает какую-либо другую утилиту или другой способ достигнуть этого? Или, кто-либо знал бы, как я мог изменить Bash, Умный Завершенный так, чтобы он мог посмотреть на команды, в которых я использовал, говорит прошлый месяц и завершает команду, которая соответствует и использовалась больше всего в прошлом месяце?

[РЕДАКТИРОВАНИЕ] Ниже является некоторыми действительно большими ответами. Я приют отметил любого как определенный ответ все же. Не потому что мне не нравятся ответы, я делаю, но потому что ни один из них не абсолютный победитель. Я думаю, что Finalterm является замечательным проектом. К сожалению, это все еще довольно грубо вокруг краев. Например; это еще не поддерживает вставку копии. Я сохранил бы глаз на тот проект, хотя, потому что, когда он назреет, я думаю, что это будет большое терминальное приложение. Что касается других ответов; они или предложенное создание псевдонима, который не является тем, что я хочу сделать, потому что оно создает дополнительную работу вместо того, чтобы устранить работу или использовать Ctrl+R, который является бриллиантом (я не знал об этом!). Несколько человек предложили использовать Ctrl+R, таким образом, я не могу действительно выделить один ответ по другому.

Таким образом, на данный момент я определенно использую Ctrl+R, и в будущем я мог бы использовать Finalterm.

Спасибо за всех великих парней ответов!

15
задан 23 May 2017 в 15:39

7 ответов

Вставьте (Ctrl-Shift-V) в экран терминала следующее:

echo '"\e[A": history-search-backward' > ~/.inputrc
echo '"\e[B": history-search-forward' >> ~/.inputrc
echo 'set show-all-if-ambiguous on' >> ~/.inputrc
echo 'set completion-ignore-case on' >> ~/.inputrc

Выйдите (Ctrl-D) из экрана терминала, затем снова откройте терминал.

Теперь вы можете просто набрать первую пару символов, а затем нажать Вверх или Вниз, чтобы прокрутить отфильтрованный список

0
ответ дан 23 May 2017 в 15:39

управление хитом + r на Вашей клавиатуре - это поместит Вас в обратный режим истории, и можно ввести часть, которую Вы знаете, и целая команда покажет

Существуют другие пути, перечисленные здесь

http://www.talug.org/events/20030709/cmdline_history.html

Я склонен использовать управление R большинство хотя

4
ответ дан 23 May 2017 в 15:39

Если команды часто используются, они записываются в треки истории команд в .bash_history.

Теперь хитрость: вы можете выполнить обратный поиск в этой истории, чтобы повторно выполнить команды, нажав CTRL-r .

В режиме обратного поиска по истории bash показывает в прямом эфире, когда вы набираете , самую последнюю команду в истории, которая начинается с заданного вами ввода. Затем нажмите Enter, чтобы принять и выполнить предложенную команду. Продолжайте нажимать CTRL-R, чтобы переходить к более старым командам с тем же префиксом.

Это встроенный в bash, нет необходимости настраивать скрипты или устанавливать программное обеспечение :) Это одна из самых полезных функций bash, imho.

0
ответ дан 23 May 2017 в 15:39

Конечный срок

Существует очень многообещающее приложение терминала под названием Конечный срок . Среди множества его функций, он также имеет историю запоминания команд, так что вы можете выбрать его. Вот еще несколько особенностей:

Final Term

Подробнее об этом можно прочитать в этой статье .

Вот сайт от создателей. http://finalterm.org/

Для его установки

sudo add-apt-repository ppa:versable/finalterm-daily
sudo apt-get update
sudo apt-get install finalterm

Предупреждение

Я уже говорил, что это многообещающе. Единственная проблема заключается в том, что это версия 0.1. Так что некоторые вещи, такие как vim и nano, пока не работают. Я также заметил, что он еще не поддерживает Drag-and-Drop, а также копировать и вставлять. Но у него есть функция, которую вы запрашиваете. По мере развития программного обеспечения оно станет одним из лучших терминалов для настольных компьютеров.

Снимок экрана

Вот функция в действии:

 function in action

Надеюсь, это поможет.

* Я нахожусь на Соси, поэтому у меня есть опыт саламандры:)

0
ответ дан 23 May 2017 в 15:39

Используйте alias для Вашей целой команды, или добавляют каталог в Ваш $PATH. Кроме того, Вы не должны изменять каталоги туда, где Ваш исполняемый файл (или сценарий, или безотносительно) должен выполнить его, таким образом, это довольно просто. Оба метода требуют, чтобы Вы перезапустили терминал, который Вы используете, прежде чем изменения вступают в силу.

Вот то, как создать a bash alias для Вашего примера (добавляют следующую строку к Вашему ~/.bashrc файл):

alias runmyproject='an/extremely/long/path/in/which/I/have/some/kinda/project/runmyproject --with some --command line --options set'

Таким образом, все, что необходимо сделать, вводится runmyproject в терминал где бы вы ни были, не имея необходимость указывать опции/аргументы.

С другой стороны, Вы могли добавить свой путь проекта к Вашему $PATH переменная среды. Для этого добавьте следующие строки в Ваш ~/.bashrc файл:

PATH=an/extremely/long/path/in/which/I/have/some/kinda/project:$PATH
export PATH

В этом случае необходимо будет все еще указать опции/аргументы для исполняемого файла при выполнении его.

7
ответ дан 23 May 2017 в 15:39

Когда мне часто приходится переходить в каталог, подобный следующему:

cd an/extremely/long/path/in/which/I/have/some/kinda/project

Я просто делаю это один раз:

ln -s an/extremely/long/path/in/which/I/have/some/kinda/project ~/project

И с тех пор используйте: [ 116]

cd ~/pr[tab]

Когда дело доходит до:

./runmyproject --with some --command line --options set

Я бы использовал поиск по истории bash. В командной строке просто нажмите Ctrl-R и введите «runmy». Вуаля, вся команда со всеми вариантами, как она была введена в последний раз, находится тут же для повторного ввода. Если мне не нравятся опции, которые я использовал в прошлый раз, и я хотел посмотреть на более ранние команды, я продолжал нажимать Ctrl-R, чтобы циклически проходить по всем предыдущим командам, которые содержали «runmy».

Поиск в истории Ctrl-R также может помочь с командой 'cd', если вам не нравится идея символической ссылки. [Ctrl-R] ​​/ proj действительно может вернуть последнюю команду, которую вы использовали для записи компакт-диска в этот каталог.

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

0
ответ дан 23 May 2017 в 15:39

Попробуйте это... Это работает на все команды в Вашем файле истории... то же самое как Ctrl+R, но я думаю, что это более интуитивно :)

  1. править /etc/inputrc

    sudo vim /etc/inputrc
    
  2. не прокомментируйте или добавьте эти две строки

    "\e[5~": history-search-backward
    
    "\e[6~": history-search-forward
    
  3. выход из системы/вход в систему


затем попытайтесь записать некоторую команду, перечисленную в истории...

как...

ls -lah

записать

ls

и нажмите

Page Up или Страница Dn для навигации по канавке файл истории в поисках команд, который запускается с "ls"

Если бы Вы сделали все правильное, то оно должно автоматически заполнить Вашу команду...

2
ответ дан 23 May 2017 в 15:39

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

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