08 марта 2015

Как найти и выполнить повторно длинную терминальную команду в Linux

В Linux и Unix-подобных системах существует более тысячи различных терминальных команд. Их список постоянно обновляется и дополняется. Все команды разбиты на тематические разделы и подразделы. Естественно, запоминать все эти команды простому пользователю совсем не обязательно, в этом нет особой необходимости, ниже я объясню почему. О знакомстве с терминальными командами для новичков в Linux я писал в статье "Терминальные команды в Linux".
Кто-то использует терминал часто, кто-то редко, а некоторые пользователи совсем не используют, предпочитая терминалу графические приложения. Но речь в данной статье не о том, что лучше или хуже, у каждого свой выбор, ведь Linux - это прежде всего свобода, свобода выбора!

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

history


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

Как выполнить повторно длинную терминальную команду?

После того как вы вошли в историю всех выполненных команд, то всегда можете найти интересующую вас длинную команду. Вы можете скопировать её и вновь выполнить, но не торопитесь это делать, т.к. есть более простой способ. Достаточно в терминале ввести восклицательный знак (!) и порядковый номер этой самой длинной терминальной команды, а затем нажать Enter.
Предположим, я хочу выполнить повторно длинную команду под номером 484. Команда на её выполнение будет выглядеть следующим образом:

!484


Как видно на снимке, после выполнения данной команды !484, терминал нашёл и выполнил нужную мне длинную команду, без необходимости копирования или ввода с клавиатуры.
Естественно, что данная длинная команда будет отображена в истории команд теперь последней. Если вы захотите повторить её выполнение, достаточно ввести в терминал два восклицательных знака (!!) и нажать Enter:


Примечание. Команда из двух восклицательных знаков (!!) всегда выполняет повторно последнюю выполненную команду.

Надеюсь данная статья была для вас интересной в познавательном плане Linux.

Удачи.

20 комментариев :

  1. Очень полезная информация. Большое спасибо!

    ОтветитьУдалить
  2. На zsh, который в той же Ubuntu стоит по дефолту, можно просто стрелками вверх/вниз передвигаться по истории комманд. Autocomplete по Tab, так же иной раз спасает.

    ОтветитьУдалить
    Ответы
    1. Если Вы внимательно читали заголовок и статью, то речь идёт о системах Linux в целом, а не только об Ubuntu или какой-то другой системе. :)

      Удалить
    2. zsh в убунте по-умолчанию? Хм... не хочу с вами спорить, но мне кажется, что там кошерный bin/bash...

      Удалить
    3. Ну в том же гномовском (который стоит по умолчанию в ubuntu 14.04) терминале стрелки работаю вверх-вних по истории команд.
      И таки да, статейка полезная кто начинает пользоваться терминалом.

      Удалить
  3. Вот с одной стороны конечно Спасибо, а с другой, ну где Вы были все эти годы?! :) Очень удобно, Спасибо огромное.

    ОтветитьУдалить
  4. Класс. А то стрелками долго иногда искать приходится.

    ОтветитьУдалить
  5. Гениально. 5 лет назад когда начинал юзать линукс днями приходилось выгугливать какую то мелочь. Владимир, Вам пора энциклопедию издать.

    ОтветитьУдалить

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

    ОтветитьУдалить
  7. Полезная инфа для новичков. Плюсую данную тему.))

    ОтветитьУдалить
  8. Тут еще надо помнить,что после очистки системы например BleachBit: bash история команд-терминал будет чист.Вот интересно:а поредактировать историю команд возможно?

    ОтветитьУдалить
    Ответы
    1. =Вот интересно:а поредактировать историю команд возможно?= Да без проблем. Откройте файл .bash_history в текстовом редакторе и редактируйте: gedit .bash_history, изменив gedit на текстовый редактор по умолчанию Вашего дистрибутива.

      Удалить
  9. Этот комментарий был удален автором.

    ОтветитьУдалить
    Ответы
    1. А при чём здесь Sakura...? Sakura - это ещё один эмулятор терминала. Вот и всё.

      Удалить
  10. Прелестненько ! Огромное спасибо !

    ОтветитьУдалить
  11. Здорово! И всё-таки, где то же должен быть список подобных "лайф-хаков" линукса, вытащенных из дебрей мануалов.
    P.S. Веду файл-памятку по заинтересовавшим стьям Compizomania.

    ОтветитьУдалить
    Ответы
    1. Таки нашёл. Поделюсь в продолжение темы http://www.commandlinefu.com/commands/browse/sort-by-votes

      Удалить
  12. Интересная и полезная информация. Спасибо! Неожиданно обнаружил интересный эффект: при прокрутке в пустом окне терминала начали последовательно появляться набранные ранее команды начиная с первой. Что это?

    ОтветитьУдалить