- Команда History в Linux (История Bash)
- Использование команды history и расширений истории
- Сохранение списка истории
- История очистки
- Изменение поведения в истории
- Выводы
- Трюк в командной строке — Быстрый поиск по истории команд
- Ctrl+R — быстрый поиск по истории команд
- Перейти к следующей найденной команде
- Изменить найденную команду
- Пример
- Команда history в Linux
- Синтаксис
- Примеры
- Запускаем и ищем предыдущие команды в Linux
- Повторный запуск команды без указания аргументов. Используем «!»
- Выполнение предыдущей команды. Используем «!!»
- Поиск по истории команд. Команда history
- Поиск по истории. Сочетание клавиш Ctrl+R
- Команда history в Linux (Bash History)
- Использование команды history и журнала расширений
- Сохранение списка истории
- Очистка истории
- Изменение поведения history
- Заключение
Команда History в Linux (История Bash)
Если вы проводите много времени в командной строке, просмотр истории команд, которые вы ранее запускали, может быть полезной функцией, которая может упростить вашу повседневную работу и повысить вашу производительность.
В этой статье мы поговорим о команде history , которая позволяет просматривать список ранее выполненных команд, выполнять поиск по списку и управлять файлом истории.
Использование команды history и расширений истории
history — это встроенная оболочка, и ее поведение может немного отличаться от оболочки к оболочке. Мы рассмотрим встроенную в Bash версию history .
В простейшей форме при вызове без какой-либо опции или аргумента команда history отображает весь список истории с номерами строк.
При вводе !n выполняется n-я команда из списка истории, а !-n команда возвращается на n строк. В следующем примере мы выполняем команду в строке 467 :
Другой способ выполнить команду — использовать расширение !word . word относится к самой последней команде, начинающейся с слова.
Обычно в history отображается много строк вывода, которые не помещаются на экране. Чтобы просмотреть вывод по одной странице за раз, направьте его в программу пейджера, например, команду more или less :
Чтобы отобразить последние n строк, передайте число в качестве аргумента команды. Например, чтобы просмотреть только последние пять строк из списка истории, введите:
Используйте клавиши со стрелками up и down для перемещения по записям в списке. Когда отобразится искомая команда, нажмите Enter чтобы выполнить ее.
Типа !! для выполнения предыдущей команды:
Это особенно полезно, когда вы забываете привязать команду к sudo и вместо повторного ввода команды можете ввести:
!-1 совпадает с !! и выполняет последнюю команду из списка истории !-2 секунды до последней и так далее.
^word1^word2^ позволяет повторно запустить последнюю команду, заменив «word1» на «word2». Если вы случайно набрали sduo command вместо команды sudo command вы можете повторить команду, используя правильное слово:
Используйте команду grep для фильтрации вывода. Например, чтобы просмотреть все команды, включая «nano», вы должны выполнить:
Теперь, если вы хотите повторно запустить команду nano setup.py просто введите:
Другой способ поиска в истории команд — нажать Ctrl-R . Приглашение изменится на следующее, и вы сможете начать поиск ранее выполненной команды.
Оболочка отобразит соответствующую строку. Чтобы перейти к следующему подходящему предложению, снова нажмите Ctrl-R .
Обратитесь к руководству Bash для получения дополнительной информации о расширении истории , модификаторах и позиционных обозначениях.
Сохранение списка истории
По умолчанию при запуске нового сеанса Bash читает список истории из файла .bash_history . Список команд, которые выполняются в текущем сеансе, хранятся в памяти и сохраняются в файле при закрытии сеанса.
Если вы открыли несколько сеансов оболочки, сохраняется только история сеанса, который был закрыт последним.
Параметр -a позволяет сохранить список истории текущего сеанса в файл .bash_history :
Параметр -w записывает полный список истории в файл истории.
История очистки
Команда history позволяет очистить полный список истории или удалить определенные части.
Чтобы очистить список истории, используйте параметр -c :
Чтобы удалить определенную строку или строки между начальной и конечной позициями из списка истории, используйте параметр -d .
Например, чтобы удалить строки между 365 и 375 (включая эти строки), вы должны ввести:
Если вы укажете только одно число для опции -d , команда удалит данную строку.
Когда используется отрицательное целое число, строки отсчитываются от конца списка истории.
Приведенные выше команды очищают список истории, который хранится в памяти, но не удаляют записи из файла .bash_history на диске. Чтобы очистить файл, вам нужно записать в файл список истории:
Изменение поведения в истории
Поведение истории Bash можно определить с помощью нескольких различных переменных среды . При изменении поведения истории установите переменные в
/.bashrc или любом другом файле конфигурации, который загружается при входе пользователя в систему.
По умолчанию Bash сохраняет 500 строк в списке истории команд. Переменная HISTSIZE позволяет вам изменять это значение. Чтобы установить значение 10000, добавьте в файл .bashrc следующую строку:
Переменная HISTCONTROL принимает список значений, разделенных двоеточиями, которые определяют способ сохранения команд в списке истории:
- ignorespace — команды, начинающиеся с пробела, не сохраняются в списке истории.
- ignoredups — повторяющиеся команды не сохраняются.
- ignoreboth — это сокращение, включая как ignorespace и ignoredups .
Когда HISTTIMEFORMAT переменная HISTTIMEFORMAT , Bash HISTTIMEFORMAT времени выполнения команды в каждой строке.
Например, если вы установите:
История будет отображаться в следующем формате:
Выводы
Команда history отображает список ранее выполненных команд. Например, вы можете использовать историю, чтобы просмотреть длинную команду, которую вы использовали раньше, но не можете вспомнить.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Трюк в командной строке — Быстрый поиск по истории команд
При работе в командной строке Linux часто требуется повторно выполнять предыдущие команды. Рассмотрим, как быстро найти и при необходимости изменить команду, которую вы уже выполняли ранее.
Если это относительно недавняя команда, то можно просто нажимать клавишу Вверх пока не появится нужная команда. Но если команда использовалась давно, то это не всегда удобно.
Ctrl+R — быстрый поиск по истории команд
Есть еще один очень простой и удобный способ для поиска по истории команд — это использование сочетания клавиш:
Ctrl+R
Работая в командной строке, нажмите сочетание клавиш Ctrl+R .
Вы попадете в режим поиска по истории команд. Приглашение в командной строке изменится на строку:
(reverse-i-search)`’:
Теперь можно начать вводить название команды, которую вы ищете или любую часть команды. То есть любую последовательность символов из команды, которую вы хотите найти.
По мере ввода символов будет осуществляться автоматический поиск по истории команд в соответствии с вводимыми вами символами, и если соответствующая команда найдена, то она отобразится в командной строке.
Перейти к следующей найденной команде
Нажмите повторно Ctrl+R , чтобы перейти к следующей найденной команде. Это похоже на перемещение по результатам поиска в текстовом редакторе, когда используется сочетание клавиш Ctrl+F.
Изменить найденную команду
Найденную команду можно изменить. Для этого нужно нажать клавишу Влево или Вправо , чтобы выйти из режима поиска. Команда при этом появится в командной строке и будет доступна для редактирования.
Чтобы выполнить команду, нажмите Enter .
Пример
Например, вы когда-то выполняли команду для копирования файла из одного каталога в другой:
Вы хотите повторить эту команду и, возможно, немного ее изменить.
Нажимаем Ctrl+R и попадаем в режим поиска по истории команд.
Начинаем вводить какую-либо часть команды, которую мы ищем. Например, введем символы: myfi . Команда отобразится в терминале.
Теперь можно нажать Enter, что ее сразу выполнить, или нажать клавишу Влево или Вправо , чтобы выйти из режима поиска и изменить команду.
Источник
Команда history в Linux
В операционной системе Linux в терминальном режиме есть возможность посмотреть историю команд. Все последние команды (около 1000 по умолчанию), которые вводились в командной строке сохраняются, их можно вывести на экран. Чтобы не вводить сложные названия утилит вместе с опциями, система позволяет вернуть раннее введенную команду и выполнить ее еще раз.
Синтаксис
Рассмотрим синтаксис утилиты history (History Library).
- -a — включить в файл bash новый запрос;
- -c — удалить историю введенных раннее команд;
- -d — очистить из истории определенную строку с заданным идентификатором;
- -n — читает все запросы из файла и добавляет в текущyю сессию;
- -r — читает все команды из файла и добавляет в текущий список.
- -w — записывает всю историю в файл, который указан в качестве аргумента. Например «history -w newfile».
Файл — это необязательный аргумент, его можно не указывать.
В качестве аргументу можно указать в какой документ записать запрос.
По умолчанию все записывается в домашний каталог пользователя в файл .bash_history. Если нужно изменить максимальный размер файла, то все настройки хранятся в «.bashcr».
В документе bashcr видим:
- «HISTSIZE=1000» — максимальное число строк, хранящихся в памяти оболочки;
- «HISTFILESIZE=2000» — максимальное число записей, хранящихся в файле.
Примеры
Для первого примера, посмотрим всю историю последних 1000 строк. Введем название утилиты без аргументов.
Визуально смотреть текст из 1000 строк сразу неудобно, поэтому покажем на экране 5 последних запросов. Синтаксис будет выглядеть так:
history 5
На скриншоте видим два столбика:
- 501, 502,503 — номер запроса, согласно истории;
- cd . clear — название запроса.
Выполним команду под номером 504 «clear» очистка экрана. Для этого введем восклицательный знак и номер.
Внимание! Написать все нужно слитно без пробела.
Чтобы удалить всю историю, необходимо использовать ключ «-c».
Если нужно очистить только какую-нибудь определенную команду, то пишем название утилиты с ключом «-d». Например удалим запрос под номером 503.
Для поиска введенных раннее команд, можно воспользоваться дополнительной утилитой grep. Найдем все, что совпадает с «ls».
history | grep ls
Другой вариант выполнить поиск, использовать конструкцию «!?».
Более простой способ поиска по истории через оболочку терминала. Можно нажать горячие клавиши Ctrl + r. На экране появиться надпись: «(reverse-i-search)». Набирая символы с клавиатуры — оболочка будет выводить на экран подходящие команды из истории.
Если нажать на клавишу вверх в терминале Linux — оболочка покажет последний запрос. Таким образом можно перебирать введенные раннее команды.
Источник
Запускаем и ищем предыдущие команды в Linux
Работу в командной строке можно сделать немного эффективнее и быстрее, если знать несколько простых хитростей. Рассмотрим, как быстро запускать предыдущие команды, как выполнять поиск по истории команд.
Повторный запуск команды без указания аргументов. Используем «!»
!команда — используется для выполнения команды с аргументами, которые использовались при последнем запуске.
Предположим, мы выполняем какие-нибудь команды и дополняем их аргументами. Например, мы решили отредактировать файл myfile.txt в текстовом редакторе nano. Для этого мы выполняем:
Далее мы можем выполнять еще какие-нибудь команды, затем снова хотим выполнить nano, чтобы открыть в нем файл myfile.txt. Мы можем воспользоваться волшебным «!». Для этого достаточно написать восклицательный знак и без пробела название команды:
В результате будет вызвана команда nano с теми аргументами, с которыми она вызвалась последний раз, то есть в нашем случае !nano будет аналогично вызову nano /home/pingvinus/path/to/file/myfile.txt.
Выполнение предыдущей команды. Используем «!!»
!! — используется, чтобы выполнить предыдущую команду. Можно использовать в тексте другой команды.
Про два восклицательных знака я уже рассказывал. Например, вы вызвали команду:
И забыли написать в начале sudo. Чтобы не перепечатывать всю команду, можно выполнить:
Отмечу, что !! можно использовать прямо внутри текста команды. Например, мы перейдем в домашнюю директорию пользователя pingvinus:
А теперь войдем в папку /home/pingvinus/Downloads вот таким образом:
Поиск по истории команд. Команда history
history — поиск по истории команд — предназначена для вывода истории команд, поиска по ним и быстрого запуска предыдущих команд.
Если мы выполним history, то на экран будет выведен список последних введенных вами команд:
Каждая команда пронумерована. Чтобы вызвать какую-нибудь команду из списка достаточно выполнить в командной строке: !номер. Например выполним команду под номером 139:
Можно указать номер с минусом. Например, выполнив !-2 мы выполним пред-предыдущую команду. Выполнив, !-1 мы выполним предыдущую команду, это эквивалентно команде !!, описанной выше.
Для поиска по истории можно воспользоваться утилитой grep:
У команды history есть еще несколько дополнительных возможностей. Почитать руководство по history можно, выполнив man history.
Поиск по истории. Сочетание клавиш Ctrl+R
Ctrl+R — сочетание клавиш, которое используется для вызова «интерактивного» поиска по истории команд.
Нажмите Ctrl+R, находясь в командной строке. В результате на экране отобразится приглашение к поиску команды:
Начинайте вводить начальную часть или середину команды, которую вы ищете. То, что вы вводите будет заключено в кавычки, а после значка двоеточия вам будет предложена команда, найденная в истории команд, которая максимально удовлетворяет поиску. Например, я нажал Ctrl+R и начал вводить id-, и нашлась команда, содержащая символы id-:
Источник
Команда history в Linux (Bash History)
В этой статье мы поговорим о команде history, которая позволяет просматривать список ранее выполненных команд, осуществлять поиск по списку и манипулировать файлом истории.
Использование команды history и журнала расширений
historyявляется встроенной оболочкой, и ее поведение может немного отличаться от оболочки к оболочке. Мы рассмотрим встроенную версию Bash history.
В простейшей форме, когда она вызывается без каких-либо параметров или аргументов, команда history отображает весь список истории с номерами строк.
При наборе !n выполняется n-я команда из списка истории, а команда !-n, n строк назад. В следующем примере мы выполняем команду на линии 467:
Другой способ выполнить команду – использовать расширение !word. word, относится к самой последней команде, начинающейся со слова.
Как правило, history отображает много строк вывода, которые не помещаются на экране. Чтобы просмотреть выходные данные по одной странице за раз, передайте их в с помощию команд more или less:
Чтобы отобразить последние строки n, передайте число в качестве аргумента команде. Например, чтобы просмотреть только последние пять строк из списка истории, введите:
Используйте клавиши со стрелками upи down для навигации по записям в списке. Когда появится команда, которую вы искали, нажмите, Enterчтобы выполнить ее.
Введите !! для выполнения предыдущей команды:
Это особенно полезно, когда вы забыли добавить команду sudo, и вместо повторного ввода команды вы можете набрать:
!-1 то же самое, что !! и выполняет последнюю команду из списка истории, от !-2 второго до последнего и т. д.
Расширение ^word1^word2^ позволяет повторно запустить последнюю команду, заменив «word1» на «word2». Если вы случайно набрали команду sduo вместо команды sudo, вы вы можете повторить команду, используя правильное слово с:
Используйте команду grep для фильтрации вывода. Например, чтобы просмотреть все команды, включая «nano», вы должны выполнить:
Теперь, если вы хотите перезапустить команду nano setup.py, просто наберите:
Другой способ поиска по истории команд – нажать Ctrl-R. Приглашение изменится на следующее, и вы сможете начать поиск ранее выполненной команды.
Оболочка отобразит соответствующую строку. Чтобы перейти к следующему предложению, нажмите еще раз Ctrl-R.
Обратитесь к руководству по Bash для получения дополнительной информации о расширении history, модификаторах и обозначениях.
Сохранение списка истории
По умолчанию при запуске нового сеанса Bash читает список истории из файла .bash_history. Список команд, которые выполняются в текущем сеансе, сохраняется в памяти и сохраняется в файл при закрытии сеанса.
Если вы открыли несколько сеансов оболочки, сохраняется только история сеанса, который был закрыт последним.
Опция -a позволяет сохранить текущий список истории сеанса в файл .bash_history:
Вариант -w записывает полный список истории в файл истории.
Очистка истории
Команда history позволяет очистить полный список истории или удалить определенные части.
Чтобы очистить список истории, используйте параметр -c:
Чтобы удалить определенную строку или строки между начальной и конечной позициями из списка истории, используйте параметр -d.
Например, чтобы удалить строки между 365 и 375 (включая эти строки), введите:
Если вы указываете только один номер опции -d, команда удаляет данную строку.
Когда используется отрицательное целое число, строки отсчитываются от конца списка истории.
Приведенные выше команды очищают список истории, который хранится в памяти, но не удаляет записи из файла .bash_history на диске. Чтобы очистить файл, вам нужно записать список истории в файл:
Изменение поведения history
Поведение history в Bash можно определить с помощью нескольких различных переменных среды. При изменении поведения истории установите переменные в файле конфигурации
/.bashrc, который загружается при входе пользователя в систему.
По умолчанию Bash хранит 500 строк в списке истории команд. Переменная HISTSIZE позволяет изменять это значение. Чтобы установить его на 10000, добавьте следующую строку в ваш файл .bashrc:
Переменная HISTCONTROL принимает разделенный двоеточиями список значений, которые определяют, каким образом команды сохраняются в списке истории: команды – ignorespace-, которые начинаются с пространством, не сохраняются в списке истории. – ignoredups- дублирующие команды не сохраняются. – ignoreboth это стенография, включающая в себя ignorespace и ignoredups.
Когда переменная HISTTIMEFORMAT установлена, Bash добавляет метку времени выполнения команды в каждой строке.
Например, если вы установите:
История будет отображаться в следующем формате:
Заключение
Команда history отображает список ранее выполненных команд. Например, вы можете использовать историю, чтобы просмотреть длинную команду, которую вы использовали до того, что вы не можете вспомнить.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник