Ctrl с терминал линукс

Shortcuts в Linux

Навеяло топиком про горячие клавиши в Windows (статья 1 и статья 2)

Горячие клавиши условно можно разделить на следующие группы:
Общесистемные горячие клавиши
Комбинации клавиш для работы в консоли
Комбинации клавиш системы X-Window
Комбинации клавиш среды KDE

Общесистемные горячие клавиши

Все мы знаем «комбинацию из трех пальцев»: Ctrl + Alt + Del. В Windows она использовалась для вызова окна процессов. Повторное нажатие Ctrl + Alt + Del перезагружало компьютер. В Linux реакция на нажатие этой комбинации задается в файле /etc/inittab:

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Параметр –r now команды shutdown означает, что систему нужно перезагрузить (-r) сейчас же (now). У вас может стоять другая команда, например, reboot или же вообще реакция на Ctrl + Alt + Del может быть отключена.

Следующая общесистемная комбинация клавиш – это Ctrl + Alt + Backspace. Нажатие этой комбинации клавиш приведет к перезагрузке сервера X Window, если он запушен.

Комбинации клавиш для работы в консоли

Виртуальных консолей в Linux может быть несколько (обычно 6). Переключаться между ними позволяют комбинации клавиш Alt + Fn, где n – это номер консоли. Однако эта комбинация клавиш будет работать только, если вы сейчас работаете в консоли, а не в KDE или другой графической среде. Например, вы сейчас работаете в консоли 1, а вам нужно переключить на консоль 4, тогда нажмите комбинацию клавиш Alt + F4, для обратного переключения нажмите Alt + F1.

Нажатие комбинации Alt + F7, как правило, переключает вас в графический режим – систему X Window.

Клавиша Tab в консоли (или терминале системе X Window) реализует автозаполнение командной строки. Предположим, что вы забыли точное имя команды, с помощью которой запускается нужная вам программа. Введите начальные буквы команды и нажмите Tab – система сама дополнит командную строку. Если после нажатия Tab вы услышите звуковой сигнал, значит, возможных вариантов несколько, например, вы ввели da, а система нашли две (или более) команды, которые начинаются на “da”, и она не знает, какую команду нужно «вписать» в командную строку. В этом случае нажмите еще раз Tab, чтобы увидеть весь список команд, которые начинаются на “da”.

Вы нашли нужную вам команду, ввели ее, программа вывела на экран какую-то информацию. Но вывод программы оказался настолько объемным, что не поместился на экране. Можно, конечно, перенаправить вывод в файл или программу less, но если этот вывод вы не будете использовать в дальнейшем, не нужно этого делать. Просто листайте его с помощью комбинаций клавиш Shift + PgUp и Shift+PgDn.

Комбинации клавиш системы X-Window

Сейчас вы наслаждаетесь работой в X Window. Но иногда нужно переключиться в консоль, поскольку графический терминал вам просто надоел. Это можно сделать с помощью комбинации клавиш Ctrl + Alt + Fn, где n – это номер консоли (1..6). Обратно переключиться можно с помощью комбинации клавиш Alt + F7.

Для изменения разрешения монитора вам не нужно запускать никакой конфигуратор. Просто нажмите Ctrl + “+” (на цифровой клавиатуре) для увеличения разрешения (до максимально допустимого) или Ctrl + “-“ (на цифровой клавиатуре) для уменьшения.

Небольшой совет: если у вас слабенькая плата (например, RivaTNT2 Vanta 8MB) и любимая игрушка (ясное дело – tuxracer) «тормозит», уменьшите разрешение до 640×480.

Поскольку в «чистой» системе X Window с ее классическими менеджерами окон практически никто не работает, смысла рассматривать дополнительные комбинации клавиш я не вижу. Перейдем сразу к KDE.

Комбинации клавиш среды KDE

Компания Microsoft предлагает начать работу в Windows с нажатия клавишу Пуск (Start). В KDE для этого используется кнопка с надписью K (точнее с логотипом самого KDE). Если у вас большой монитор (дюймов этак 19 или больше) и вам лень тянуть мышь (которую вы забыли почистить) из верхнего правого в нижний левый угол, нажмите Alt + F1, и меню KDE появится в текущей позиции указателя мыши.

Если вам нужно запустить одну команду, вряд ли для этого нужно запускать терминал (при условии, что вызываемая программа графическая), нажмите Alt + F2 для открытия окна запуска программы – введите команду или выберите ее из списка и нажмите Выполнить.


Рис. 1. Окно запуска программы

