Как вернуться назад в терминале linux
Перейти к содержимому

Как вернуться назад в терминале linux

  • автор:

Как использовать команду History в Bash в Linux

Работая в серверной среде, вы будете проводить много времени в командной строке. Скорее всего, вы будете использовать оболочку bash, которая установлена по умолчанию в большинстве дистрибутивов. Во время сеанса терминала вы, скорее всего, будете часто повторять некоторые команды и еще чаще вводить вариации этих команд. Хотя вначале многократный ввод каждой команды может быть хорошей практикой, в какой-то момент это переходит грань, за которой уже нет ничего страшного и раздражающего.

К счастью, оболочка bash имеет довольно хорошо развитые функции истории. Научившись эффективно использовать историю bash и манипулировать ею, вы сможете тратить меньше времени на набор текста и больше времени на реальную работу. Многие разработчики знакомы с философией DRY (Don’t Repeat Yourself). Эффективное использование истории bash позволит вам действовать ближе к этому принципу и ускорит ваш рабочий процесс.

Предварительные условия

Чтобы следовать этому руководству, вам потребуется доступ к компьютеру с операционной системой на базе Linux. Это может быть либо виртуальный частный сервер, к которому вы подключились с помощью SSH, либо ваша локальная машина.

Установка параметров истории по умолчанию

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

Bash позволяет настроить количество команд, которые он сохраняет в истории. На самом деле для этого есть два отдельных параметра: параметр HISTFILESIZE определяет, сколько команд будет храниться в файле истории, а HISTSIZE — количество команд, хранящихся в памяти для текущего сеанса.

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

Чтобы изменить эти параметры, откройте файл

/.bashrc в удобном для вас текстовом редакторе. Здесь мы будем использовать nano:

Файл</p>
<p>Найдите параметры HISTSIZE и HISTFILESIZE. Если они установлены, смело изменяйте их значения. Если этих параметров нет в вашем файле, добавьте их сейчас. Для целей данного руководства вполне подойдет сохранение 10000 строк на диск и загрузка последних 5000 строк в память. Это консервативная оценка для большинства систем, но вы можете изменить эти значения в меньшую сторону, если заметите влияние на производительность:</p>
<p>По умолчанию, bash пишет свою историю в конце каждого сеанса, перезаписывая существующий файл обновленной версией. Это означает, что если вы вошли в систему с несколькими сессиями bash, история будет сохранена только в последней из них.</p>
<p>Вы можете обойти это, установив параметр histappend, который будет добавлять, а не перезаписывать историю. Возможно, этот параметр уже установлен, но если это не так, вы можете включить его, добавив эту строку:</p><div class='code-block code-block-1' style='margin: 8px 0; clear: both;'>
<!-- 1russgps -->
<script src=

Если вы хотите, чтобы bash немедленно добавлял команды в вашу историю, а не ждал окончания каждого сеанса (чтобы команды в одном терминале были мгновенно доступны в другом), вы также можете задать или добавить команду history -a к параметру PROMPT_COMMAND, который содержит команды, выполняемые перед каждым новым приглашением командной строки.

Чтобы настроить это правильно, вам нужно будет изменить PROMPT_COMMAND в bash, чтобы изменить способ записи команд в файл истории и в память текущего сеанса оболочки:

  1. Нужно немедленно добавлять в файл истории с помощью команды history -a.
  2. Затем нужно очистить текущую историю в сеансе командного интерпретатора с помощью команды history -c.
  3. Наконец, чтобы загрузить обновленную историю обратно в сеанс оболочки, используйте команду history -r.

Если собрать все эти команды по порядку в переменной PROMPT_COMMAND, то получится следующее, что вы можете вставить в свой файл .bashrc:

Когда вы закончите, сохраните файл и выйдите. Если вы редактировали свой файл .bashrc с помощью nano, сделайте это, нажав CTRL + X, Y, а затем ENTER.

Чтобы внести изменения, либо выйдите из системы и снова войдите в нее, либо создайте исходный текст файла, выполнив команду:

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

Просмотр предыдущей истории Bash

Для просмотра истории bash можно использовать команду history. Она выведет наши последние команды, по одной команде в строке. В результате будет выведено, по крайней мере, то количество строк, которое вы выбрали для переменной HISTSIZE. Вероятно, на данном этапе оно будет меньше:

history

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

Вы можете сократить вывод, указав номер после команды. Например, если вы хотите вернуть только последние 5 команд, которые были выполнены, вы можете ввести:

history 5

Чтобы найти все команды истории, содержащие определенную строку, вы можете передать результаты в команду grep, которая ищет в каждой строке заданную строку. Например, вы можете найти строки, содержащие cd, набрав:

history | grep cd

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

Выполнение команд из истории Bash

Печать истории команд может быть полезной, но она не поможет вам получить доступ к этим командам, кроме как в качестве ссылки.

Вы можете вспомнить и немедленно выполнить любую команду, возвращенную операцией истории, по ее номеру, которому предшествует восклицательный знак (!). Если результаты работы с историей совпадают с результатами из предыдущего раздела, вы можете быстро просмотреть страницу man для команды history, набрав:

Это немедленно вызовет и выполнит команду, связанную с номером истории 7.

Выполнение команд из истории Bash

Вы также можете выполнять команды относительно вашей текущей позиции, используя синтаксис !-n, где «n» заменяется количеством предыдущих команд, которые вы хотите вызвать.

В качестве примера, допустим, вы выполнили следующие две команды:

Если вы хотите вызвать и выполнить команду, которая была запущена перед последней командой (командой ls), вы можете набрать !-2:

Выполнение команд из истории Bash

Чтобы повторно выполнить последнюю команду, вы можете набрать !-1. Однако bash предоставляет ярлык, состоящий из двух восклицательных знаков, который подставит последнюю команду и выполнит ее:

Многие используют это сочетание, когда набирают команду, но забывают, что для ее выполнения нужны привилегии sudo. Набрав sudo . вы повторно выполните команду с sudo перед ней:

Прокрутка истории Bash

Существует несколько способов прокрутить историю bash, помещая каждую последующую команду в командную строку для редактирования.

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

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

Если перемещение руки к клавишам со стрелками кажется вам слишком хлопотным, вы можете переместиться назад в истории команд с помощью комбинации CTRL + P и использовать комбинацию CTRL + N, чтобы снова переместиться вперед по истории.

Если вы хотите вернуться к текущей командной строке, вы можете сделать это, нажав META + >. В большинстве случаев «мета» — это клавиша ALT, поэтому META + > означает нажатие ALT + SHIFT + . Это удобно, если вы оказались далеко в прошлом и хотите вернуться к пустой подсказке.

Вы также можете перейти к первой строке истории команд, выполнив обратный маневр и набрав META + <. Обычно это означает нажатие ALT + SHIFT + ,.

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

  • Клавиша со стрелкой вверх: Прокрутка истории назад
  • CTRL + P: прокрутка истории назад
  • Клавиша со стрелкой вниз: Прокрутка вперед в истории
  • CTRL + N: Прокрутка вперед в истории
  • ALT + SHIFT + . Перейти в конец истории (самый последний)
  • ALT + SHIFT + ,: Переход к началу истории (самое последнее)

Поиск в истории Bash

Хотя передача команды history через grep может быть полезным способом сузить результаты, во многих ситуациях это не идеально.

Bash включает функцию поиска по истории. Типичный способ использования — поиск в истории в обратном порядке (самые последние результаты возвращаются первыми) с помощью комбинации клавиш CTRL + R.

Например, вы можете набрать CTRL + R и начать вводить часть предыдущей команды. Вам нужно набрать только часть команды. Если вместо нее будет введена ненужная команда, вы можете снова нажать CTRL + R для получения следующего результата.

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

Поиск в истории Bash

Помните, что во многих терминалах комбинация CTRL + S используется для приостановки сеанса работы с терминалом. Это перехватит любые попытки передать CTRL + S в bash и «заморозит» ваш терминал. Чтобы разморозить сеанс, наберите CTRL + Q, чтобы отменить приостановку.

Эта функция приостановки и возобновления работы не нужна в большинстве современных терминалов, и вы можете отключить ее без проблем, выполнив следующую команду:

stty — это утилита, которая позволяет изменять настройки терминала из командной строки. Вы можете добавить эту команду stty -ixon в конец вашего файла

/.bashrc, чтобы сделать это изменение постоянным.

Если теперь вы снова попробуете искать с помощью CTRL + S, это должно сработать, как и ожидалось, чтобы позволить вам искать вперед.

Поиск после ввода части команды

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

Правильный способ поиска с использованием того, что уже находится в командной строке, заключается в перемещении курсора в начало строки с помощью CTRL + A, вызове обратной истории с помощью CTRL + R, вставке текущей строки в поиск с помощью CTRL + Y, а затем повторном использовании CTRL + R для поиска в обратном направлении.

Например, предположим, вы хотите обновить кэш пакетов в системе Ubuntu. Вы уже набирали это недавно, но вспомнили об этом только после того, как снова набрали sudo в подсказке:

