Читайте также:
|
|
История команд
Bash располагает весьма мощным механизмом — возможностью работать с историей команд. Все команды, набранные пользователем, bash запоминает и позволяет обращаться к ним впоследствии. Для работы с историей команд используются клавиши со стрелками — вверх и вниз. По стрелке вверх (можно использовать и Ctrl+P, previous), список поданных команд «прокручивается» от последней к первой, а по стрелке вниз (Ctrl+N, next) — обратно. Соответствующая команда отображается в командной строке как только что набранная, её можно отредактировать и подать оболочке (подгонять курсор к концу строки при этом не обязательно).
Если необходимо добыть из истории какую-то давнюю команду, проще не гонять список истории стрелками, а поискать в ней с помощью команды Ctrl+R (reverse search). При этом выводится подсказка специального вида («(reverse-i-search)»), подстрока поиска (окружённая символами ` и ') и последняя из команд в истории, в которой эта подстрока присутствует:
[methody@localhost methody]$
^R | (reverse-i-search)`':
i | (reverse-i-search)`i': ls i
n | (reverse-i-search)`in': info
f | (reverse-i-search)`inf': info
o | (reverse-i-search)`info': info
^R | (reverse-i-search)`info': man info
^R | (reverse-i-search)`info': info "(bash.info.bz2)Commands For History"
Пример 1. Поиск по истории команд
Пример представляет символы вводимые пользователем (в левой части до “|”) и содержимое последней строки терминала. Это «кадры» работы с одной и той же строкой, показывающие, как она меняется при наборе. Набрав «info», пользователь продолжил поиск этой подстроки, повторяя Ctrl+R до тех пор, пока не наткнулся на нужную ему команду, содержащую подстроку “info”. Осталось только передать её bash с помощью Enter.
Чтобы история команд могла сохраняться между сеансами работы пользователя, bash записывает её в файл.bash_history, находящийся в домашнем каталоге пользователя. Делается это в момент завершения оболочки: накопленная за время работы история дописывается в конец этого файла. При следующем запуске bash считывает.bash_history целиком. История хранится не вечно, количество запоминаемых команд в.bash_history ограничено (обычно 500 командами, но это можно и перенастроить).
Сокращения
Поиск по истории — удобное средство: длинную командную строку можно не набирать целиком, а выискать и использовать. Однако давнюю команду придётся добывать с помощью нескольких Ctrl+R — а можно и совсем не доискаться, если она уже выбыла оттуда. Для того, чтобы оперативно заменять длинные команды короткими, стоит воспользоваться сокращениями (aliases). В конфигурационных файлах командного интерпретатора пользователя обычно уже определено несколько сокращений, список которых можно посмотреть с помощью команды alias без параметров:
[methody@localhost methody]$ alias
alias cd..='cd..'
alias cp='cp -i'
alias l='ls -lapt'
alias ll='ls -laptc'
alias ls='ls --color=auto'
alias md='mkdir'
alias mv='mv -i'
alias rd='rmdir'
alias rm='rm -i'
Пример 2. Просмотр заранее определённых сокращений
Выяснилось, что по команде ls вместо утилиты /bin/ls bash запускает собственную команду-сокращение, превращающееся в команду ls --color=auto. Повторно появившуюся в команде подстроку “ls” интерпретатор уже не обрабатывает, во избежание вечного цикла. Например, команда ls -al превращается в результате в ls --color=auto -al. Точно так же любая команда, начинающаяся с rm, превращается в rm -i (interactive), в результате чего ни одно удаление не обходится без вопросов в стиле «rm: удалить обычный файл `файл'?». Избавиться от ненужного сокращения можно с помощью команды unalias.
Достраивание
Сокращения позволяют быстро набирать команды, однако никак не затрагивают имён файлов, которые чаще всего и оказываются параметрами этих команд. Бывает, что набранной строки — пути к файлу и нескольких первых букв его имени — достаточно для однозначного указания на этот файл, потому что по введённому пути болшьше файлов, чьё имя начинается на эти буквы, просто нет. Чтобы не дописывать оставшиеся буквы в bash можно нажать клавишу Tab. И bash сам достроит имя файла до полного (снова воспользуемся методом «кадров»):
[methody@localhost methody]$ ls -al /bin/base
Tab | [methody@localhost methody]$ ls -al /bin/basename
-rwxr-xr-x 1 root root 12520 Июн 3 18:29 /bin/basename
[methody@localhost methody]$ base
Tab | [methody@localhost methody]$ basename
Tab | [methody@localhost methody]$ basename ex
Tab | [methody@localhost methody]$ basename examples/
Tab | [methody@localhost methody]$ basename examples/sample-file
sample-file
Пример 3. Использование достраивания
Дальше — больше. Оказывается, и имя команды можно вводить не целиком: оболочка догадается достроить набираемое слово именно до команды, раз уж это слово стоит в начале командной строки. Таким образом, команда basename examples/sample-file была набрана за восемь нажатий клавиш («base» и четыре Tab)! Не потребовалось вводить начало имени файла в каталоге examples, потому что файл там был всего один.
Выполняя достраивание (completion), bash может вывести не всю строку, а только ту её часть, относительно которой у него нет сомнений. Если дальнейшее достраиване может пойти несколькими путями, то однократное нажатие Tab приведёт к тому, что bash растерянно пискнет1, а повторное — к выводу под командной строкой списка всех возможных вариантов. В этом случае надо подсказать командной оболочке продолжение: дописать несколько символов, определяющих, по какому пути пойдёт достраивание, и снова нажать Tab.
Дополнения в bash находятся ещё не на самой вершине удобства и экономии нажатий на клавиши. Если в bash несколько типов достраивания (по именам файлов, по именам команд и т. п.), то в zsh их сколько угодно: существует способ запрограммировать любой алгоритм достраивания и задать шаблон командной строки, в которой именно этот способ будет применяться.
Дата добавления: 2015-01-30; просмотров: 114 | Поможем написать вашу работу | Нарушение авторских прав |