Переключаться между запущенными программами можно с помощью комбинации клавиш Alt + Tab – как в Windows. Если на рабочем столе – хаос, значит, пришло время перейти на другой рабочий стол. Переключаться между рабочими столами можно с помощью комбинации клавиш Ctrl + Tab или Ctrl + Fn, где n – это номер нужного вам рабочего стола. Помните, что комбинация клавиш Alt + Tab работает только в пределах текущего рабочего стола. Если у вас на первом рабочем столе запущено десятка два программ, а на втором – ни одной, при нажатии Alt + Tab на втором столе вы увидите сообщение «Нет задач».

Просмотреть весь список задач можно, нажав комбинацию Alt + F5. Если вам «не понравился» какой-то процесс, его можно «убить», вызвав менеджера задач (комбинация клавиш Ctrl + Escape).

Раскладка клавиатуры не переключается обычным способом? Не помогает, ни Ctrl, ни Ctrl + Shift? Тогда нажмите комбинацию клавиш Ctrl + Alt + K. Это комбинация сработает в KDE всегда.

Комбинации клавиш для работы с буфером обмена самые обычные – Ctrl + C (копировать), Ctrl + X (вырезать) и Ctrl + V (вставить). Кроме этих трех комбинаций, KDE предоставляет пользователю еще две:

Ctrl + Alt + V – показать меню буфера обмена
Ctrl + Alt + R – «ручная» работа с буфером обмена

А как же работа с окнами? Комбинация Alt + F4, как и в Windows, закрывает окно, а Alt + F3 – выводит меню действий с окном.

Очень полезной является комбинация Ctrl + Alt + Esc, вызывающая программу xkill. После ее вызова указатель мыши превращается в череп с косточками. Щелкнув «черепом» по какому-то окну, оно будет уничтожено, даже если программа «подвисла». Для выхода из программы xkill без уничтожения окна нажмите Esc.

В Windows можно было сфотографировать экран, нажав клавишу Print Screen. В Linux тоже это можно сделать, но для фотографирования всего рабочего стола нужно нажать Ctrl + Print Screen, а активного окна — Alt + Print Screen. После этого полученный снимок будет помещен в буфер обмена и его можно будет вставить в любое KDE-приложение, поддерживающее работу с графикой. Однако я рекомендую делать снимки экрана специальными программами, например, ksnapshot. Полученные с помощью этой программы снимки будут намного качественнее, чем снимки, полученные предложенным выше способом, а также они будут занимать мало места на диске (потому что программа ksnapshot использует формат PNG).

Еще несколько полезных шорткатов:
Alt+PtScr+S — немедленный сброс буфера на диски
Alt+PtScr+U — немедленное отключение дисков
Alt+PtScr+B — немедленная перезагрузка (действует как ресет).
Если вдруг произошло жёсткое зависание или торможение (например, из-за аппаратных глюков), но ядро ещё не упало в панику, последовательное нажатие этих комбинаций с небольшой задержкой в пару секунд будет куда безопаснее ресета
При работе с консолью Ctrl+W и Ctrl+U — удаление одного слова и целой строки, соответственно.
В терминале во время выполнения программы нажмите Ctrl-S. Это приостанавливает вывод программы.
Ctrl-Q — возобновить вывод программы 🙂
Alt+PtScr+K — прибить прогу, которая сейчас занимает консоль. Сильно помогает если слетают X-сы вследствие кривых дров.
Ctrl-L для очистки окна терминала.
Ctrl-A на начало строки
Ctrl-E в конец строки
Ctrl-R поиск по истории команд назад (часто используется)
Esc. вставить последний аргумент последней команды
Ctrl-V вставить следующий символ буквально (эскейп)
Ctrl-K удалить до конца строки
Ctrl-U удалить до начала строки
Ctrl-W удалить предыдущее слово
Esc < выполнить автодополнение файла и оформить результат в фигурные скобки для шелла
(попробуйте набрать «ls -l . <» в домашнем каталоге)

И ещё много-много чего другого. А если не хватает, можно добавить в .inputrc.

Полный список (Alt+SysRq+символ)(если кто переведет буду очень благодарен!)

