У меня есть много команд, которые я обычно должен выполнять, часто с малейшим изменением.
Прямо сейчас я храню их все .bash_history
и использую CTRL- Rчтобы получить к ним доступ, но мне интересно, есть ли лучший способ. Что я ищу:
- Легко добавить новую команду
- Простой поиск и повторное выполнение требуемой команды
- Избегайте нежелательных команд в предложениях
К сожалению, bash_history не настолько силен , на третьем спросе: если я немного cd
и ls
он заполняет файл история быстро. Недавно я узнал о HIST_SIZE
том, что вы можете настроить историю, чтобы избежать дублирования или определенных команд, но прежде чем настраивать все это, я хотел убедиться, что это лучший способ.
shell
command-history
Konerak
источник
источник
alias
может быть, более полезным. например.alias gfc="git fetch origin"
Ответы:
Я считаю очень полезными следующие команды readline
(имейте в виду
reverse-search-history
, что они отличаются от обычныхforward-search-history
, привязаны к Ctrl- R, Ctrl- S).У меня есть эти команды, связанные с Ctrl- Upи Ctrl- Downпомещая следующие строки
~/.inputrc
:Как они работают: напишите несколько символов начала команды, нажмите Ctrl- Upи будет показана следующая более старая команда, начинающаяся с этого префикса, нажмите еще раз, чтобы увидеть следующую, и так далее. Если вы удовлетворены, после возможного изменения команды нажмите Enterдля выполнения.
источник
"\e[B": history-search-forward
и"\e[A": history-search-backward
HISTFILESIZE
и / илиHISTSIZE
(zsh поддерживает толькоHISTSIZE
, bash поддерживает оба), чтобы гарантировать, что ваш буфер достаточно велик. ТАК вопрос bash HISTSIZE против HISTFILESIZE? можно осветить дальше.Другой совет: я иногда использую комментарии, чтобы пометить / пометить команду:
тогда:
источник
$_bookmark
. Можно утверждать, что это ужасный хак, использующий тот факт, что несуществующие переменные расширяются до нуля, но это, безусловно, работает, с оговоркой, что пробелы не разрешены (используйте вместо них _).Несмотря на очень ограниченную область применения, я хотел бы указать на эти два заполнителя расширения:
является расширением для последней команды. Полезно, если вы забыли поставить
sudo
перед командой.повторяет последний параметр. Полезно, если вы хотите повторить другую команду с
a/very/long/path/name/you/do/not/want/to/type/again
источник
Используйте псевдоним
alias
отличный инструмент для этого.Когда вы используете псевдоним, он точно такой же, как если бы вы его печатали, поэтому он довольно гибкий. Например, вы можете использовать его с трубами:
Вы должны иметь возможность делать «небольшие изменения», передавая любые флаги, которые вы еще не указали.
источник
Я создаю минимальные сценарии оболочки для своих частых команд и даю им короткие имена. Все они хранятся в одном месте, которое добавляется в
PATH
.Таким образом, у меня есть быстрый доступ к очень сложным командам, и в отличие от этого
alias
я могу превратить изменяемые части моей задачи в аргументы командной строки моего ярлыка.источник
Я поддерживаю копию .bash_history в Git . Чтобы упростить это, я установил
в .bashrc , и следующие команды (модифицированные для общего использования) в сценарии очистки
который я запускаю, прежде чем добавлять строки в
git gui
. Поскольку файл истории изменяется с каждой командой, у меня также есть специальная команда для обновления этого конкретного хранилища:источник
HISTCONTROL=ignorespace
, что иногда важно, чтобы не загромождать историю.Среди всех других ответов здесь участвует история.
Я поставил
в ~ / .bash_profile
В дополнение к другим комментариям re: history
Еще одна полезная функция ...
Начиная вспомнить историю с
Вспомним последнюю команду, которая началась с первых букв
например:
Вы не упомянули, используете ли вы графический интерфейс или только командную строку. Если вы используете графический интерфейс, вы можете использовать один из постоянных менеджеров буфера обмена для копирования / вставки часто используемых команд, идентификаторов пользователей, паролей, URL-адресов и т. Д.
источник
!find<ESC>CTRL-E
работает, но я сомневаюсь, что смогу вспомнить это завтра. Что это за ESC CTRL-E?Умение использовать Ctrl-Rи Ctrl-Sпозволяет легко искать команды, которые вы ищете в истории, и вы уже нашли переменную среды HISTCONTROL, чтобы игнорировать дубликаты и изменить сайт файла истории bash.
Я обычно делаю много, Ctrl-Rа затем Ctrl-Eизменяю некоторые параметры, если я пропустил найденную команду, нажав Ctrl-Rслишком много раз, Ctrl-Sчтобы спасти.
источник
Я всегда предпочитаю хранить последние использованные команды и их вывод.
источник
В дополнение к хорошим ответам выше, если вы используете графический интерфейс, основанный на kde или gnome, то AutoKey может быть удивительно полезен.
Это позволяет создавать фразы, которые запускаются путем ввода нескольких символов или нажатия горячей клавиши. Эти фразы затем заменяются или добавляются к вашему вводу.
Он также поддерживает скрипты, написанные на python, которые можно заставить делать почти все, если вы знаете python. Я еще не знаю Python, но у меня уже есть несколько очень простых скриптов, чтобы делать аккуратные вещи.
Кажется, что все идет от вашей клавиатуры, поэтому он работает с любым приложением, которое принимает ввод с клавиатуры - и с вашим рабочим столом, сам.
Он имеет множество опций, управляющих тем, как и где эти вещи активируются, поэтому вы можете иметь некоторые, которые работают только в вашей консоли, а другие - только в другом окне. Вы также можете настроить запуск фраз, как только наберете строку, которая их вызывает, или подождите, пока вы не дадите им ОК.
источник
Как и другие говорили, псевдоним твой друг. Для более сложных вещей (когда вам нужны аргументы где-то между инструкциями) я использую функции в моем .zshrc, например:
это работает как locate (я использую его, когда по какой-то причине db недоступен). Или
для замены killall.
источник
В дополнение к использованию Cntl-Rдля просмотра в
.bash_history
, у меня также есть файл README в~/develop
каталоге, куда я помещаю длинные команды, например, дляgit
/svn
, так что я могу вернуться к ним позже, когда мне это понадобится. Точно так же я планирую иметь~/install/README
файл для размещения всех общих имен пакетов, которые я обычно устанавливаю после установки новой версии Linux / Ubuntu. Таким образом, идея заключается в том, чтобы иметь файл README внутри каждого каталога, например, Video, Audio, ... и вставлять в них общие команды / советы, которые вам, возможно, понадобится узнать позже.источник