Bash history что за файл
Перейти к содержимому

Bash history что за файл

  • автор:

Работа с историей команд bash

Количество хранимых команд определяется двумя переменными: HISTSIZE и HISTFILESIZE . Первая определяет количество команд, хранимых в памяти, вторая — в файле. Их уместно устанавливать в ~/.bachrc . Такие значения, мне представляются оптимальными:

HISTSIZE=5000 HISTFILESIZE=10000 

Настройка способа сохранения

По умолчанию, каждый экземпляр bash переписывает историю. То есть, если вы запустите два терминала, что-то в них сделаете, а потом закроете, то история сохранится только от последнего закрытого. (Она затрёт историю первого закрытого.) Это очень неудобно и легко исправляется вот такой командой:

shopt -s histappend 

которую тоже уместно написать в ~/.bachrc .

Простой просмотр истории

history 

Пять последних команд:

history 5 

В сочетании с grep :

history | grep cd 

Но это всё только присказка.

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

Восклицательный знак выполняет команду с данным номером. Пример:

~$ ls -ld /bin lrwxrwxrwx 1 root root 7 май 31 2013 /bin -> usr/bin ~$ history 3 4220 cd 4221 ls -ld /bin 4222 history 3 ~$ !4221 ls -ld /bin lrwxrwxrwx 1 root root 7 май 31 2013 /bin -> usr/bin ~$ echo !4221 echo ls -ld /bin ls -ld /bin 

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

$ sudo !4221 $ !4221 >/dev/null 

Номер может быть относительным, с конца: !-2 . Специальное сокращение !! — последняя команда.

Передвижение по истории

Все знают о том, что по истории можно двигаться клавишами-стрелками. Но иногда бывают ситуации, когда эти клавиши недоступны, работают не правильно, или просто отсутствуют (у меня такое было, когда я подключался каким-то ssh-клиентом с iPad). На этот случай полезно знать, что промотка работает по Ctrl-p и Ctrl-n .

Поиск по истории

Режим поиск включается по Ctrl-r . Для поиска следующего совпадения надо повторно нажать Ctrl-r . Для передвижения по совпадениям в другую строну есть сочетание клавиш Ctrl-s .

Проблема в том, что Ctrl-s в большинстве терминалов приводит к засыпанию. Чтобы выйти из сна, нажмите Ctrl-q . Чтобы отключить засыпание, есть команда:

stty -ixon 

Поиск по истории по началу команды

Bash (а вернее readline) поддерживает очень удобный стиль поиска — по первым символам команды. К сожалению, по умолчанию, этот механизм недоступен. Чтобы его включить, надо написать в ~/.inputrc что-то такое:

# Shift-[Up][Down] "\e[1;2A" history-search-backward "\e[1;2B" history-search-forward 

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

Естественно, можно настроить любые другие клавиши.

Подстановки и изменения команд

Вы уже видели три простейшие подстановки:

  • !! — последняя команда
  • !n — n-ная в истории команда (с номером n)
  • !-n — n-ная с конца команда

После восклицательного знака можно указывать подстроку-начало команды.

!ls — последняя команда ls (со всеми аргументами).

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

!?encoder? последняя команда с подстрокой encoder .

Операции с отдельными словами

Все слова (параметры разделённые пробелами) доступны через модификатор : (двоеточие). Пример:

$ cd /home $ echo . 1 echo /home /home 

Здесь !! — ссылка на последнюю команду, а :1 ссылка на её первый аргумент. Поэтому, в нашем примере echo . 1 преобразуется в echo /home .

Для этого случая: когда мы оперируем именно с последней командой, можно опускать один восклицательный знак и двоеточие:

$ echo !1 

Есть и привычные сокращения: первый аргумент — ^ , последний — $ , все — * . Имеются ввиду именно параметры команды. Без учёта самой команды.

Манипуляции с путями и именами файлов

Следующий уровень модификаторов позволяет минимально управлять именами файлов.

Модификатор :t даёт доступ к имени файла. Эта удобно скажем в таком сценарии работы:

Вы обращаетесь к некому файлу, указывая полный путь:

cat /etc/hosts 

Потом переходите в директорию с этим файлом

cd /etc 

Выполняете ещё какие-то команды, а потом решаете отредактировать файл. Тогда вы можете написать так:

