Очистить историю команд Linux

Обновлено: 06.07.2024

В Bash все команды, которые вы запускаете в Терминале, хранятся в текстовом файле с именем .bash_history в вашем домашнем каталоге. Мы можем использовать команду history для отображения списка команд, введенных с момента начала сеанса. По какой-то причине вы можете захотеть удалить всю или определенную команду из истории Bash. В этом кратком руководстве давайте узнаем, как очистить историю командной строки в Linux на примерах.

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

Зачем очищать историю командной строки?

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

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

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

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

Это просто пример. Может быть много других причин для очистки истории командной строки Linux.

Почему бы нам не очистить историю командной строки?

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

Как я уже говорил ранее, команды, которые вы запускаете в Терминале, будут сохранены в файле ~/.bash_history. Вы можете получить ранее выполненные команды, нажав стрелку ВВЕРХ на клавиатуре.

Когда вы нажмете кнопку ВВЕРХ, появится список команд, которые вы недавно запускали. Просто продолжайте нажимать клавишу со стрелкой ВВЕРХ, пока не найдете команду, которую хотите выполнить. Как только вы найдете команду, которую хотите запустить, просто нажмите ENTER для ее выполнения. Вот и все. Вам не нужно вводить всю команду каждый раз.

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

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

Без дальнейших церемоний, давайте посмотрим, как очистить историю командной строки в Linux.

Очистить историю командной строки в Linux

Есть много способов очистить историю командной строки. Здесь я перечислил пять способов.

1. Очистить всю историю командной строки с помощью команды history

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

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

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

Приведенные выше команды очистят историю командной строки.

2. Избегайте сохранения команд в списке истории, вставляя пробел перед каждой командой

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

Для этого необходимо установить для переменной среды HISTCONTROL значение «ignorespace» или «ignoreboth».

Отредактируйте файл ~/.bashrc:

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

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

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

Чтобы проверить это, выполните несколько команд. И поставить пробел перед любой командой. Я поставил пробел в последней команде.

Здесь указано пустое место.

См. следующий снимок экрана:

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

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

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

Пример вывода:

очистить историю командной строки в Linux

очистить историю командной строки в Linux

Как видно из приведенного выше вывода, команда "sudo ping ostechnix.com" не отображается в выводе команды history.

3. Очистить или удалить определенные команды из истории

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

Позвольте мне показать вам пример. Я собираюсь запустить следующие команды в Терминале.

Затем отобразите вывод команды history с помощью команды:

пример вывода:

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

Чтобы очистить или удалить конкретную команду из истории, используйте флаг -d с номером префикса команды:

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

Например, чтобы удалить из истории команду "time" со строкой "5", выполните:

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

Пример вывода:

 Очистить или удалить определенные команды из истории

Очистить или удалить определенные команды из истории

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

4. Автоматически очищать историю командной строки при выходе из системы

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

Для этого отредактируйте файл ~/.bashrc:

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

Сохраните и закройте файл. Теперь история будет очищаться после выхода из сеанса.

5. Удалить историю командной строки навсегда

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

Чтобы удалить все команды из истории Bash во всех сеансах, необходимо удалить содержимое файла .bash_history. Этот файл содержит список команд, которые мы запускаем в терминале. Вы можете каждый раз очищать этот файл вручную или настроить задание cron, чтобы очищать его через равные промежутки времени.

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

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

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

Добавьте следующие команды:

Сохранить и закрыть файл. История будет автоматически очищаться каждый день в 20:00.

Рекомендуется прочитать:

Заключение

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

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

Почему мы должны удалить историю командной строки Linux?

В большинстве случаев мы не хотим раскрывать историю терминалов других пользователей вашей системы Linux. Например, если вы проводите занятия со своими учениками на лабораторном компьютере и, возможно, научили некоторым вредоносным командам, которые не рекомендуется использовать в нашей системе. Но большинство студентов не имеют ни малейшего представления о побочных эффектах этих критических команд. Любознательный студент может поискать в истории командной строки и протестировать их, чтобы проверить работу каждой команды. Это может привести к сбою вашей системы много раз. Однако вы можете быстро восстановить или переустановить систему. Но это не очень хорошая практика. Итак, в этом случае мы хотим очистить историю командной строки после работы над ней. Особенно, когда у вас есть общий доступ с друзьями или коллегами. Мы только что разработали его на простом примере; могут быть и другие проблемы, из-за которых вы хотите очистить историю командной строки Linux. В этой статье мы покажем вам, как очистить историю командной строки в системе Linux.

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


Удаление истории командной строки Linux

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


Обычно история командной строки хранится в файле с именем «bash_history». Этот файл вы можете найти в домашнем каталоге конкретного пользователя /home/username/.bash_history. Выполните приведенную ниже команду, чтобы найти файл bash_history:


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

Удалить строку из истории bash

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

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


Удалить или очистить все команды из истории bash

Вы также можете очистить или удалить все записи из файла истории bash. Итак, используйте опцию -c с командой history. Вы можете запустить следующую команду на терминале, чтобы очистить или удалить всю историю bash:


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


Заключение

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

Об авторе

Карим Буздар

Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Он ведет блог на LinuxWays.

Я использую Linux Mint 17.1 Rebecca около 2 дней и случайно ввел свой пароль в терминал, который теперь отображается в списке истории ранее введенных команд.

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

Приведенные выше команды «удаляют» историю из терминала, но когда я выхожу и открываю новую, вся моя предыдущая история все еще там, и ее можно снова просмотреть с помощью команды - history, а также нажав стрелку ВВЕРХ. на моей клавиатуре. Я не хочу, чтобы это произошло, пока я полностью не очистил свою историю, а затем я хочу продолжить ее использовать.

Как я могу полностью очистить историю терминала — навсегда и начать заново?

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


@jasonwryan Одно это не решит проблему, так как команда sed попадет в историю оболочки.

7 ответов 7

reset или tput reset работает только с терминалом. История полностью управляется оболочкой, которая остается неизменной.

history -c очищает вашу историю в текущей оболочке. Этого достаточно (но излишне), если вы только что ввели свой пароль и не вышли из этой оболочки или явно не сохранили ее историю.

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

Вместо удаления всех записей истории вы можете открыть .bash_history в редакторе и удалить ненужные строки.Вы также можете сделать это внутри bash, что менее удобно, используя history для отображения всех записей, затем history -d для удаления ненужных записей и, наконец, history -w для сохранения.

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

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

5 главных проблем Linux в 2017 году

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

Команда GNU history хранит список всех других команд, которые были запущены в этом терминальном сеансе, а затем позволяет вам воспроизвести или повторно использовать эти команды вместо их повторного ввода. Если вы опытный пользователь терминала, вы знаете о силе истории , но для нас, дилетантов или начинающих системных администраторов, история — это немедленный прирост производительности.

Во-первых, команда history на самом деле не является командой. Вы можете убедиться в этом сами, выполнив команду в своей системе:

Ваш компьютер не может найти команду history, поскольку это встроенное ключевое слово вашей оболочки. Поскольку он записывается в используемую вами оболочку, поведение истории может отличаться в зависимости от того, используете ли вы Bash, tcsh, Zsh, dash, fish, ksh и т. д. Эта статья основана на реализации истории в Bash, поэтому некоторые функции могут не работать в других оболочках. Однако большинство основных функций остались прежними.

История 101

Чтобы увидеть историю в действии, откройте терминальную программу в вашей системе Linux и введите:

Вот что я получил:

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

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

Это заставит историю найти последнюю команду, которая соответствует предоставленному вами шаблону (в данном случае это шаблон dnf), и запустить ее.

История поиска

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

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

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

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

Вы также можете использовать историю для повторного запуска команды с другим синтаксисом. Вы можете пересмотреть историю с историей. Например, если я хочу изменить свою предыдущую историю команд | grep dnf в историю | grep ssh , я могу выполнить следующее в командной строке:

Команда запускается повторно, но с заменой dnf на ssh . Другими словами, запускается эта команда:

Удаление истории

Файл истории хранится в файле, который вы также можете изменить. Пользователи оболочки Bash находят его в своем домашнем каталоге как .bash_history .

Дальнейшие шаги

Есть ряд других вещей, которые вы можете делать с историей:

  • Установите размер буфера истории на определенное количество команд
  • Запишите дату и время для каждой строки в истории.
  • Запретить запись определенных команд в историю

Для получения дополнительной информации о команде history и других интересных вещах, которые вы можете с ней делать, ознакомьтесь со статьями Сета Кенлона о синтаксическом анализе истории, модификаторах поиска по истории и Руководстве по GNU Bash.

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

Читайте также: