Командная строка Linux. Полное руководство - [28]
Клавиша | Действие |
CTRL+D | Удаляет символ в позиции курсора |
CTRL+T | Меняет местами два символа — в позиции курсора и предшествующий ему |
ALT+T | Меняет местами два слова — в позиции курсора и предшествующий ему |
ALT+L | Переводит в нижний регистр символы, начиная с символа в позиции курсора и до конца слова |
ALT+U | Переводит в верхний регистр символы, начиная с символа в позиции курсора и до конца слова |
Таблица 8.3. Команды вырезания и вставки
Клавиша | Действие |
CTRL+K | Удаляет символы от позиции курсора до конца строки |
CTRL+U | Удаляет символы от позиции курсора до начала строки |
ALT+D | Удаляет символы от позиции курсора до конца текущего слова |
ALT+BACKSPACE | Удаляет символы от позиции курсора до начала текущего слова. Если курсор находится в начале слова, удаляется предшествующее слово |
CTRL+Y | Извлекает текст из кольцевого буфера удалений и вставляет его в позицию курсора |
Отважившиеся заглянуть в документацию к Readline, которая находится в разделе «READLINE», на странице справочного руководства (man) для bash, столкнутся с термином клавиша meta (meta key). На современных клавиатурах ей соответствует клавиша ALT, но так было не всегда.
В стародавние времена (до появления IBM-совместимых персональных компьютеров, но после появления Unix) персональные компьютеры не были так широко распространены. Иногда их заменяли устройства, называемые терминалами. Терминал — это коммуникационное устройство с текстовым дисплеем и клавиатурой, имеющее внутри столько электроники, сколько необходимо для отображения символов и перемещения курсора. Терминалы подключались (обычно посредством последовательного кабеля) к большому компьютеру или коммуникационной сети большого компьютера. В то время существовало очень много различных терминалов, имевших разные клавиатуры и дисплеи с разными функциональными возможностями. Так как все они поддерживали как минимум набор символов ASCII, разработчикам программного обеспечения, пишущим переносимые приложения, необходимо было прийти к общему знаменателю. В системах Unix применяется очень сложный способ использования терминалов и их разнообразных возможностей. Поскольку разработчики Readline не были уверены в наличии специализированной управляющей клавиши, они изобрели ее и назвали meta. На современных клавиатурах роль клавиши meta играет ALT, однако если вы все еще используете терминал (до сих пор поддерживаются в Linux!), можно просто нажать и отпустить клавишу ESC, и вы получите эффект нажатия и удержания клавиши ALT.
Дополнение
Другой вариант помощи пользователям реализован в командной оболочке в виде механизма дополнения (completion). Дополнение происходит, когда в процессе ввода команды нажимается клавиша TAB. Давайте посмотрим, как это работает. Допустим, что ваш домашний каталог содержит следующее:
[me@linuxbox ~]$ ls
Desktop ls-output.txt Pictures Templates Videos
Documents Music Public
Попробуйте ввести следующую строку, но не нажимайте клавишу ENTER:
[me@linuxbox ~]$ ls l
Теперь нажмите клавишу TAB:
[me@linuxbox ~]$ ls ls-output.txt
Обратили ли вы внимание, как командная оболочка дополнила командную строку за вас? Попробуйте теперь набрать следующую строку — и снова не нажимайте ENTER):
[me@linuxbox ~]$ ls D
Нажмите TAB:
[me@linuxbox ~]$ ls D
Дополнения не произошло — просто прозвучал звуковой сигнал. Так получилось потому, что символу D соответствует более одного элемента в каталоге. Чтобы командная оболочка дополнила вашу строку, предложенная вами «подсказка» должна иметь однозначное продолжение. Попробуйте продолжить ввод:
[me@linuxbox ~]$ ls Do
Затем нажмите TAB:
[me@linuxbox ~]$ ls Documents
Дополнение произошло.
Этот пример демонстрирует дополнение путей как наиболее частый случай использования дополнения. Однако дополнение также работает с именами переменных (когда слово начинается с символа $), именами пользователей (когда слово начинается с символа ~), командами (когда дополняемое слово является первым в командной строке) и сетевыми именами компьютеров (когда слово начинается с символа @). Дополнение сетевых имен компьютеров действует только в отношении имен, перечисленных в /etc/hosts.
С механизмом дополнения связано несколько управляющих комбинаций клавиш (табл. 8.4).
Существует еще несколько команд, смысл которых для меня не совсем ясен. Полный список вы сможете найти на странице справочного руководства (man) для bash, в разделе «READLINE».
Таблица 8.4. Команды дополнения
Клавиша | Действие |
ALT+? | Выводит список возможных дополнений. В большинстве систем аналогичный эффект можно получить, нажав клавишу TAB второй раз, что намного проще |
ALT+* | Вставит все возможные дополнения. Это пригодится в том случае, если требуется использовать больше одного возможного варианта дополнения |
Последние версии bash реализуют механизм программируемого дополнения. Программируемое дополнение дает возможность добавлять дополнительные правила. Обычно это делается с целью добавить поддержку определенных приложений. Например, можно добавить дополнение списка параметров команды или файлов определенного типа, поддерживаемых приложением. В Ubuntu определено огромное множество таких правил. Программируемое дополнение реализуется посредством функций командной оболочки — небольших мини-сценариев, о которых будет рассказываться в следующих главах. Если вам любопытно, попробуйте выполнить команду