vi !cat:$:t 

То есть, вы находите в историю последнюю команду cat ( !cat ), берёте её последний аргумент :$ , а от него оставляете только имя файла :t .

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

vi /etc/hosts cd $vi:$:h 

Последняя команда перейдёт в директорию /etc .

Последний модификатор из этой серии — :r . Он отрезает расширение. Его можно указывать несколько раз, есть вы хотите отрезать несколько расширений ( .tar.gz ).

Bash, история команд

История Bash – это текущая запись всех команд, которые вы вводите в оболочку Bash. По мере ввода команд они сохраняются в оперативной памяти и записываются в файл .bash_history после закрытия сеанса оболочки.

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

Переменные Bash History

Есть несколько переменных среды, которые управляют конфигурацией истории bash.

HISTFILE – Содержит расположение файла .bash_history.
HISTFILESIZE – содержит максимальное количество строк, которые будут записаны в файл истории bash.
HISTSIZE – содержит количество событий, которые будут храниться в оперативной памяти.
HISTCONTROL – содержит правила для того, что должно быть записано в историю, а что следует игнорировать.

Настройки HISTCONTROL

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

Ignoredups – Не писать строку после команды дублирования строки.
Ignorespace – не писать строки, начинающиеся с одного или нескольких пробелов в истории.
Ignoreboth – Установить оба значения выше.
Undefined – Если вы не определяете какие-либо правила, они не будут применены.

Проверьте текущие настройки истории с помощью команды экспорта:

user@srv01:~$ export | grep -i hist declare -x HISTCONTROL="ignoredups" declare -x HISTSIZE="1000"

Измените настройки, экспортировав нужную переменную:

user@srv01:~$ export HISTCONTROL="Ignoreboth" user@srv01:~$ export | grep -i hist declare -x HISTCONTROL="Ignoreboth" declare -x HISTSIZE="1000"

Сделайте ваши настройки постоянными, добавив их в файл bashrc:

user@srv01:~$ echo "export HISTCONTROL=Ignoredups" >> ~/.bashrc user@srv01:~$ echo "export HISTSIZE=2000" >> ~/.bashrc

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

user@srv01:~$ source ~/.bashrc user@srv01:~$ echo $HISTSIZE 2000

Показать историю команд

Чтобы отобразить список ранее введенных команд в вашей системе Linux, вы будете использовать команду history. Просто введите в командной строке:

user@srv01:~$ history 1 cd /var/log 2 tail -10 /var/log/messages 3 history

Команда history выводит все команды из вашей истории, начиная с первой и заканчивая последней. Значение по умолчанию обычно составляет 1000, но это можно контролировать, изменяя переменную среды $HISTFILESIZE.

Показать последнее X количество команд

Вы можете посмотреть последнее число набранных команд, просто добавив число к команде. Например, если вы хотите увидеть последние 20 команд:

$ history 20 7 vi names 8 for i in `cat names`; do dig +short $i; done 9 vi names 10 for i in `cat names`; do dig +short $i; done 11 for i in `cat names`; do dig +short $i >> ptr; done 12 cat ptr 13 for i in `cat names`; do echo -n "FORWARD: $i - REVERSE: "; dig +short $i; done 14 cd ~ 15 cd scripts/ 16 ls -lrt 17 vi update-clam.sh 18 freshclam 19 history -d 19 20 cd /var/tmp 21 ls -lrt 22 unzip android-studio-ide-135.1740770-linux.zip 23 cd android-studio/ 24 cd bin/ 25 ./studio.sh 26 history 20

Вызов команд из истории

Если вы хотите повторить самую последнюю команду, вы можете просто напечатать !! в командной строке bash запустит самую последнюю введенную вами команду. Я не считаю эту команду столь же полезной, как другие, потому что вы можете просто нажать стрелку вверх для того же эффекта. Например, допустим, вы хотели запустить команду, которую выполнили шесть команд назад. Для этого вы можете запустить следующую команду:

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

Вы также можете использовать “!” как своего рода поиск. Используя мой пример истории bash, скажем, я хотел запустить последний цикл for, который был запущен. Вы можете использовать “! -14”, но трудно вспомнить, сколько команд было назад, по крайней мере, для меня. Вместо этого мы можем сказать bash просто выполнить последнюю команду, начинающуюся с “for”, вот так:

user@srv01:~$ !for for i in `cat names`; do echo -n "FORWARD: $i - REVERSE: "; dig +short $i; done

Вы также можете указать по номеру, какую команду вы хотите запустить. Например, я хотел запустить команду 18 в приведенном выше примере. Используя восклицательный знак, сделать это можно так:

user@srv01:~$ !18 freshclam

Использование указателей слов

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

Допустим, мы хотели увидеть размер файла, а потом решили, что хотим посмотреть его содержимое. Мы можем использовать обозначение слова “. $”, чтобы извлечь последнее слово из последней команды и заменить его командой cat следующим образом.

user@srv01:~$ ls -lrt /etc/redhat-release lrwxrwxrwx. 1 root root 14 May 22 16:39 /etc/redhat-release -> fedora-release user@srv01:~$ cat . $ cat /etc/redhat-release Fedora release 17 (Beefy Miracle)

Обозначение “. $” можно сократить до “! $”. Важно знать, что слова разделены пробелами, причем первое слово начинается с 0.

Например, следующая команда:

dig +short ya.ru

dig – это слово 0, + short – это слово 1, а ya.ru – это слово 2.

Теперь давайте посмотрим, как извлечь первое слово (или 0) из команды. Мы будем использовать тот же пример выше, но на этот раз мы хотели бы перечислить весь каталог вместо просмотра содержимого файла.

user@srv01:~$ ls -lrt /etc/redhat-release lrwxrwxrwx. 1 root root 14 May 22 16:39 /etc/redhat-release -> fedora-release user@srv01:~$ . 0 ls Backups Music Public scripts Documents SSLThing Desktop Downloads Pictures Videos

Вы также можете извлечь слово из команды, используя синтаксис поиска. Например, допустим, вы хотели использовать второе слово (1) из последней команды cat, которую вы выполнили. Не имеет значения, была ли это последняя команда, которую вы выполнили, или 30 команд назад, вы можете использовать обозначение “! : 1”. Вот пример:

user@srv01:~$ dig +short ya.ru 87.250.250.242 user@srv01:~$ uname -r 4.20.8-200.fc29.x86_64 user@srv01:~$ cat /etc/redhat-release Fedora release 29 (Twenty Nine) user@srv01:~$ host !dig:2 host ya.ru ya.ru has address 87.250.250.242 ya.ru has IPv6 address 2a02:6b8::2:242 ya.ru mail is handled by 10 mx.yandex.ru. 

Как вы можете видеть выше, “! Dig: 2” выполнил обратный поиск самой последней команды, начинающейся с “dig”, затем взял второе слово и вставил его в команду.

Поиск Bash History

Вы также можете искать по истории Bash. В командной строке bash, удерживая нажатой клавишу Ctrl, нажмите “r” и начните вводить первые несколько букв команды, которую вы ищете. Например, допустим, что я искал цикл “while”, который недавно набрал, для этого нажать [Ctrl + r] и набрать “wh”, вот так:

user@srv01:~$ (reverse-i-search)`wh': while read line; do echo $line | cut -f"s*" -d 2; done < forward

Этот поиск найдет последнюю команду, начинающуюся с “wh”, для поиска выше или глубже в истории просто снова нажмите [Ctrl + r].

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

$ !?FORWARD?
user@srv01:~$ !?FORWARD? for i in `cat names`; do echo -n "FORWARD: $i - REVERSE: "; dig +short $i; done

Вы также можете использовать другие инструменты, такие как more, less или grep.

history | more history | less history | grep ssh

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

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

Ваша история bash – это просто текстовый файл, сохраненный в ~ / .bash_history. Вы можете просто удалить этот файл, чтобы очистить историю bash, или вы можете более аккуратно выполнить команду history с опцией clear, например, так:

history -c

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

history -d 12

Заключение

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

Если вам понравился этот пост, пожалуйста, поделитесь им.

Рубрики Linux, Микрокомпьютеры Метки bash, Linux, Ubuntu

Оставьте комментарий Отменить ответ

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

Свежие записи

  • Установка Samba в Ubuntu 20.04
  • Проброс порта через VPN в домашнюю сеть
  • WebStorm IDE горячие клавиши
  • Web разработка
  • Bash, история команд

Архивы

  • Октябрь 2020 (1)
  • Август 2020 (1)
  • Июль 2020 (1)
  • Март 2020 (1)
  • Март 2019 (1)
  • Февраль 2019 (6)
  • Октябрь 2018 (7)
  • Сентябрь 2018 (13)

Рубрики

  • Linux (24)
  • Web Development (3)
  • Windows (1)
  • WordPress (3)
  • Микрокомпьютеры (8)
  • Периферия (1)
  • Сети (8)

BASH_HISTORY - Bash History File

Файлы с очень длинным расширением BASH_HISTORY создаются в Bash. Bash - это программа-оболочка Unix. Bash используется не в Windows, а в совершенно других операционных системах - Mac OS X и Linux. В файле BASH_HISTORY, как уже следует из названия, хранится история данных и команд, введенных с использованием командной строки Bash. Таким образом, такая история ввода позволяет вам вспомнить все ранее выполненные запросы.

Файлы BASH_HISTORY не имеют реального имени файла. Единственный способ найти их на вашем компьютере - воспользоваться их расширением ".bash_history". Кроме того, такие файлы обычно являются скрытыми, поэтому их не видно большинству пользователей соответствующей операционной системы.

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

  • Apple Terminal (Mac)
  • GNU Bash (Mac & Linux)

BASH_HISTORY file - Что это? Как открыть такой файл? Решения проблем с файлами BASH_HISTORY

Неизвестное расширение файла может быть источником различных проблем. Однако выявление причин проблем с файлами BASH_HISTORY и их устранение не являются сложным процессом. Эта статья опишет 5 простых шагов, которые позволят вам решить проблемы с файлами BASH_HISTORY.

  1. 1. BASH_HISTORY расширение файла
  2. 2. Как открыть файл BASH_HISTORY?
    1. 2.1 Найдите и скачайте и установите соответствующее программное обеспечение
      1. 2.1.1 Программы, поддерживающие BASH_HISTORY файлы
      BASH_HISTORY расширение файла
      • Тип файла Bash History Format
      • Разработчик файлов The GNU Project
      • Категория файла Системные файлы
      • Рейтинг популярности файлов
      Как открыть файл BASH_HISTORY?
      Шаг 1. Найдите и скачайте и установите соответствующее программное обеспечение

      Обычно для открытия файлов. BASH_HISTORY достаточно выполнить следующие простые шаги: найти, загрузить и установить соответствующее программное обеспечение. Затем, дважды щелкнув значок файла, откройте файл. Система должна автоматически связать BASH_HISTORY файл с соответствующим программным обеспечением. Ниже приведен список программ, необходимых для открытия файлов с расширением BASH_HISTORY:

      Программы, поддерживающие BASH_HISTORY файлы
      Шаг 2. Убедитесь, что файл BASH_HISTORY не заражен вредоносным ПО

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

      Подсказка!

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

      Шаг 3. Убедитесь, что файлы BASH_HISTORY завершены, то есть были ли они загружены правильно

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

      Шаг 4. Убедитесь, что файлы BASH_HISTORY связаны с соответствующим программным обеспечением

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

      Связывание файлов с приложениями выполняется аналогично, независимо от типа системы, и состоит в выборе приложения, которое следует использовать для открытия файлов данного типа. Чтобы связать BASH_HISTORY файлы с данным приложением, щелкните правой кнопкой мыши значок файла и выберите в контекстном меню пункт «Открыть с помощью» , который отобразит список предлагаемых программ. Выберите вашу программу из списка. Если приложение отсутствует в списке, используйте кнопку «Обзор» и укажите местоположение приложения. Если установлен флажок «Всегда использовать выбранное приложение для открытия файлов такого типа» , выбранное приложение будет установлено в качестве приложения по умолчанию для открытия указанных файлов.

      Шаг 5. Убедитесь, что носитель, на котором хранятся файлы BASH_HISTORY, не поврежден или не поврежден

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

      Подобные расширения файлов
      • Расширение файла Имя файла
      • .BABL DeBabelizer
      • .BA_ Renamed BAT Format
      • .BAMP Easy Button & Menu Maker Project
      • .BAZ Acomba Accounting Suite Backup
      • .BAI BUILD2WIN Add-in
      • .BAS BASIC Source Code Format
      • .BAK~ AbiWord Auto-Saved Document
      • .BAD Exchange Badmail Format

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *