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

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

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

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

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

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

Для дополнительных действий с историей вам могут понадобиться опции. Команда history linux имеет очень простой синтаксис:

$ history опции файл

В качестве файла можно указать файл истории. По умолчанию история для текущего пользователя хранится в файле

/.history, но вы можете задать, например, файл другого пользователя. А теперь рассмотрим опции:

  • -c — очистить историю;
  • -d — удалить определенную строку из истории;
  • -a — добавить новую команду в историю;
  • -n — скопировать команды из файла истории в текущий список;
  • -w — перезаписать содержимое одного файла истории в другой, заменяя повторяющиеся вхождения.

Наиболее полезной для нас из всего этого будет опция -c, которая позволяет очистить историю команд linux:

Так вы можете посмотреть только последние 10 команд:

А с помощью опции -d удалить ненужное, например, удалить команду под номером 1007:

Если вы хотите выполнить поиск по истории bash, можно использовать фильтр grep. Например, найдем все команды zypper:

history | grep zypper

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

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

Вы можете выполнить последнюю команду просто набрав «!!». Также можно выполнить одну из предыдущих команд указав ее номер «!-2»

Чтобы выполнить поиск по истории прямо во время ввода нажмите Ctrl+R и начните вводить начало команды.

Если вы знаете, что нужная команда была последней, которая начиналась на определенные символы, например, l, то вы можете ее выполнить, дописав «!l»:

Если нужная команда последняя содержала определенное слово, например, tmp, то вы можете ее найти, использовав «!?tmp»:

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

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

Настройка истории Linux

Linux — очень настраиваемая и гибкая система, поэтому настроить здесь можно все, в том числе и историю. По умолчанию выводится только номер команды, но вы можете выводить и ее дату. Для этого нужно экспортировать переменную HISTORYFORMAT вместе нужным форматом:

export HISTTIMEFORMAT=’%F %T ‘
$ history

Для форматирования можно использовать такие модификаторы:

  • %d – день;
  • %m – месяц;
  • %y – год;
  • %T – штамп времени;
  • %F — штамп даты.

Вы можете указать какие команды не стоит отображать, например, не будем выводить ls -l, pwd и date:

export HISTIGNORE=’ls -l:pwd:date:’

Также можно отключить вывод одинаковых команд:

Существует два флага, ignoredups и ignorespace. Второй указывает, что нужно игнорировать команды, начинающиеся с пробела. Если вы хотите установить оба значения, используйте флаг ignoreboth. Используйте переменную HISTSIZE, чтобы установить размер истории:

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

export PROMPT_COMMAND=»$history -a; history -c; history -r;»

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

export PROMPT_COMMAND=»$history -a; history -c; history -r;»
$ export HISTCONTROL=ignoredups
$ export HISTTIMEFORMAT=’%F %T ‘

Готово, теперь осталось сохранить изменения и перезапустить ваши терминалы. Теперь ваша история будет выводить дату, игнорировать дубли и синхронизироваться между терминалами.

Выводы

В этой статье мы рассмотрели что такое история команд linux, как с ней работать, как применяется команда history linux и какие настройки можно использовать для более комфортной работы. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

🐧 Как включить временную метку в истории Bash на Linux

Как включить отметку времени в истории Bash на Linux

Bash ведет историю команд, введенных в Терминале.

Этот список команд сохраняется в файле с именем .bash_history в нашем HOME каталоге.

Большинство дистрибутивов Linux по умолчанию запоминают последние 1000 команд.

Мы можем получить недавно выполненные команды, используя историю команды как, показано ниже:

Как вы видите в приведенном выше выводе, хотя команда history отображает список ранее выполненных команд, она не показывает, когда эти команды были выполнены.

Чтобы включить отметку времени в истории Bash в вашем Linux, вам необходимо установить переменную среды HISTTIMEFORMAT.

Читайте также:  Драйвер для принтера epson 1050

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

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

Здесь параметр %F используется для отображения даты в формате ГГГГ-ММ-ДД (год-месяц-дата).

А опция %T используется для отображения времени в формате ЧЧ: ММ: СС (часы-минуты-секунды).

Теперь запустите команду history еще раз, и вы увидите отметку времени перед каждой командой:

Отлично! Теперь вы можете легко узнать, когда в вашей системе Linux выполнялась определенная команда.

Если вы хотите отобразить метки времени для последних команд “N”, например 10, направьте вывод команды history по пайпу в команду tail, например:

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

Вы также можете настроить формат даты по своему вкусу, как показано в следующей команде:

Эта переменная среды показывает дату и время в истории команды в формате дд/мм/год, например. 27.11.20 19:11:55.

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

Добавьте в конец следующую строку:

Нажмите CTRL + O, чтобы сохранить файл, и нажмите CTRL + X, чтобы выйти.

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

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

Чтобы включить временную метку истории Bash для всех пользователей системы, отредактируйте файл /etc/profile:

и добавьте туда:

Сохраните и закройте файл.

Чтобы изменения вступили в силу, запустите:

Для получения дополнительных сведений см. Справочные страницы:

Источник

Настраиваем ведение истории команд в Linux

Всем известно, что Bash ведет историю всех команд, введенных в консоли, но по умолчанию некоторые настройки хранения этой истории заданы не сильно рациональными.

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

Исходные данные: Debian 9

Как известно, история команд в Linux хранится в файле

Размер файла ограничен списком из 500 последних выполненных команд, которые затираются по мере заполнения этого файла.
500 команд — это довольно мало, Вы легко можете потерять полезную команду которую выполнили скажем неделю назад.

Чтобы увеличить размер хранимой истории необходимо в файл

/.bashrc добавить строки:

HISTSIZE — количество команд, которые необходимо запоминать в списке истории (по умолчанию — 500);
HISTFILESIZE — максимальное количество строк, содержащееся в файле истории

/.bash_history (по умолчанию — 500);

Теперь у нас будет храниться история последних 10 тыс. команд.

Для применения настроек нужно выполнить:

или перезайти в терминал.

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

/.bashrc добавим строку:

Опция HISTCONTROL контролирует каким образом список команд сохраняется в истории.
ignorespace — не сохранять строки начинающиеся с символа
ignoredups — не сохранять строки, совпадающие с последней выполненной командой
ignoreboth — использовать обе опции ‘ignorespace’ и ‘ignoredups’
erasedups — удалять ВСЕ дубликаты команд с истории

Не забываем выполнить source

/.bashrc для применения настроек на лету.

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

Давайте не будем сохранять в истории команды ls, ps и history с доп. опциями. Для этого в файл

/.bashrc добавим строку:

Не забываем выполнить source

/.bashrc для применения настроек на лету.

По умолчанию, Bash записывает историю команд в

/.bash_history только при завершении сессии. Если Ваша сессия будет отключена некорректно, то как правило история команд в текущем сеансе не сохраниться — это неудобно. Чтобы это исправить нужно добавить в

/.bashrc следующую строку:

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

/.bashrc нужно добавить строку:

Не забываем выполнить source

/.bashrc для применения настроек на лету.

И в конце, все вышеописанные опции можно добавить в

/.bashrc с помощью одной команды:

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

Если нужно удалить конкретную строку в истории, то выполните:

Для удаления всей истории команд выполните:

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

Следует обратить внимание, что если Вы сохраняете историю сразу по факту выполнения команды (настройка PROMPT_COMMAND=’history -a’), а не по выходу из сессии как это предусмотрено по умолчанию, то полную очистку истории указанными выше способами (опции -c и -r) Вы не сделаете, история в файле

/.bash_history сохраниться. Тогда для полной очистки истории команд нужно очистить файл

/.bash_history, для этого выполните:

и закройте текущую сессию, тогда история будет очищена полностью.

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

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

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

Источник

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

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

Читайте также:  Картридж для принтера oki b412dn

Управление историей

В виде Джордж Сантаяна классно сказал , «Те, кто не может вспомнить прошлое, обречены его повторять». К сожалению, в Linux, если вы не можете вспомнить прошлое, вы не можете повторить его, даже если захотите.

Вот тогда и пригодится команда Linux history. Это позволяет вам просмотреть и повторить ваши предыдущие команды. Это не только для поощрения лени или экономии времени — здесь также играет роль фактор эффективности (и точности). Чем длиннее и сложнее команда, тем сложнее ее запомнить и ввести без ошибок. Есть два типа ошибок: один, который мешает команде работать, и второй, который позволяет команде работать, но заставляет ее делать что-то неожиданное.

Команда history устраняет эти проблемы. Как и большинство команд Linux, это больше, чем вы думаете . Однако, если вы научитесь использовать команду history, вы сможете улучшить использование командной строки Linux каждый день. Это хорошее вложение вашего времени. Есть гораздо лучшие способы использовать команду history, чем просто многократно нажимать стрелку вверх.

Команда истории

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

Список ранее использованных команд записывается в окно терминала.

Команды пронумерованы, а самые последние использованные (с наибольшими номерами) находятся в конце списка.

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

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

Повторение команд

Если вы хотите повторно использовать команду из списка истории, введите восклицательный знак (!) И номер команды без пробелов между ними.

Например, чтобы повторить команду номер 37, вы должны ввести эту команду:

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

Это может быть полезно, когда вы вводите команду и забываете использовать sudo. Введите sudo, один пробел, двойные восклицательные знаки и нажмите Enter.

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

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

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

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

Поиск команд по строке

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

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

Однако в этом есть элемент опасности. Если последняя команда, запущенная с sudo, не та, которую вы думаете, вы запустите неверную команду.

Однако, чтобы обеспечить подстраховку, вы можете использовать модификатор: p (print), как показано ниже:

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

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

Например, чтобы найти и выполнить первую соответствующую команду, содержащую слово «псевдонимы», вы должны ввести эту команду:

Он найдет любую команду, содержащую строку «aliases», независимо от того, где она находится в строке.

Интерактивный поиск

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

Просто нажмите Ctrl + r, чтобы начать поиск.

