Для некоторых проектов я часто набираю пару команд, например:
cd an/extremely/long/path/in/which/I/have/some/kinda/project
и
./runmyproject --with some --command line --options set
Видя, что я довольно ленив, я стараюсь не вводить эти команды снова и снова. Поэтому я, конечно, могу много раз использовать клавишу up, чтобы найти эти команды, но часто у меня так много команд между ними, что поиск занимает даже больше времени, чем просто ввод.
Теперь мне интересно, есть ли какая-нибудь утилита, которая может предложить полную команду, которую я часто использую, когда я еще не набрал ее все. Так что я могу, например, набрать «cd an /», и он уже предлагает остальную часть пути, потому что я так часто использовал его в прошлом месяце.
Я нашел что-то под названием Bash Smart Complete. Но это немного «глупо» в том смысле, что в нем не рассматриваются команды, которые я использовал раньше. Я также нашел этот ТАК ответ , который предлагает поместить в файл команды, которые я часто использую. Это, однако, недостаточно отзывчиво, потому что мне нужно будет создавать новый файл для него каждый раз, когда я запускаю новые проекты или изменяю папки или аргументы программы.
Кто-нибудь знает какую-либо другую утилиту или другой способ добиться этого? Или кто-нибудь знает, как я могу изменить Bash Smart Complete, чтобы он мог просматривать команды, которые я использовал, скажем, в прошлом месяце, и завершать команду, которая подходит и использовалась чаще всего в прошлом месяце?
[РЕДАКТИРОВАТЬ] Ниже приведены некоторые действительно хорошие ответы. Я еще не пометил их как определенный ответ. Не потому, что мне не нравятся ответы, а потому, что ни один из них не является абсолютным победителем. Я думаю, что Finalterm - отличный проект. К сожалению, это все еще довольно грубо по краям. Например; он еще не поддерживает копирование-вставку. Я бы следил за этим проектом, потому что, когда он станет зрелым, я думаю, что он будет отличным терминальным приложением. Что касается других ответов; они либо предложили создать псевдоним, а это не то, что я хочу сделать, потому что это создает дополнительную работу вместо того, чтобы убирать работу, или использовать Ctrl + R, что замечательно (я не знал об этом!). Несколько человек предложили использовать Ctrl + R, поэтому я не могу выделить один ответ над другим.
Так что сейчас я определенно использую Ctrl + R, и в будущем я мог бы использовать Finalterm.
Спасибо за отличные ответы, ребята!
источник
zsh
. Он предлагает все, что вы просите, и многое другое. Переход от bash к zshОтветы:
Если команды часто используются, они записываются в треки истории команд
.bash_history
.Теперь хитрость: вы можете выполнить обратный поиск в этой истории, чтобы повторно выполнить команды, нажав CTRL-r .
В режиме поиска в обратном журнале bash показывает в режиме реального времени самую свежую команду в истории, которая начинается с заданного вами ввода. Затем нажмите клавишу ввода, чтобы принять и выполнить предложенную команду. Продолжайте нажимать CTRL-R, чтобы переходить к более старым командам с тем же префиксом.
Это встроенный в bash, нет необходимости настраивать скрипты или устанавливать программное обеспечение :) Это одна из самых полезных функций bash, imho.
источник
Вставьте (Ctrl-Shift-V) следующее в экран терминала:
Выйдите (Ctrl-D) из экрана терминала, затем снова откройте терминал.
Теперь вы можете просто набрать первую пару символов, а затем нажать Вверх или Вниз, чтобы прокрутить отфильтрованный список.
источник
Окончательный срок
Есть это очень многообещающее приложение терминала под названием Final Term . Среди многих его функций, он также имеет историю запоминания команд, так что вы можете выбрать его. Вот еще несколько функций:
Вы можете прочитать больше об этом в этой статье .
Вот сайт от создателей. http://finalterm.org/
Чтобы установить это
Предупреждение
Я сказал, что это многообещающе. Единственная проблема в том, что это версия 0.1. Так что некоторые вещи, как
vim
иnano
не работают еще хорошо. Я также заметил, что он еще не поддерживает Drag-and-Drop, а также копировать и вставлять. Но у него есть функция, которую вы запрашиваете. По мере развития программного обеспечения оно станет одним из лучших терминалов для настольных ПК.Скриншот
Вот функция в действии:
Надеюсь это поможет.
* Я нахожусь на Saucy, поэтому у меня есть опыт саламандры :)
источник
Используйте
alias
всю команду или добавьте каталог в свой$PATH
. Кроме того, вам не нужно менять каталоги, где ваш исполняемый файл (или сценарий, или что-то еще), чтобы запустить его, так что это довольно просто. Оба метода требуют перезагрузки терминала, который вы используете, прежде чем изменения вступят в силу.Вот как создать
bash
alias
для вашего примера (добавьте следующую строку в ваш~/.bashrc
файл):Таким образом, все, что вам нужно сделать, это ввести
runmyproject
в терминал, где бы вы ни находились, без необходимости указывать опции / аргументы.В качестве альтернативы, вы можете добавить свой путь проекта в
$PATH
переменную среды. Для этого добавьте следующие строки в ваш~/.bashrc
файл:В этом случае вам все равно нужно будет указать параметры / аргументы для исполняемого файла при его запуске.
источник
Когда мне часто приходится переходить в такой каталог:
Я бы просто сделал это один раз:
И с тех пор используйте:
Когда дело доходит до:
Я бы использовал поиск по истории bash. В командной строке просто нажмите Ctrl-R и введите «runmy». Вуаля, вся команда со всеми вариантами, как она была введена в последний раз, находится тут же для повторного ввода. Если мне не нравятся параметры, которые я использовал в прошлый раз, и я хотел посмотреть на более ранние команды, я продолжал нажимать Ctrl-R, чтобы циклически перебирать все предыдущие команды, которые содержали «runmy».
Поиск в истории Ctrl-R также может помочь с командой 'cd', если вам не нравится идея символической ссылки. [Ctrl-R] / proj действительно может вернуть последнюю команду, которую вы использовали для перехода в этот каталог.
Вместо того, чтобы добавлять псевдоним или переключаться на специальную оболочку, я всегда предпочитаю научиться использовать функции bash, предназначенные для решения подобных задач. Таким образом, я могу использовать те же функции на удаленных машинах или если мне нужно сесть за терминал коллеги.
источник
нажмите Ctrl + R на клавиатуре - это переведет вас в режим обратной истории, и вы сможете ввести часть, которую вы знаете, и вся команда покажет
Есть и другие способы, перечисленные здесь
http://www.talug.org/events/20030709/cmdline_history.html
Я склонен использовать контроль R наиболее
источник
Попробуйте это ... Это работает для всех команд в вашем файле истории ... это то же самое, что и Ctrl+ R, но я думаю, что это более интуитивно понятно :)
редактировать
/etc/inputrc
раскомментируйте или добавьте две строки
выход из системы / Логин
затем попробуйте написать какую-нибудь команду из истории ...
нравиться...
записывать
и нажмите
Page Upили Page Dnперемещаться по файлу истории в поисках команд, начинающихся с "ls"
Если вы все сделали правильно, вы должны автоматически завершить команду ...
источник