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

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

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

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

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

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

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

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

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

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

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

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

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

Если команду или имя файла/каталога однозначно идентифицировать нельзя, то двойное нажатие 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. Снова откройте "Терминал". Остались ли в истории ранее введенные вами команды?

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

Введение в Linux и Bash. Курс