‘r’ — Turns off keyboard raw mode and sets it to XLATE.
‘k’ — Secure Access Key (SAK) Kills all programs on the current virtual
console. NOTE: See important comments below in SAK section.
‘b’ — Will immediately reboot the system without syncing or unmounting
your disks.
‘c’ — Will perform a kexec reboot in order to take a crashdump.
‘d’ — Shows all locks that are held.
‘o’ — Will shut your system off (if configured and supported).
‘s’ — Will attempt to sync all mounted filesystems.
‘u’ — Will attempt to remount all mounted filesystems read-only.
‘p’ — Will dump the current registers and flags to your console.
‘t’ — Will dump a list of current tasks and their information to your
console.
‘m’ — Will dump current memory info to your console.
‘n’ — Used to make RT tasks nice-able
‘v’ — Dumps Voyager SMP processor info to your console.
‘w’ — Dumps tasks that are in uninterruptable (blocked) state.
‘x’ — Used by xmon interface on ppc/powerpc platforms.
‘0’-‘9’ — Sets the console log level, controlling which kernel messages
will be printed to your console. (‘0’, for example would make
it so that only emergency messages like PANICs or OOPSes would
make it to your console.)
‘f’ — Will call oom_kill to kill a memory hog process.
‘e’ — Send a SIGTERM to all processes, except for init.
‘g’ — Used by kgdb on ppc platforms.
‘i’ — Send a SIGKILL to all processes, except for init.
‘h’ — Will display help (actually any other key than those listed
above will display help. but ‘h’ is easy to remember 🙂

Читайте также:  Журнал открытия файлов windows

Как изменить комбинации клавиш в KDE? Откройте Центр управления и перейдите в раздел Внешний вид, Горячие клавиши (или Привязки клавиш – во второй версии KDE).

Рис. 2. Привязки клавиш

Теперь подытожим и создадим таблицу с комбинациями клавиш. Распечатайте ее и используйте до тех пор, пока не выучите нужные вам в повседневной работе комбинации.

Источник

Ctrl + C, Ctrl + D, Ctrl + Z

Комбинации клавиш Ctrl + C, Ctrl + D и Ctrl + Z часто используются в терминале для выхода из программы, работающей на переднем плане (foreground), и передачи управления Bash.

Ctrl + C выполняет прерывание процесса. По-сути убивает его. Результат действия Ctrl + D такой же. Однако разница между этими двумя способами выхода есть, и заключается она во внутреннем механизме.

Нажатие Ctrl + C заставляет терминал послать сигнал SIGINT процессу, который на данный момент его контролирует. Когда foreground-программа получает сигнал SIGINT, она обязана прервать свою работу.

Нажатие Ctrl + D говорит терминалу, что надо зарегистрировать так называемый EOF (end of file – конец файла), то есть поток ввода окончен. Bash интерпретирует это как желание выйти из программы.

При работе в конкретной программе могут срабатывать оба способа, но может только один. Так команда cat без параметров запускается в интерактивном режиме, в котором то, что вы ввели, будет тут же выводиться на экран после нажатия Enter. Выйти из программы можно как с помощью Ctrl + С, так и Ctrl + D.

Выйти из интерпретатора Питона с помощью Ctrl + C нельзя.

Комбинация клавиш Ctrl + Z посылает процессу сигнал, который приказывает ему остановиться. Это значит, что процесс остается в системе, но как бы замораживается. Само собой разумеется он уходит в бэкграунд (background) – в фоновый режим. С помощью команды bg его можно снова запустить, оставив при этом в фоновом режиме. Команда fg не только возобновляет ранее приостановленный процесс, но и выводит его из фона на передний план.

На скриншоте сначала запускается интерпретатор Питона. Далее его работа останавливается с помощью Ctrl + Z. Командой fg python3 мы возобновляем работу приложения и делаем его текущим. То, что мы вернулись в тот же самый процесс, видно по переменной a , значение которой остается доступным.

С помощью команды ps можно посмотреть процессы текущего сеанса Bash (используя ключи можно просматривать и другие процессы). А команда kill позволяет удалять ненужные.

Здесь запускается cat и приостанавливается. Далее смотрим список процессов. Ключ -9 команды kill обозначает, что мы хотим полностью избавиться от процесса. В качестве аргумента передается идентификационный номер процесса (PID).

Отметим, что во многих консольных программах управляющие комбинации с клавишей Ctrl обычно обозначаются как ^C, ^Z и т. п. То есть вместо Ctrl используется знак ^.

Также обратим внимание, что понятие «процесса» связано с понятием «одновременного выполнения нескольких программ». Процесс – это выполняющаяся программа, а точнее экземпляр выполняющейся программы, потому что в системе может существовать несколько процессов, запущенных на основе одной программы. Ядром операционной системы создается видимость одновременного выполнения множества процессов.

При необходимости системный администратор может запускать процессы, требующие длительного выполнения, в бэкграунде, а на «переднем плане» выполнять другие команды. Запустить процесс в фоне можно с помощью знака амперсанда &, который записывается в конце команды.

Если в текущем терминале было запущено и переведено в фон несколько одноименных процессов, то сделать один из них текущим с помощью команды fg имя_программы не получится. PID также не используется как аргумент для fg. Здесь используется идентификатор процесса, который возвращает команда jobs. Причем для fg его надо использовать в формате %ID.

Выполните команды sleep 10m и sleep 10s , каждую остановите с помощью Ctrl + Z. Посмотрите идентификаторы процессов с помощью jobs. Выведите из бэкграунда десятисекундный слип. Учитывалось ли время, когда процесс был остановлен? После этого сделайте текущим десятиминутный слип и прервите его.

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

Источник

Использование быстрых клавиш в командной строке Linux (BASH)

Эта статья посвящена наиболее часто используемым комбинациям клавиш при работе в командной строке Linux (в основном в командном интерпретаторе bash).

Она точно будет полезна начинающим своё знакомство с Linux и, уверен, пригодится тем, кто уже имеет опыт (не всегда годы практики учат работать быстрее).

Никогда не развивал навыка быстрой печати, но знание не одного десятка hotkey’ев, перечисленных в этом материале, позволяет набирать команды со скоростью мысли.

Я попытался продемонстрировать многие примеры при помощи анимированных gif’ок – иногда несколько кадров больше скажут, чем несколько абзацев текста.

Материал был обкатан на вебинаре, и оттуда взяты все примеры (под каждым примером указано время, когда об этом рассказывалось в видео). Видео больше часа и без монтажных склеек, в статье же вынесены все главные моменты и попытка дать более точные определения.

Общие слова и замечания

Большинство продемонстрированных клавиш стандартны для «командной строки Linux», но часть из этих комбинаций специфичны для bash (поэтому и пометил это в заголовке). На текущий момент BASH – наиболее распространенный командный интерпретатор, используемый по умолчанию в большинстве Linux-дистрибутивов. В других командных интерпретаторах или, проще говоря, shell’ах (рекомендую попробовать zsh и fish) могут быть небольшие отличия в работе. Также часть комбинаций прописана в «настройках по умолчанию» (например, в файле /etc/inputrc или в /etc/bashrc), которые тоже могут различаться в разных дистрибутивах. И бывает, что некоторые клавиши могут быть настроены и перехватываться графической оболочкой, в которой запущен командный интерпретатор.

Если вдруг что-то из указанного мной в этой статье у вас не сработало, пишите в комментариях «название — версию shell и название — версию дистрибутива».

Часть демонстрируемых клавиш относятся к «настройкам терминала». А часть – клавиши из командного интерпретатора BASH, и их можно посмотреть, почитав мануал по bash’у (огромный текст – пользуйтесь поиском):

[00:10:40]

^^^ На приведенном фрагменте из мануала: Запись «(C-r)» означает Ctrl-r , а «M->» означает Alt-> .

«M» — это «Meta-клавиша»

Из истории: «М» — это «Metа-клавиша», сейчас вместо неё используется клавиша Alt , либо клавиша Esc . Я чаще в её качестве буду использовать клавишу Alt .

Замечание: Если у кого-то настроено переключение раскладки по комбинации Alt-Shift , то учитывайте, что в комбинациях, перечисленных далее и содержащих Alt-Shift , вам надо будет использовать скорее клавишу Esc-Shift (или поменять комбинацию для переключения раскладки клавиатуры, у меня, например, раскладка переключается по CapsLock ).

[00:11:18]

^^^ Здесь показано на примере использования комбинаций для перемещения по «словам» командной строки: Alt-b (или, что то же самое, Esc-b ) и Alt-f (или, что то же самое, Esc-f )

Для демонстраций нажатых клавиш использую утилиту «screenkey».

Upd: При этом стоит упомянуть, что по умолчанию bash использует emacs-режим редактирования командной строки и поэтому многие комбинации клавиш пришли из редактора emacs. Для знающих редактор vi, могу порекомендовать переключить (добавив «set -o vi» в

/.bashrc) bash в vi-режим редактирования и пользоваться привычными комбинациями из vi.

Терминал

Итак, начнем с клавиш из настроек терминала. Их можно посмотреть, выполнив команду:
♯ stty -a

А перенастроить, например, так:
♯ stty intr НоваяКлавиша

Ctrl-c – сигнал SIGINT

Первые две комбинации клавиш достаточно важные, и часто «недавно перешедшие с Windows на Linux» НЕправильно их используют: продолжая, как в DOS, для завершения команд использовать комбинацию «Ctrl-z», что неверно. В Linux же для того, чтобы попросить (команде посылается сигнал SIGINT) приложение прервать свою работу, используется Ctrl-c .

Читайте также:  Windows cmd command current directory

[00:14:24]

Ctrl-z – сигнал SIGTSTP

А комбинация Ctrl-z используется, чтобы попросить (команде посылается сигнал SIGTSTP) приложение остановить свою работу (не завершая) – «поставить на паузу». Ну, а «разбудить» его можно командой «fg» (или «bg»).

[00:14:36]

Ctrl-d – EOF(окончание ввода данных)

Далее разберем комбинацию Ctrl-d . В выводе «stty -a» эта комбинация значится как «EOF», что означает «окончание ввода данных». Для примера покажу, как можно создать текстовый файл с определенным текстом без использования текстового редактора:

[00:15:51]

^^^ Здесь видно, что любой набираемый текст перенаправляется в файл /tmp/File.txt, и нет никакой фразы (типа «Горшочек, не вари»), которую бы команда cat восприняла как «окончание ввода» – точнее, для этого как раз и надо нажать Ctrl-d .

Также пользуюсь комбинаций Ctrl-d для того, чтобы выйти из консоли (например, после того как переключился командой su под другого пользователя или зайдя по ssh на другую машину) – вместо набора команды «exit» или «logout»:

[00:17:44]

^^^ В правом терминале отображаю историю команд.

. (а внимательный зритель догадается, какой «супер-секретный» пароль у root’а на стенде)

Ctrl-v – ввод следующего символа

Комбинация Ctrl-v позволяет вставить в командную строку следующий за ней символ, не воспринимая его как спецсимвол. (Параметр lnext в выводе «stty -a»)

[00:19:19]

^^^ Здесь для примера показываю, как в скрипте выводить строку текста с использованием табуляции (знаю, что можно использовать \t в команде echo: echo -e «\tTEXT» , но не у всех утилит есть такая возможность, а подобная необходимость вставить «спецсимвол» случается).

[00:20:38]

^^^ А в этом примере у меня есть файл «New Text Document.txt», созданный в ОС Windows при помощи программы Notepad в директории, которую я затем открыл на доступ по сети и примонтировал в Linux в директорию /mnt. Программа Notepad (в отличии от Notepad++) создает файл в DOS-формате – в конце каждой строки использует дополнительный символ «Возврат каретки». Терминалы часто по умолчанию этот символ не отображают, но он есть, и поэтому, например, команда ‘ grep «m$» /mnt/New\ Text\ Document.txt ‘ не выведет строку, заканчивающуюся на букву «m». Команда cat с опцией «-v» отображает этот символ. А для того, чтобы при выводе заменить или удалить это символ, воспользовался командой tr (хотя можно было бы использовать специальную для этого утилиту unix2dos).

Ctrl-l – очищает экран

Комбинация Ctrl-l – «очищает» экран.

[00:10:51]

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

«Работа с историей команд» – классическая тема обычно из любого начального курса по Linux (по крайней мере, среди тех курсов, которые читаются у нас в «Сетевой Академии ЛАНИТ»). И многие, кто имеет хотя бы небольшой опыт работы с командной строкой, историей команд пользуются – как минимум знают, что она есть, и используют стрелки «вверх» (отобразить предыдущую команду) и «вниз» (отобразить следующую после отображаемой команду в истории команд), чтобы выбрать, какую из ранее введенных команд либо снова выполнить, либо подредактировать и запустить отредактированную. Но помимо стрелок еще есть ряд полезных комбинаций клавиш, которые позволяют работать с историей команд, – быстрее находить нужные команды.

Ctrl-r – Поиск по истории

Комбинация Ctrl-r позволяет искать в истории команд команды, содержащие указанный далее текст.

[00:25:21]

^^^ В этом примере мне понадобилось из истории вытащить команду, содержащую текст «su»: нажав Ctrl-r и набрав искомый текст «su», я увидел самую недавнюю команду, содержащую «su»; при повторном нажатии Ctrl-r отображается предыдущая команда, содержащая «su» и т.д. При необходимости изменить команду жму стрелку «вправо» и правлю текст, а чтобы запустить команду — нажимаю Enter .

PgUp/PgDown – Поиск по истории

PgUp – отображает предыдущую команду начинающуюся с уже введенного текста, PgDown – следующую.

[00:27:35]

^^^ В этом примере перемещаюсь между командами, начинающимися с «cat». (Часто также ищу команды, начинающиеся с «sudo». Или если мне нужно снова отредактировать какой-то файл, который недавно редактировал: набираю «vi», жму несколько раз PgUp , а затем Enter .)

В дистрибутивах где это настроено — в /etc/inputrc есть строки:

Alt-_/Alt-./Alt— – вставка аргументов

Комбинация Alt-_ (выполняется нажатием Alt , Shift , — ) – вставляет последний аргумент из предыдущих команд. (Аналогично работает комбинация Esc-. или, что то же самое, Alt-. )

[00:28:32]

^^^ В данном примере видно, как повторные нажатия Alt-_ вставляют аргументы от пред-пред-…-идущих команд.

Комбинация Alt — – позволяет указать (порядковый номер с конца), какой аргумент вставить клавишей Alt-_ из предыдущей команды.

[00:30:13]

^^^ В данном примере вставляю в командную строку различные аргументы из предыдущей команды.

Alt-# – текущую команду преобразовать в комментарий

Бывает, во время набора очень длинной команды понимаю, что мне нужно что-нибудь посмотреть или дополнительно сделать (например, глянуть, какие файлы есть в определенной директории, прочитать мануал по команде, установить нужный пакет…). Что делать с уже набранным текстом? Хотелось бы посмотреть нужную информацию и продолжить набирать команду, а не начинать печатать её сначала. Alt-# (выполняется нажатием Alt , Shift , 3 . Также можно использовать Esc-# ) – преобразует текущую набранную команду в комментарий в истории – добавляет символ «#» в начало строки и добавляет полученную строку в историю команд.

[00:32:03]

Ctrl-o – повтор команд из истории

Комбинация Ctrl-o позволяет повторять серию команд из истории. То есть нужно из истории команд стрелками выбрать первую команду из серии и нажать Ctrl-o – это выполнит текущую команду и выведет из истории следующую. Дальше можно продолжать нажимать Ctrl-o с тем же эффектом.

[00:33:58]

^^^ В примере я написал три команды: одна увеличивает на 1 переменную, которой соответствует год; вторая выводит переменную-год; третья показывает, сколько дней в феврале в указанном году. Дальше, нажимая Ctrl-o , повторяю эту серию из трех команд много раз (один кадр соответствует трем нажатиям).

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

Tab – автодополнение (в контексте)

Во многих командных интерпретаторах (и в bash в том числе) используется такая возможность, как автодополнение. Как минимум нужно знать, что по нажатию клавиши Tab дописывается название команды. В bash по умолчанию обычно настроено так, что если имеется только один вариант дополнения, то он дописывается по нажатию Tab (также можно использовать Ctrl-i и Esc-Esc ). Когда вариантов дополнения много, то по первому нажатию Tab дописывается только общая часть (если она есть). А по второму нажатию Tab отображается список всех доступных вариантов. Дальше можно набрать еще символов – уточнить, какое из дополнений нужно, и снова нажать Tab . То же самое с другими дополнениями: имен файлов, имен переменных.

[00:39:20]

^^^ Здесь, например, смотрю (нажав дважды Tab ), что есть несколько команд, начинающихся с «if», добавив «c» и нажав Tab , получаю набранной команду «ifconfig».

[00:39:31]

^^^ В этом примере дополняю аргументы команды (здесь имена файлов). Также видно, что в случае, когда вариантов много и все не умещаются в окне терминала, их список отображается утилитой для постраничного просмотра (также при очень большом списке вариантов выдается запрос вида «Display all 125 possibilities? (y or n)» или, как в этом примере, при малом количестве — «—More—».

Дополнения имен пользователей, переменных

Часто, когда дописываются аргументы команд по Tab , дописываются имена файлов. Но стоит также отметить, что, в зависимости от контекста, по Tab дописываются и имена переменных (аргументы, начинающиеся с символа «$»), имена пользователей (аргументы, начинающиеся с символа «

[00:40:36]

^^^ Здесь, чтобы набрать «$HISTFILESIZE», вместо 13 символов набрал 8 символов ( $ H I Tab F Tab S Tab ). Помимо того, что так быстрее, это еще и позволяет допускать меньше ошибок при наборе команд, так как не просто печатаю текст, а выбираю из списка установленных переменных.

[00:41:44]

^^^ Здесь дописываю имена пользователей (фактически пишу адрес домашней директории).

Также bash может дополнять не потому, что набранный текст начинается с определенного символа, а по определенным комбинациям клавиш.

Список того, что может дополнять bash, можно посмотреть командой:

♯ bind -P | grep «complet»

Так, например, видно, что:

– покажет список имен пользователей, начинающихся с набранных символов, а дополнить комбинацией Esc-

Ctrl-x @ – список имен машин (согласно /etc/hosts), начинающихся с набранных символов, а дополнить – Esc-@ ;

Ctrl-x $ – список имен переменных, заданных в этой сессии (можно их также посмотреть командой set), а дополнить – Esc-$ ;

Ctrl-x ! – список команд (согласно доступных: $PATH, alias, функций, встроенных команд), а дополнить – Esc-! ;

Ctrl-x / – список имен файлов, а дополнить – Esc-/ .

Alt-* – вставить дополнения, Ctrl-x * – развернуть шаблон

Esc-* (точнее, Esc Shift 8 ) или, что, то же самое, Alt-* (точнее, Alt , Shift , 8 ), вставит все варианты дополнения в командную строку. Аналогично можно развернуть список файлов, переменных, имен пользователей.

В примерах ниже разворачиваю список файлов:

[00:44:55]

[00:46:30] ♯ bind -P | grep ‘*’

Ctrl-x * – развернет уже написанный в командной строке шаблон, как в примере ниже:

[00:48:39]

Редактирование

Ctrl-w/u/k – вырезать слово/начало/конец строки

Ctrl-w – вырезать слово (от текущего положения курсора до ближайшего ранее в строке пробела/табуляции). Вырезанное можно затем вставить комбинацией Ctrl-y.

Читайте также:  Installing windows load driver

[00:52:52]

Ctrl-u – вырезать начало строки (от текущего положения курсора. Если курсор в конце строки, то вырежет целиком строку). Вырезанное можно затем вставить комбинацией Ctrl-y .

Ctrl-k – вырезать конец строки (от текущего положения курсора. Если курсор в начале строки, то вырежет целиком строку). Вырезанное можно затем вставить комбинацией Ctrl-y .

Ctrl-y – вставить вырезанное

Ctrl-y – вставить вырезанный фрагмент командной строки. (В bash используется свой буфер для хранения вырезанных фрагментов – называется «kill ring»).

Важно: Удобно использовать с Alt-y (позволяет «прокручивать» варианты вставки из буфера).

Ctrl-x Ctrl-e – редактировать в $EDITOR

Нажав комбинацию Ctrl-x Ctrl-e , можно редактировать командную строку в любом внешнем редакторе (по умолчанию часто используется редактор vim; переназначить редактор можно, указав в переменной EDITOR). Часто редакторы имеют больше продвинутых возможностей в редактировании текста. Особенно удобно, если редактор умеет подкрашивать синтаксис команд и имеет различные встроенные инструменты для быстрого поиска и исправления ошибок.

Также эту возможность часто использую, когда набранную команду, разросшуюся до нескольких строк, хочу сохранить в виде отдельного скрипта – тогда переключаю редактирование команды в редактор и в нём сохраняю набранный текст в файл, как в примере ниже:

[00:53:40]

Ctrl-_ – undo

Ctrl-_ (точнее, нужно нажать Ctrl Shift — ) или Ctrl-x Ctrl-u – отменяет последние правки при редактировании командной строки.

Перемещение

Ctrl-a/e – в начало/конец строки

Ctrl-a и Ctrl-e – перемещение в начало и конец командной строки соответственно. Можно, конечно, пользоваться клавишами Home и End , но так быстрее при использовании, например, таких клавиш, как вырезание Ctrl-w и вставка Ctrl-y .

[00:52:05]

Alt-b/f и Ctrl-←/→ – предыдущее/следующие слово

Alt-b (и тот же эффект у Ctrl-Left ) – переход в начало предыдущего слова.

Alt-f (и тот же эффект у Ctrl-Right ) – переход в конец следующего слова.

[00:50:10]

Настройки

Подробнее значения действия редактирования командной строки bash можно посмотреть в мануал по bash’у. Действия, упомянутые в этой статье (в порядке упоминания):

clear-screen (C-l) Clear the screen, then redraw the current line, leaving the current line at the top of the screen.

reverse-search-history (C-r) Search backward starting at the current line and moving `up’ through the history as necessary. This is an incremental search.

reverse-search-history (C-r) Search backward starting at the current line and moving `up’ through the history as necessary. This is an incremental search.

history-search-backward Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search.

history-search-forward Search forward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search.

yank-last-arg (M-., M-_) Insert the last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like yank-nth-arg. Successive calls to yank-last-arg move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last word, as if the «!$» history expansion had been specified.

digit-argument (M-0, M-1, . M—) Add this digit to the argument already accumulating, or start a new argument. M— starts a negative argument.

insert-comment (M-#) Without a numeric argument, the value of the readline comment-begin variable is inserted at the beginning of the current line. . The default value of comment-begin causes this command to make the current line a shell comment.

operate-and-get-next (C-o) Accept the current line for execution and fetch the next line relative to the current line from the history for editing. A numeric argument, if supplied, specifies the history entry to use instead of the current line.

complete (TAB) Attempt to perform completion on the text before point. Bash attempts completion treating the text as a variable (if the text begins with $), username (if the text begins with

), hostname (if the text begins with @), or command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted.

complete-username (M-

) Attempt completion on the text before point, treating it as a username.

possible-username-completions (C-x

) List the possible completions of the text before point, treating it as a username.

complete-hostname (M-@) Attempt completion on the text before point, treating it as a hostname.

possible-hostname-completions (C-x @) List the possible completions of the text before point, treating it as a hostname.

complete-variable (M-$) Attempt completion on the text before point, treating it as a shell variable.

possible-variable-completions (C-x $) List the possible completions of the text before point, treating it as a shell variable.

complete-command (M-!) Attempt completion on the text before point, treating it as a command name. Command completion attempts to match the text against aliases, reserved words, shell functions, shell builtins, and finally executable filenames, in that order.

possible-command-completions (C-x !) List the possible completions of the text before point, treating it as a command name.

complete-filename (M-/) Attempt filename completion on the text before point.

possible-filename-completions (C-x /) List the possible completions of the text before point, treating it as a filename.

insert-completions (M-*) Insert all completions of the text before point that would have been generated by possible-completions.

glob-expand-word (C-x *) The word before point is treated as a pattern for pathname expansion, and the list of matching filenames is inserted, replacing the word. If a numeric argument is supplied, an asterisk is appended before pathname expansion.

unix-word-rubout (C-w) Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring.

unix-line-discard (C-u) Kill backward from point to the beginning of the line. The killed text is saved on the kill-ring.

kill-line (C-k) Kill the text from point to the end of the line.

yank (C-y) Yank the top of the kill ring into the buffer at point.

yank-pop (M-y) Rotate the kill ring, and yank the new top. Only works following yank or yank-pop.

undo (C-_, C-x C-u) Incremental undo, separately remembered for each line.

backward-word (M-b) Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits).

forward-word (M-f) Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits).

bind -P

Можно посмотреть, какие клавиши к каким действиям редактирования командной строки bash привязаны – для этого можно воспользоваться командой «bind -P».

Есть и много других интересных комбинаций – для примера можно глянуть:

Клавиши, переключающие регистр букв:
♯ bind -P | egrep «case|capitalize»

[00:58:35]

Клавиши, меняющие слова/буквы местами:
♯ bind -p | grep «transpose»

Также можно настроить свои привязки – например, чтобы по комбинации «Ctrl-f» выводился результат команды «date»:

[01:00:50]

/etc/inputrc (настройки библиотеки readline)

Так как bash и многие shell’ы используют библиотеку readline для взаимодействия с командной строкой, то можно перенастроить соответствия комбинаций клавиш и действий в /etc/inputrc.

Например, такие строки меняют поведение по умолчанию клавиш «Вверх» и «Вниз»

. вместо предыдущей/последующей команды они будут включать поиск по истории команд – очень удобно, часто этим пользуюсь:

Коды клавиш можно посмотреть, используя комбинацию Ctrl-v , упомянутую выше в этой статье.

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

Если, по вашему мнению, стоило упомянуть какие-то еще полезные комбинации — напишите в комментариях.

На этом всё. Надеюсь, было полезно. Если есть какие-то вопросы и уточнения, пишите, я буду рад ответить. Также буду рад упоминаниям в комментариях, что для вас оказалось полезным/новым в этой статье. Так я пойму, что стоило упоминать, а что можно было и пропустить.

Ну, и приходите к нам учиться в «Сетевую Академию ЛАНИТ»!

А в завершение конкурс «для внимательных зрителей».

Кто первым правильно напишет в комментариях ответ на три вопроса, получит 25% скидку на курс по написанию Bash-скриптов:

Дата, когда проходил вебинар «Сетевой Академии ЛАНИТ» по теме этой статьи.

Какой пароль у пользователя root на системе, используемой на вебинаре?

Источник

Оцените статью