Когда вы введете подсказку для поиска, появится первая соответствующая команда. Вводимые буквы появляются между обратным апострофом (`) и апострофом (‘). Соответствующие команды обновляются по мере ввода каждой буквы.

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

Когда вы нажмете Enter, отобразится команда.

Чтобы отредактировать команду перед ее выполнением, нажмите клавишу со стрелкой влево или вправо.

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

Вы можете использовать другие инструменты Linux для поиска в списке истории. Например, чтобы передать вывод из истории в grep и поиск команд, содержащих строку «Псевдонимы» вы можете использовать эту команду:

Изменение последней команды

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

Чтобы использовать его, введите (без пробелов) курсор, текст, который вы хотите заменить, другой курсор, текст, которым вы хотите его заменить, другой курсор, а затем нажмите Enter.

Например, предположим, что вы набираете следующую команду, случайно набрав «shhd» вместо «sshd»:

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

Команда выполняется с изменением «shhd» на «sshd».

Удаление команд из списка истории

Вы также можете удалять команды из списка истории с помощью опции -d (удалить). Нет причин оставлять команду с ошибкой в ​​списке истории.

Вы можете использовать grep, чтобы найти его, передать его номер в историю с опцией -d, чтобы удалить его, а затем снова выполнить поиск, чтобы убедиться, что он исчез:

Вы также можете передать ряд команд параметру -d. Чтобы удалить все записи списка с 22 по 32 (включительно), введите эту команду:

Читайте также:  Samsung 2510 драйвер принтер windows 7

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

Обновление файла истории вручную

Когда вы входите в систему или открываете сеанс терминала, список истории считывается из файла истории. В Bash файл истории по умолчанию — .bash_history.

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

Предположим, вы хотите открыть другое окно терминала, чтобы получить доступ к полному списку истории, включая команды, которые вы вводили в первом окне терминала. Параметр -a (all) позволяет сделать это в первом окне терминала перед тем, как открыть второе.

Чтобы использовать его, введите следующее:

Команды незаметно записываются в файл истории.

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

Очистка списка истории

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

Если вы дополнительно хотите принудительно внести эти изменения в файл истории, используйте параметр -w, например:

Безопасность и файл истории

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

Эта структура включает две команды, разделенные точкой с запятой (;). Давайте разберем это:

special-app: название программы, которую мы используем.
my-secret-password: секретный пароль, который нам нужно указать для приложения в командной строке. Это конец первой команды.
history -d: во второй команде мы вызываем параметр истории -d (удалить). То, что мы собираемся удалить, находится в следующей части команды.
$ (история 1): используется подстановка команд. Часть команды, содержащаяся в $ (), выполняется в подоболочке. Результат этого выполнения публикуется как текст в исходной команде. Команда history 1 возвращает предыдущую команду. Итак, вы можете думать о второй команде как о history -d «последняя команда здесь».

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

Однако есть еще более простой способ сделать это. Поскольку Bash по умолчанию игнорирует строки, начинающиеся с пробела, просто добавьте пробел в начало строки, как показано ниже:

Команда с паролем не добавляется в список истории. Причина, по которой этот трюк работает, содержится в файле .bashrc.

Файл .bashrc

Файл .bashrc запускается каждый раз, когда вы входите в систему или открываете окно терминала. Он также содержит некоторые значения, которые управляют поведением команды history. Давайте отредактируем этот файл с помощью gedit.

В верхней части файла вы видите две записи:

HISTSIZE: максимальное количество записей, которое может содержать список истории.
HISTFILESIZE: ограничение на количество строк, которое может содержать файл истории.

Эти два значения взаимодействуют следующим образом:

Когда вы входите в систему или запускаете сеанс окна терминала, список истории заполняется из файла .bash_history.
Когда вы закрываете окно терминала, максимальное количество команд, заданное в HISTSIZE, сохраняется в файле .bash_history.
Если опция оболочки histappend включена, команды добавляются в .bash_history. Если histappend не установлен, .bash_history перезаписывается.
После сохранения команд из списка истории в .bash_history файл истории усекается, чтобы содержать не более HISTFILESIZE строк.

Также в верхней части файла вы видите запись для значения HISTCONTROL.

Вы можете установить это значение для выполнения любого из следующих действий:

ignorespaces: строки, начинающиеся с пробела, не добавляются в список истории.
ignoredups: повторяющиеся команды не добавляются в файл истории.
ignoreboth: включает оба вышеперечисленных.

Вы также можете указать конкретные команды, которые не хотите добавлять в свой список истории. Разделите их двоеточием (:) и заключите в кавычки («…»).

Вы должны следовать этой структуре, чтобы добавить строку в ваш файл .bashrc и заменить команды, которые вы хотите игнорировать:

Использование меток времени

Если вы хотите добавить отметки времени в список истории, вы можете использовать параметр HISTIMEFORMAT. Для этого вы просто добавляете в файл .bashrc такую ​​строку:

Обратите внимание, что перед закрывающими кавычками стоит пробел. Это предотвращает совпадение отметки времени с командами в списке команд.

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

Это очень длинная метка времени. Однако вы можете использовать токены, отличные от% c, для его уточнения. Вы можете использовать и другие токены:

% d: День
% m: месяц
% y: Год
% H: час
% M: минуты
% S: секунды
% F: Полная дата (формат год-месяц-дата)
% T: Время (формат час: минуты: секунды)
% c: полная отметка даты и времени (форматы день-дата-месяц-год и час: минуты: секунды)

Давайте поэкспериментируем и воспользуемся несколькими разными токенами:

В выходных данных используются день, месяц и время.

Однако, если мы удалим день и месяц, он просто покажет время.

Любые изменения, которые вы вносите в HISTIMEFORMAT, применяются ко всему списку истории. Это возможно, потому что время для каждой команды сохраняется как количество секунд от эпохи Unix . Директива HISTTIMEFORMAT просто определяет формат, используемый для визуализации этого количества секунд в удобочитаемом стиле, например:

Наша продукция теперь более управляема.

Вы также можете использовать команду history для аудита. Иногда просмотр команд, которые вы использовали в прошлом, может помочь вам определить, что могло вызвать проблему.

Как и в жизни, в Linux вы можете использовать команду history, чтобы заново пережить хорошие времена и извлечь уроки из плохих.

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector