Вводимую команду можно редактировать с помощью клавиш Backspace и Delete, перемещаться стрелками по всей строке.
Для управления запущенными командами используются сочетания клавиш. Ввод следует завершать командой Ctrl-D (конец ввода). Эту команду интерпретирует при вводе с терминала система. Она же превращает некоторые другие управляющие символы (например, Ctrl-C – «перывание» или Ctrl-Z – «засыпание») в сигналы.
История команд
Двумя другими клавишами со стрелками – вверх и вниз – задействуется весьма мощный механизм bash – работа с историей команд. Все команды, набранные пользователем, командная оболочка запоминает и позволяет обращаться к ним впоследствии. История команд сохраняется между сеансами работы пользователя.
Псевдонимы
Поиск по истории – удобное средство: длинную командную строку можно не набирать целиком, а отыскать и использовать. Однако давнюю команду придется добывать с помощью нескольких нажатий клавиши вверх – а можно и совсем не доискаться, если она уже выбыла оттуда. Для того чтобы оперативно заменять короткие команды длинными, стоит воспользоваться псевдонимами (aliases). В конфигурационных файлах командного интерпретатора пользователя обычно уже определено несколько сокращений, список которых можно посмотреть с помощью команды alias без параметров:
Например, по команде ls вместо утилиты /bin/ls bash запускает собственную команду-сокращение, превращающееся в команду ls --color=auto. Повторно появившуюся в команде подстроку "ls" интерпретатор уже не обрабатывает, во избежание вечного цикла. Например, команда ls -al превращается в результате в ls --color=auto -al.
Сокращения не наследуются с окружением.
Автодополнение
Автодополнения позволяют быстро набирать команды и пути в файловой системе. Во время набора имени команды или файла пользователь может нажать клавишу Tab, и командная оболочка попытается «дополнить» указанную команду или файл: предложит возможные варианты с данным началом или же дополнит имя, ведь часто набранной строки – пути к файлу и нескольких первых букв его имени – достаточно для однозначного указания на этот файл, потому что по введенному пути других файлов, чье имя начинается на эти буквы, просто нет.
Шаблоны
Автодополнение очень удобно, когда цель пользователя – задать один конкретный файл в командной строке. Если же нужно работать сразу с несколькими файлами – например, для перемещения их в другой каталог с помощью mv, достраивание не помогает. Необходим способ задать одно «общее» имя для группы файлов, с которыми будет работать команда. В подавляющем большинстве случаев это можно сделать при помощи шаблона.
Шаблон в командном интерпретаторе используется примерно в тех же целях, что и регулярное выражение: для поиска строк определенной структуры среди множества разнообразных строк. В отличие от регулярного выражения, шаблон всегда примеряется к строке целиком, кроме того, он устроен значительно проще.
Символы в шаблоне разделяются на обычные и специальные. Обычные символы соответствуют таким же символам в строке, а специальные – обрабатываются особым образом:
· Шаблону, состоящему только из обычных символов, соответствует единственная строка, состоящая из тех же символов в том же порядке. Например, шаблону «abc» соответствует строка abc, но не aBc или ABC, потому что большие и маленькие буквы различаются.
· Шаблону, состоящему из единственного спецсимвола «*», соответствует любая строка любой длины (в том числе и пустая).
· Шаблону, состоящему из единственного спецсимвола «?», соответствует любая строка длиной в один символ, например, a, + или @, но не ab или 8888.
· Шаблону, состоящему из любых символов, заключенных в квадратные скобки «[» и «]» соответствует строка длиной в один символ, причем этот символ должен встречаться среди заключенных в скобки. Например, шаблону «[bar]» соответствуют только строки a, b и r, но не c, B, bar или ab. Символы внутри скобок можно не перечислять полностью, а задавать диапазон, в начале которого стоит символ с наименьшим ASCII-кодом, затем следует «-», а затем – символ с наибольшим ASCII-кодом. Например, шаблону «[0-9a-fA-F]» соответствует одна шестнадцатеричная цифра (скажем, 5, e или C). Если после «[» в шаблоне следует «!», то ему соответствует строка из одного символа, не перечисленного между скобками.
· Шаблону, состоящему из нескольких частей, соответствует строка, которую можно разбить на столько же подстрок (возможно, пустых), причем первая подстрока будет отвечать первой части шаблона, вторая – второй и т. д. Например, шаблону «a*b?c» будут соответствовать строки ab@c («*» соответствует пустая подстрока), a+b=c и aaabbc, но не будут соответствовать abc («?» соответствует подстрока c, а для «c» соответствия не находится), @ab@c (нет соответствия для «a») или aaabbbc (из трех b первое соответствует «b», второе – «?», а вот третье приходится на «c»).
Шаблоны используются в нескольких конструкциях shell. Главное место их применения – командная строка. Если оболочка «видит» в командной строке шаблон, она немедленно заменяет его списком файлов, имена которых ему соответствуют. Команда, которая затем вызывается, получает в качестве параметров список файлов уже без всяких шаблонов, как если бы этот список пользователь ввел вручную. Шаблоны используются в нескольких конструкциях shell. Главное место их применения – командная строка. Если оболочка «видит» в командной строке шаблон, она немедленно заменяет его списком файлов, имена которых ему соответствуют. Команда, которая затем вызывается, получает в качестве параметров список файлов уже без всяких шаблонов, как если бы этот список пользователь ввел вручную.