В этот момент вы понимаете, что эту операцию вы определенно выполняли в течение последнего дня или около того. Вы можете нажать CTRL + A, чтобы переместить курсор в начало строки. Затем нажмите CTRL + R, чтобы вызвать обратный инкрементный поиск истории. Это имеет побочный эффект копирования всего содержимого командной строки, которое было после позиции курсора, и помещения его в буфер обмена.

Затем нажмите CTRL + Y, чтобы вставить в поиск сегменты команд, которые вы только что скопировали из командной строки. И наконец, нажмите CTRL + R для перемещения назад в истории поиска команд, содержащих только что вставленное содержимое.

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

Вместо того, чтобы думать об этих комбинациях клавиш как об отдельных комбинациях, возможно, вам поможет представление о них как об одной составной операции. Вы можете просто удерживать нажатой клавишу CTRL, а затем последовательно нажать клавиши A, R, Y, а затем R.

Знакомство с более продвинутым расширением истории

В этом руководстве уже были рассмотрены некоторые из наиболее фундаментальных методов расширения истории, которые предоставляет bash. Вот некоторые из них, которые мы уже рассмотрели:

  • . Расширение до последней команды
  • !n: Расширить команду с номером истории «n».
  • !-n: Развернуть до команды, которая была за «n» количество команд до текущей команды в истории.

Десигнаторы событий

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

Например, вы можете выполнить последнюю команду ssh, которую вы запускали, набрав что-то вроде:

Это позволит найти в истории команд строки, начинающиеся с ssh. Если вы хотите найти строку, которая не находится в начале команды, вы можете окружить ее символами ? Например, чтобы повторить предыдущую команду поиска apt-cache, вы можете выполнить следующую команду, чтобы найти и выполнить ее:

Еще один обозначитель событий, который можно попробовать, заключается в замене строки в последней команде на другую. Для этого введите символ каретки (^), за которым следует строка, которую вы хотите заменить, затем сразу за ним еще одну каретку, заменяющую строку и последнюю каретку в конце. Не включайте пробелы, если они не являются частью строки, которую вы хотите заменить, или частью строки, которую вы хотите использовать в качестве замены:

Это вызовет предыдущую команду (так же, как !!), найдет в строке команды экземпляр original и заменит его на replacement. Затем команда будет выполнена с использованием строки-заменителя.

Это полезно для решения таких проблем, как опечатки. Например, допустим, вы по ошибке выполнили эту команду при попытке прочитать содержимое файла /etc/hosts:

Вывод
cat: /etc/hosst: Нет такого файла или каталога

Вместо того чтобы переписывать всю команду, вы можете выполнить следующую:

Это исправит ошибку в предыдущей команде и выполнит ее успешно.

Десигнаторы событий

Словесные обозначения

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

Для этого команда делится на «слова», которые определяются как любой фрагмент, разделенный пробелами. Это позволяет использовать некоторые интересные возможности для взаимодействия с параметрами команды.

Нумерация слов начинается с начальной команды как «0», первого аргумента как «1» и продолжается далее.

Например, вы можете перечислить содержимое каталога, а затем решить, что хотите перейти в этот каталог. Это можно сделать, выполнив следующие операции:

В подобных случаях, когда вы выполняете последнюю команду, вы можете сократить ее, удалив вторую !, а также двоеточие:

Это будет действовать точно так же.

Вы можете обозначить первый аргумент косым знаком (^), а последний аргумент — знаком доллара ($), если это имеет смысл для ваших целей. Это более полезно при использовании диапазонов вместо конкретных чисел. Например, у вас есть три способа получить все аргументы из предыдущей команды в новую команду:

Одиночный * распространяется на все части вызываемой команды, кроме начальной команды. Аналогично, вы можете использовать число, за которым следует *, чтобы обозначить, что все после указанного слова должно быть включено.

Модификаторы

Еще одна вещь, которую можно сделать, чтобы дополнить поведение строки истории, которую вы вызываете, — это модифицировать поведение вызова для манипулирования самим текстом. Для этого можно добавить модификаторы после символа двоеточия (:) в конце расширения.

Например, вы можете отрезать путь к файлу с помощью модификатора h (он означает «голова»), который удаляет путь до последнего символа косой черты (/). Имейте в виду, что это не будет работать так, как вам нужно, если вы используете это для усечения пути к каталогу, а путь заканчивается косой чертой.

Это часто используется, если вы изменяете файл и понимаете, что хотите перейти в каталог файла, чтобы выполнить операции над связанными файлами.

Например, выполните эту команду, чтобы вывести на экран содержимое лицензии на программное обеспечение с открытым исходным кодом:

Убедившись, что лицензия подходит для ваших нужд, вы можете захотеть перейти в каталог, где она хранится. Это можно сделать, вызвав команду cd по цепочке аргументов и отрезав имя файла в конце:

Если вы выполните команду pwd, которая выводит ваш текущий рабочий каталог, то обнаружите, что вы перешли в каталог, включенный в предыдущую команду:

Как только вы окажетесь там, вы, возможно, захотите снова открыть файл лицензии, чтобы перепроверить его, на этот раз в пейджере типа less.

Для этого вы можете выполнить обратную предыдущей манипуляцию, отрезав путь и используя только имя файла с модификатором t, который означает «tail». Вы можете найти последнюю операцию cat и использовать флаг t для передачи только имени файла:

Вы можете с тем же успехом сохранить полное абсолютное имя пути, и в этом случае команда будет работать правильно. Однако в других случаях это может быть не так. Например, вы можете просматривать файл, вложенный в несколько подкаталогов ниже вашего текущего рабочего каталога, используя относительный путь, а затем перейти в подкаталог с помощью модификатора «h». В этом случае вы уже не сможете полагаться на имя относительного пути, чтобы добраться до файла.

Еще один чрезвычайно полезный модификатор — это модификатор r, который удаляет расширение, идущее в конце. Это может быть полезно, если вы используете tar для извлечения файла и хотите после этого перейти в полученный каталог. Предполагая, что полученный каталог имеет то же имя, что и файл, вы можете сделать примерно следующее:

Если ваш tarball использует расширение tar.gz вместо tgz, вы можете просто передать модификатор дважды:

Аналогичный модификатор, e, удаляет все, кроме идущего в конце расширения.

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

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

Например, представьте, что вы запустили команду find в своем домашнем каталоге, а затем поняли, что хотели запустить ее из корневого каталога (/). Вы можете проверить правильность замен следующим образом (при условии, что исходная команда связана с номером 119 в вашей истории):

Если полученная команда верна, вы можете выполнить ее с помощью комбинации клавиш CTRL + P.

Вы также можете сделать замену в команде, используя синтаксис s/original/new/.

Например, вы могли бы сделать это, набрав:

Это заменит первый экземпляр шаблона поиска (

Вы можете заменить каждое совпадение, передав вместе с s флаг g. Например, если вы хотите создать файлы с именами file1, file2 и file3, а затем создать каталоги dir1, dir2, dir3, вы можете сделать следующее:

Конечно, более интуитивно понятным в этом случае может быть просто выполнить mkdir dir1 dir2 dir3. Однако, освоив использование модификаторов и других инструментов расширения истории bash, вы сможете значительно расширить свои возможности и производительность работы в командной строке.

Заключение

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

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

Как вернуться назад в консоли Linux?

Разморозить терминал Linux после случайного нажатия Ctrl+S Но если вы используете эту команду в терминале Linux, он заморозится. Не волнуйтесь — не нужно закрывать терминал, чтобы разморозить его. Вместо этого нажмите Ctrl+Q — и терминал снова заработает.

Как отменить последнее действие в Linux?

Чтобы отменить изменения в Vim и Vi, используйте команды u :u или :undo : Если вы находитесь в режиме вставки или в любом другом режиме, нажмите Esc чтобы вернуться в нормальный режим, который также известен как командный режим. Введите u чтобы отменить последнее изменение.

Cписок горячих клавиш в терминале Linux

Cписок горячих клавиш в терминале Linux

Запуск терминала в Ubuntu непосредственно на рабочем столе также возможен по комбинациям клавиш.

  • Ctrl+Alt+T — запускает окно терминала на активном рабочем столе.
  • Alt+F2 — откроется окно «Выполнить», где достаточно вписать «lxterminal» и подтвердить кнопкой Ok.
  • Ctrl+Alt+(F1-F6) — откроется системная консоль (можно запустить до шести консолей одновременно), графическим аналогом которой и является терминал. Хотя эти комбинации относятся к системным, а не к терминалу, но с их помощью также можно получить доступ к режиму ввода команд.
  • Ctrl+Alt+F7 — возврат из консоли на рабочий стол.
  • Win+T — вызов терминала в Linux Ubuntu с рабочим окружением XFCE.

Управление окнами и вкладками

Нередко встречаются ситуации, когда нужно использовать несколько окон терминала. Это неудобно, поэтому в терминале предусмотрена возможность работать с различными вкладками в одном окне.

  • Ctrl+Shift+N — открыть терминал, не закрывая запущенный.
  • Ctrl+Shift+Q — закрыть активный терминал.
  • Ctrl+Shift+T — открыть еще одну вкладку.
  • Ctrl+Shift+D — открепить вкладку в отдельное окно из общего.
  • Ctrl+Shift+W — закрыть активную вкладку.
  • Ctrl+PageUp — открыть предыдущую вкладку.
  • Ctrl+PageDown — открыть следующую вкладку.
  • Alt+(1,… n) — перейти на указанную по номеру вкладку.

Управление отображением

С помощью представленных ниже комбинаций можно управлять информацией, отображаемой в окне терминала.

  • Ctrl+L — полностью очищает экран от записей. Вместо сочетания клавиш можно использовать команду «clear».
  • Ctrl+S — остановка вывода в Bash. Актуально во время запуска команд, отображающих огромное количество выходных данных. Команда продолжит выполняться, но вывод результатов ее работы отображаться не будет.
  • Ctrl+Q — вернуть вывод данных, если он был остановлен с использованием Ctrl+S.

Управление курсором

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

  • Ctrl+A(Home) — быстрый переход в начало строчки.
  • Ctrl+E(End) — быстрый переход в конец строчки.
  • Alt+B — перемещение курсора влево на одно слово (назад).
  • Ctrl+B — перемещение на символ влево (назад).
  • Alt+F — перемещение на слово вперед.
  • Ctrl+F — перемещение на символ вперед.
  • Ctrl+XX — быстрое перемещение на начало строчки и возврат на прошлую позицию. Это сочетание клавиш используется, когда необходимо изменить что-то в начале строки и этой же комбинацией перейти на исходное место курсора.

Удаление текста и исправление опечаток

Исправлять опечатки или удалять ненужные символы можно такими комбинациями:

  • Ctrl+D(Delete) — удаляет один символ после курсора.
  • Alt+D — удаление всех символов после курсора в текущей строке.
  • Ctrl+H(Backspace) — удаление символа перед курсором.
  • Alt+Backspace — удаление слова перед курсором.
  • Alt+T — замена текущего слова на предыдущее.
  • Ctrl+T — поменять местами два расположенных рядом последних символа. Такая комбинация клавиш пригодится при необходимости быстро исправить опечатку, когда символы были написаны неправильно.
  • Ctrl+_ — отменяет последний ввод. Использовать можно не один раз, пока не будет получен требуемый результат.

Работа с буфером обмена

В Bash также можно работать с буфером обмена, вырезая и вставляя текст.

  • Ctrl+W — вырезать слово перед курсором (и скопировать в буфер обмена).
  • Ctrl+K — вырезать строку, набранную после курсора.
  • Ctrl+U — вырезать строку перед курсором.
  • Ctrl+Y — вставить последний текст, добавленный в буфер обмена.
  • Shift+Insert — вставить текст из буфера обмена в строку терминала.

Операции форматирования

В Bash с помощью горячих клавиш (hotkeys) можно быстро изменять регистр символов, что подходит для исправления «правильных» опечаток.

  • Alt+U — все символы, начиная от курсора до конца слова будет преобразован в верхний регистр.
  • Alt+L — все символы, начиная от курсора до конца слова, преобразовывается в нижний регистр.
  • Alt+C — расположенный под курсором символ преобразовывается в верхний регистр, причем курсор переместится в конец слова.

Функция автодополнения с клавишей Tab

Данная функция относится к одной из наиболее полезных в терминале. Во время ввода имени файла, каталога или команды достаточно нажать Tab, после чего ввод должен автоматически завершиться. Если таковой возможности нет, в окне терминала будут отображены всевозможные способы дополнения, позволяя пользователю дальше печатать и нажимать Tab для завершения ввода.

Tab — автоматическое завершение набора имени файла, директории или команды.

Управление историей введенных команд

Чтобы избежать частых переписываний одинаковых команд, вспомнить ранее введенную и забытую и выполнить другие операции, можно посмотреть их историю. Она хранится в файле по пути «

/.bash_history», который можно открыть через любой текстовый редактор и просто ознакомиться с ней наглядно.

  • Ctrl+P(Стрелка вверх) — показывает предыдущую выполненную команду из сохраненной истории Bash. Нажимать можно не один раз, до момента пока не будет найдена нужная.
  • Ctrl+N(Стрелка вниз) — нажатие клавиш отобразит следующую команду из истории. Также можно нажимать неограниченное количество раз.
  • Alt+R — если команда была найдена через историю, а затем отредактирована, данное сочетание клавиш отменит эту правку.

В терминале также доступна функция поиска ранее запущенных команд.

  • Ctrl+R — открывает режим поиска команд. Достаточно удержать эту комбинацию и начать набирать команду, что позволит найти ее в истории.
  • Ctrl+O — выполнение найденной с использованием Ctrl+R команды.
  • Ctrl+G — завершить работу с режимом поиска по истории, не выполняя команду.

Контроль над процессами

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

Работаем в терминале Linux как профи: подборка полезных команд

Обложка: Работаем в терминале Linux как профи: подборка полезных команд

Видели про-юзеров Linux, которые эффективно работают в терминале? Хотите так же? Не вопрос: в этой статье мы собрали некоторые из полезных команд, которые помогут вам сэкономить время и повысить продуктивность.

Использование табов для автодополнения

Когда вы начинаете что-то вводить в терминале, вы можете нажать Tab и вам будут предложены возможные варианты продолжения, которые начинаются с введённой вами строки.

Например, если вы хотите скопировать файл с именем file1.txt , вы можете ввести только cp f , нажать Tab и увидеть возможные варианты.

Также Tab можно использовать для автодополнения команд.

Возвращение в последнюю рабочую директорию

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

Она вернёт вас в последнюю рабочую директорию и вам не придётся вручную вводить длинный путь.

Примечание Последняя рабочая директория хранится в переменной окружения OLDPWD ; вы можете использовать эту переменную для своих целей (попробуйте echo $OLDPWD ) или даже подложить команде cd — другой путь ( OLDPWD=/usr/bin cd — ).

Возвращение в домашнюю директорию

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

А вообще, можно ограничиться командой cd и получить тот же результат. В большинстве современных дистрибутивов Linux эта команда должна сработать.

Вывести содержимое каталога

Вы, наверное, догадываетесь, какая команда нужна для отображения содержимого каталога. Всем известно, что для этого можно использовать ls -l .

Однако не все знают, что можно обойтись командой ll .

Конечно, всё зависит от дистрибутива, но в большинстве случаев вы сможете воспользоваться этой командой.

Примечание На самом деле, ll является не отдельной командой, а псевдонимом для ls -l .

Запуск нескольких команд за раз

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

Вместо этого вы можете использовать разделитель ; . Таким образом можно запустить несколько команд на одной строке. Вам не нужно ждать, пока какая-то из команд завершит свою работу, чтобы запустить следующую.

command_1; command_2; command_3

Примечание При запуске команд таким образом, они выполняются не параллельно, а последовательно. Если вам нужен именно первый вариант, то используйте конструкцию (command_1 &); (command_2 &) .

Запуск нескольких команд за раз при условии, что предыдущая команда была выполнена успешно

Как запускать несколько команд за раз вы уже знаете. А как убедиться, что команды не завершились с ошибкой?

Допустим, вы хотите собрать код и запустить его в случае успешной сборки.

В этом случае вы можете использовать разделитель && , который запускает следующую команду только при условии, что предыдущая успешно завершилась.

Как пример использования && можно привести команду sudo apt update && sudo apt upgrade для обновления системы через терминал на системах, основанных на Debian.

Время убивать

Есть несколько способов «убить» программу. Команда killall сделает это по имени, а kill требуется номер процесса. Например, killall chrome убьёт все процессы chrome. Также можно послать любому процессу сигнал прерывания (как Ctrl+C) с помощью kill -INT <номер процесса> .

Пора остановиться

Чтобы поставить работающую команду на паузу нажмите комбинацию Ctrl+Z, а чтобы продолжить — % .

Простой поиск и использование предыдущих команд

Представим ситуацию, когда вы воспользовались какой-то командой пару часов назад и снова хотите её использовать, но не можете вспомнить название.

Здесь поможет обратный поиск. С его помощью можно по заданному условию найти команду в истории.

Просто нажмите комбинацию Ctrl+R и введите часть команды. Затем вам будут показаны команды из истории, которые удовлетворяют заданному условию.

По умолчанию показывается только один результат. Чтобы увидеть больше результатов, нужно повторно нажать Ctrl+R. Чтобы выйти из поиска, нажмите Ctrl+C.

Учтите, что в некоторых оболочках Bash можно использовать Page Up и Page Down с условием поиска для автодополнения команды.

Выводим консоль из зависания после Ctrl+S

Многие привыкли использовать комбинацию Ctrl+S для сохранения. Однако после её использования в терминале, он часто зависает. Чтобы вернуть его в нормальное состояние, нажмите комбинацию Ctrl+Q.

Переход к началу или концу строки

Допустим, вы вводите длинную команду и вдруг понимаете, что вам нужно что-то изменить в её начале. Чтобы попасть в начало или конец строки вы можете несколько раз нажать клавишу стрелки влево/вправо или Home/End. А можете нажать Ctrl+A или Ctrl+E.

Чтение лог-файла в реальном времени

В ситуациях, когда вам нужно анализировать логи при запущенном приложении, можно использовать команду tail с флагом -f .

tail -f <путь к лог-файлу>

Также можно использовать регулярные выражения в grep , чтобы выводить только нужные строки:

tail -f <путь к лог-файлу> | grep <регулярное выражение>

Кроме того, вы можете использовать флаг -F , чтобы tail продолжал работу даже в случае удаления лог-файла. Таким образом, когда лог-файл снова будет создан, tail продолжит логирование.

Если вы хотите просматривать системный лог в реальном времени, воспользуйтесь аналогичной опцией -f команды journalctl :

Чтение сжатых логов без извлечения

Серверные логи обычно сжимаются gzip’ом для сохранения дискового пространства. Это становится проблемой для разработчика или сисадмина, который анализирует эти логи. Возможно, вам придётся скопировать архив в другое место, а затем извлечь его, так как не всегда есть права на извлечение логов.

К счастью, в таких ситуациях всегда спасут z-команды. Они являются альтернативами обычных команд, которые используются для работы с логами вроде less , cat , grep .

Поэтому вы можете воспользоваться zless , zcat , zgrep и т.д., даже не извлекая логи.

Использование less для чтения файлов

Команда cat не всегда лучший выбор для отображения содержимого файла, особенно если он большой — cat выведет сразу весь файл.

Вы можете использовать Vi, Vim или другой терминальный текстовый редактор, но если вам просто нужно прочитать файл, то команда less подойдёт гораздо лучше.

less <путь к файлу>

В less можно искать нужную подстроку, листать по страницам, отображать номера строк и не только. А ещё less может читать не только текстовые документы, но ещё и архивы и другие типы файлов.

Использование аргумента предыдущей команды с помощью !$

Использование аргумента предыдущей команды может пригодиться во многих ситуациях. Например, вы создали директорию и вам нужно сразу в неё перейти.

Ещё лучше использовать alt+. . Множественное нажатие точки позволяет выбрать аргумент одной из нескольких предыдущих команд.

Использование предыдущей команды в текущей с помощью !!

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

Быстрое sudo !! позволяет сэкономить немного времени.

Использование alias для исправления опечаток

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

Представим, что вместо grep вы часто пишете gerp . Если вы установите псевдоним следующим образом, то вам не придётся больше перепечатывать команду:

К слову, для исправления опечаток не обязательно использовать псевдонимы — утилита The Fuck сама исправит предыдущую команду.

Перезагружаемся

Чтобы выключить компьютер из терминала, введите poweroff , а для перезагрузки — reboot .

Вставка скопированного текста в терминал

Здесь не всё однозначно, так как между дистрибутивами Linux и терминалами есть определённая разница. Но в общем случае вставить текст можно одним из следующих способов:

  • Скопируйте текст и кликните правую кнопку мыши для вставки (работает в Putty и других Windows-клиентах SSH);
  • Скопируйте текст и нажмите среднюю кнопку мыши (колёсико) для вставки;
  • Ctrl+Shift+C для копирования и Ctrl+Shift+V для вставки;
  • В некоторых эмуляторах терминала работает привычная комбинация Ctrl+V.

Завершить работающий процесс/команду

Возможно, это слишком очевидно. Если у вас запущена команда, работу которой вы хотите завершить, просто нажмите Ctrl+C и команде будет отправлен сигнал прерывания (SIGINT). А если вы хотите быстро покинуть терминал, нажмите комбинацию Ctrl+D, которая для баша и других интерактивных программ означает окончание ввода.

Команда для скриптов или команд, которым нужен интерактивный ответ

Команда yes может пригодиться, если какой-то скрипт/команда требует взаимодействия с пользователем, которое заключается только в нажатии Y каждый раз.

yes | <команда или скрипт>

Очистить файл, не удаляя его

Если вам нужно только очистить содержимое файла, а не удалить его, вы можете сделать это следующим образом:

Узнать, есть ли файл с определённым текстом

В терминале Linux можно искать разными способами. Если вам нужно узнать, есть ли файл(ы) с определённым текстом, можете воспользоваться этой командой:

grep -Pri <текст_для_поиска> <путь_к_директории>

Получаем справку для каждой команды

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

Кроме того, порой можно получить более подробную справку с помощью команды man <команда> .

Получаем историю команд

Если вы хотите взглянуть на все команды, которые вы когда-либо запускали, введите history . Если вам нужен не полный список, а только несколько последних, воспользуйтесь командой fc -l .

Быстро запускаем команды из истории

При получении команд одним из вышеуказанных способов рядом с каждой командой находится её номер в истории. Чтобы быстро запустить команду из этого списка просто введите !<номер команды> .

Выполняем команду в обход истории

Если вы хотите выполнить команду так, чтобы она не сохранилась в истории, просто введите пробел перед командой.

Поднимаем простой HTTP-сервер

Чтобы поднять сервер и сделать доступной текущую директорию по адресу http://localhost:8000/ введите python3 -m http.server .

Пишем длинные команды с удобством

Если зажать Ctrl, а затем нажать по очереди X и E, то откроется текстовый редактор, в котором можно будет спокойно записать длинную команду, а после выхода из него — выполнить её.

Восстанавливаем терминал

Если вы вывели в терминал сырые бинарные данные или ещё что-то, что выводить не стоило, то убрать увиденную абракадабру позволит команда reset .

Информация о файловых системах

Чтобы получить информацию о текущих смонтированных файловых системах с удобным оформлением по столбцам, введите команду mount | column -t .

Также вы можете воспользоваться командой findmnt , которая отображает информацию в виде красивого дерева и сама форматирует столбцы, а также может найти нужную файловую систему:

Деревья процессов

Есть инструмент pstree , который умеет рисовать красивые деревья процессов. Например:

Экран блокировки

Чтобы заблокировать экран, используйте команду $ loginctl lock-session .

Для разблокировки экрана введите команду $ loginctl unlock-session . Конечно, вряд ли вы сможете использовать терминал при заблокированном экране, однако вы можете пойти обходными путями. Например, можно создать задачу для разблокировки через какое-то время.

Супершелл

Чтобы запустить шелл от имени суперпользователя, можно воспользоваться командой sudo -s . Во многих источниках можно встретить вариант sudo su , который тоже работает, но медленнее, так как запускает лишний процесс.

Быстро открываем файлы в программе по умолчанию

Команда xdg-open позволяет открыть любой файл в соответствующей программе. Например, xdg-open file.txt откроет файл в текстовом редакторе по умолчанию.

Статус системных сервисов

Чтобы посмотреть статус системных сервисов, введите команду systemctl status или systemctl status <имя сервиса> , если вас интересует конкретный сервис.

Быстро ищем файлы

Если вам нужно найти файл, но вы не знаете, где конкретно он находится, можно воспользоваться командой find . Например:

Используем вывод одной команды в качестве аргумента другой

Чтобы использовать вывод одной команды в качестве аргумента другой, используйте конструкцию команда-2 $(команда-1) . Например:

Календарь

Команда cal может нарисовать календарь на текущий месяц (и даже выделить текущее число) или на другой промежуток:

Планировщик задач

Чтобы выполнить какую-то команду в нужное вам время, воспользуйтесь at :

echo команда-для-выполнения | at время_выполнения

Учтите, что эта команда может отсутствовать на вашей системе, и вам придётся установить её самостоятельно.

Получаем свой внешний IP

Чтобы получить свой внешний IP-адрес введите curl ifconfig.me или curl ipinfo.io/ip . Возможно, сначала вам придётся установить curl .

Прогноз погоды

Введите команду curl wttr.in/<нужный город> и получите красивую таблицу с прогнозом погоды:

Получаем таблицу ASCII

Чтобы получить быстрый доступ к таблице ASCII просто введите man ascii .

Простой калькулятор

Небольшие выражения можно вычислять прямо в терминале. Это можно сделать либо с помощью конструкции echo <выражение> | bc , либо echo $((<выражение>)) . Например:

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

Если вы хотите выполнить команду в другой директории, но при это не хотите покидать текущую, то просто оберните команду скобками. Например, (cd /tmp && ls) . Здесь скобки запускают подшелл (subshell), внутри которого мы и выполняем cd .

Узнаём, какие библиотеки нужны команде/библиотеке

Чтобы узнать, какие динамические библиотеки нужны программе или библиотеке и как они будут разрешены при запуске, используйте команду ldd :

Узнаём, что лежит внутри файла

Чтобы определить тип содержимого, находящегося в файле, используйте команду file :

Многократный запуск команды

Чтобы запускать команду каждые несколько секунд (по умолчанию две) и смотреть на её вывод, воспользуйтесь командой watch <команда> .

Время на запуск команды

Чтобы узнать, сколько времени уходит на запуск команды, используйте time <команда> .

Системные вызовы команды

Чтобы узнать, какие системные вызовы совершает программа, введите strace <команда> .

Запоминаем набираемую команду

Если вы набираете какую-то команду и вам по какой-то причине нужно прерваться и, например, ввести другую команду, вы можете «запомнить» то, что вы ввели комбинацией Ctrl+U, а затем вставить комбинацией Ctrl+Y.

Выкачиваем сайты

Чтобы выкачать сайт используйте команду wget —random-wait -r -p -e robots=off -U mozilla <адрес сайта> .

Проводим туннели

С помощью команды ssh -N -L 2001:localhost:80 somemachine можно создать туннель от 80 порта на удалённой машине до 2001 на локальной.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *