История команд и автодополнение

Поскольку в Bash приходится много "работать руками", то были придуманы различные способы облегчения ввода команд. Во-первых, Bash сохраняет историю команд, которые вводились ранее, и предоставляет к ней быстрый доступ. Во вторых, есть автозавершение, или автодополнение, когда вы пишите только начало команды или адреса, а конец подставляется автоматически.

История команд

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

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

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

При завершении сеанса Bash сохраняет команды в файл .bash_history, который находится в домашнем каталоге пользователя. Точка перед именем файла в Unix-подобных системах делает файл скрытым, поэтому обычно такие файлы не видны. Однако это не мешает посмотреть файл и даже его отредактировать.

История команд в файле .bash_history

На скрине командой cat содержимое файла выводится на экран. Отметим, команды текущего сеанса еще не дописаны в .bash_history.

Автодополнение

Автодополнение, или автозавершение, – это способность командной оболочки автоматически дописывать конец вводимого слова, если это слово однозначно определено. В Bash для автозавершения используется клавиша Tab клавиатуры.

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

Автозавершение работает как по отношению к командам-программам, так и адресам. Например, обычно в домашних каталогах дистрибутивов GNU/Linux имеется папка Загрузки (или Downloads). При вводе ее имени может быть достаточным ввести только первую букву и нажать Tab, чтобы получить полное имя.

Обратим внимание, что Bash, да и Linux в общем, различают большие и малые буквы. Поэтому text.txt и Text.txt – разные файлы.

Если команду или имя файла/каталога однозначно идентифицировать нельзя, то двойное нажатие Tab выводит на экран все возможные варианты.

Получение списка команд при двойном нажатии Tab

Здесь было введено слово apt, после этого два раза нажат Tab. В ответ Bash вывел все команды, начинающиеся с заданного слова.

Также автодополнение может помочь, когда вы не помните полное название программы.

Ctrl + U и Ctrl + W

Сочетание клавиш Ctrl + U удаляет написанную в текущей строке команду целиком, т. е очищает командную строку (не путать с командой clear, которая очищает весь экран терминала). Это куда удобнее, чем стирать клавишей Backspace. При этом курсор должен стоять в конце всей строки.

Если курсор находится где-либо в середине строки, то будет удалено все, что находится перед курсором. Текст позади него останется.

Комбинация Ctrl + W удаляет только одно слово перед курсором. Например, в примере ниже нажатие Ctrl + W приведет к удалению только слова install.

Удаление одного слова из командной строки

Задание

Обычно нажатие Ctrl + H в файловых менеджерах графических оболочек Linux отображает скрытые файлы.

  1. Откройте "Терминал" и проверьте, что у вас есть история команд. Закройте "Терминал".

  2. Откройте в графическом текстовом редакторе файл .bash_history, удалите его содержимое, сохраните файл.

  3. Снова откройте "Терминал". Остались ли в истории ранее введенные вами команды?

Создано

Обновлено