- 📑 Команда history или работа с историей введенных команд
- Настройки истории команд
- Включить/отключить перезапись файла истории
- Показать список ранее выполненных команд bash
- Выполнение команды из истории bash
- Где хранится история bash для пользователя root?
- 3 ответа
- Команда History в Linux (История Bash)
- Использование команды history и расширений истории
- Сохранение списка истории
- История очистки
- Изменение поведения в истории
- Выводы
- Команда history в Linux (Bash History)
- Использование команды history и журнала расширений
- Сохранение списка истории
- Очистка истории
- Изменение поведения history
- Заключение
📑 Команда history или работа с историей введенных команд
Иногда при работе в Linux Ubuntu/Mint в терминальном режиме нам нужно выполнять одни и те же команды несколько раз. Это занимает очень много времени и порождает ошибки при вводе, особенно если эти команды очень длинные.
К счастью, Bash имеет хорошее решение этой проблемы — историю bash. Используя механизм истории bash, ранее выполненные команды могут легко извлекаться и выполняться без повторного ввода команды. Linux хранит историю командной строки каждого пользователя в домашнем каталоге.
По умолчанию команда bash — history отображает список ранее набранных команд с номерами строк. Но вы также можете получить историю команд с указанием даты и времени и повторно запускать эти команды различными способами.
Настройки истории команд
В файле .bashrc вашей домашней директории существует несколько переменных, которые используются для управления записями истории команд. Bash хранит историю команд двумя способами — история может быть сохранена в файле и в оперативной памяти.
Переменная HOSTFILE используется для установки местоположения и имени файла истории. По умолчанию историческая информация хранится в файле .bash_history. Сколько команд может быть сохранено в файле, задается с помощью переменной HISTFILESIZE (в принцепе эта переменная задаёт размер файла истории), а количество команд текущего сеанса может храниться в памяти — с помощью переменной HISTSIZE.
Откройте файл .bashrc в любом редакторе и выясните настройки этих параметров по умолчанию. Здесь для редактирования этого файла используется текстовый редактор nano.
В соответствии с содержимым этого файла значение HISTFILESIZE по умолчанию равно 2000, а HISTSIZE — 1000. Вы можете изменить эти значения по своему выбору.
Если вы не хотите, чтобы исполняемые команды записывались в историю, вы можете переменную окружения HISTSIZE сделать равной 0, после чего команды перестанут записываться в историю:
Включить/отключить перезапись файла истории
Для каждого нового сеанса файл истории дописывается текущими командами истории в конце сеанса. Для этого существует запись в файле .bashrc:
Чтобы проверить текущую настройку перезаписи истории можно не открывать файл в редакторе, а выполнить команду:
Если вы хотите хотите добавлятьть новые записи истории в конец файла, выполните следующую команду:
Чтобы перезаписывать файл истории, нужно ввести команду:
Тогда на проверку настройки выдаст:
Показать список ранее выполненных команд bash
Чтобы получить список выполненых команд, выполните следующую основную команду
Вы можете получить определенное количество истории, указав номер с помощью команды истории. Следующая команда извлекает 3 последние выполненные команды из истории.
Список истории конкретной команды можно получить с помощью команды команда history. Например, следующая команда возвращает список истории всех команд «ls».
Выполнение команды из истории bash
Вы можете легко выполнить любую команду из истории, указав номер строки с символом «!». Следующая команда выполнит команду строки № 17 из файла истории
Если использовать два восклицательных знака, будет повторена предыдущая команда:
Для того, чтобы вывести историю команд с игнорированием дублей достаточно использовать значение erasedups переменной окружения HISTCONTROL:
Для очистки истории команд достаточно использовать параметр -c команды history:
Источник
Где хранится история bash для пользователя root?
Я не говорю о .bash_history из моего домашнего каталога. Обычно я предпочитаю использовать sudo -i или sudo su а затем запустить команды как пользователь root.
Поскольку после этих команд история не сохраняется в файле .bash_history из моего домашнего каталога, я хочу знать, если эта история где-то сохраняется или нет, и если да, то где?
3 ответа
Ну, когда вы вошли в систему под именем root, история bash сохраняется в файле /root/.bash_history , где /root — это домашний каталог по умолчанию для пользователя root. Чтобы доказать это, запустите следующую команду при регистрации в качестве пользователя root:
Переменная $HISTFILE указывает на файл, содержащий вашу историю.
Обычно, когда вы входите в учетную запись другого пользователя, история bash будет сохранена в файле с именем .bash_history , расположенном в домашнем каталоге этого пользователя.
Кроме того, если вы хотите сохранить историю bash для пользователя root в другом файле, скажем в файле .bash_history из моего дома вам нужно отредактировать файл /root/.bashrc и добавить новую строку в конец файла со следующим содержимым:
Я использую список ярлыков с помощью клавиши вверх на клавиатуре, которая показывает последнюю использованную команду для этого пользователя. Если вы входите в систему под именем root, вам будет показана история для пользователя root.
Протестируйте его так: sudo -i введите пароль, а затем нажмите клавишу вверх на клавиатуре. Теперь вы прокрутите последние использованные команды в порядке, указанном последним до самого старого.
Я знаю, что ответ Раду Радеану — это то, что вы хотели. Но это также решает проблему. Мое решение — более удобный способ запомнить старую команду, которая может сэкономить время и сутолока.
Ввод 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 отображает список ранее выполненных команд. Например, вы можете использовать историю, чтобы просмотреть длинную команду, которую вы использовали раньше, но не можете вспомнить.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Команда 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.
Источник