Command history что это за программа

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

В этой статье мы поговорим о команде history , которая позволяет просматривать список ранее выполненных команд, выполнять поиск по списку и управлять файлом истории.

Использование команды history и расширений истории

history — это встроенная оболочка, и ее поведение может немного отличаться от оболочки к оболочке. Мы рассмотрим встроенную в Bash версию history .

В простейшей форме при вызове без какой-либо опции или аргумента команда history отображает весь список истории с номерами строк.

history
. 467 git push 468 tail -f var/logs/error 469 nano +22,5 functions.sh 470 source project-env/bin/activate 471 history

При вводе !n выполняется n-я команда из списка истории, а !-n команда возвращается на n строк. В следующем примере мы выполняем команду в строке 467 :

Command History

Другой способ выполнить команду — использовать расширение !word . word относится к самой последней команде, начинающейся с слова.

Обычно в history отображается много строк вывода, которые не помещаются на экране. Чтобы просмотреть вывод по одной странице за раз, направьте его в программу пейджера, например, команду more или less :

history | less

Чтобы отобразить последние n строк, передайте число в качестве аргумента команды. Например, чтобы просмотреть только последние пять строк из списка истории, введите:

history -5

Используйте клавиши со стрелками up и down для перемещения по записям в списке. Когда отобразится искомая команда, нажмите Enter чтобы выполнить ее.

Типа !! для выполнения предыдущей команды:

Это особенно полезно, когда вы забываете привязать команду к sudo и вместо повторного ввода команды можете ввести:

sudo !!

!-1 совпадает с !! и выполняет последнюю команду из списка истории !-2 секунды до последней и так далее.

^word1^word2^ позволяет повторно запустить последнюю команду, заменив «word1» на «word2». Если вы случайно набрали sduo command вместо команды sudo command вы можете повторить команду, используя правильное слово:

^sduo^sudo^

Используйте команду grep для фильтрации вывода. Например, чтобы просмотреть все команды, включая «nano», вы должны выполнить:

history | grep nano
302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22,5 functions.sh

Теперь, если вы хотите повторно запустить команду nano setup.py просто введите:

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

(reverse-i-search)`’:

Оболочка отобразит соответствующую строку. Чтобы перейти к следующему подходящему предложению, снова нажмите Ctrl-R .

Читайте также:
Side что за программа

Обратитесь к руководству Bash для получения дополнительной информации о расширении истории , модификаторах и позиционных обозначениях.

Bash History | Your Linux Command History Explained

Сохранение списка истории

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

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

Параметр -a позволяет сохранить список истории текущего сеанса в файл .bash_history :

history -a

Параметр -w записывает полный список истории в файл истории.

history -w

История очистки

Команда history позволяет очистить полный список истории или удалить определенные части.

Чтобы очистить список истории, используйте параметр -c :

history -c

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

Например, чтобы удалить строки между 365 и 375 (включая эти строки), вы должны ввести:

history -d 365 375

Если вы укажете только одно число для опции -d , команда удалит данную строку.

Когда используется отрицательное целое число, строки отсчитываются от конца списка истории.

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

history -chistory -w

Изменение поведения в истории

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

По умолчанию Bash сохраняет 500 строк в списке истории команд. Переменная HISTSIZE позволяет вам изменять это значение. Чтобы установить значение 10000, добавьте в файл .bashrc следующую строку:

HISTSIZE=10000

Переменная HISTCONTROL принимает список значений, разделенных двоеточиями, которые определяют способ сохранения команд в списке истории:

  • ignorespace — команды, начинающиеся с пробела, не сохраняются в списке истории.
  • ignoredups — повторяющиеся команды не сохраняются.
  • ignoreboth — это сокращение, включая как ignorespace и ignoredups .

HISTCONTROL=ignoreboth

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

Например, если вы установите:

HISTTIMEFORMAT=»%F %T: »

История будет отображаться в следующем формате:

413 2019-10-27 21:13:07: sudo nano /etc/hosts

Выводы

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник: routerus.com

Работа в Linux с историей команд (history)

Как говориться «лень — двигатель прогресса» поэтому я покажу как можно еще работать с командной строкой bash, стандартно с помощью клавиш перемещения курсора можно перемещаться по списку ранее введенных команд. Если мне была нужна определенная команда из ранее введенных — „стрелка вверх“ и до тех пор пока нужная команда не появиться в терминале далее корректировка по надобности и выполнения ее.
Оказываеться есть еще один хороший способ — для просмотра списка ранее введенных команд в bash — имеется команда history. По умолчанию она выводит список команд хранящийся в истории.
$ history
1 sudo route del -net
2 cat /etc/resolv.conf
3 htop
.
50 nslookup
51 ping mail.ru
52 ifconfig
.
200 sudo aptitude full-upgrade
.
300 mc

Читайте также:
Что за программа паттерн макер

По умолчанию все пишиться в файл ~/.bash_history, а его размер — 500 команд.
Если хотим хранить историю в другом файле, то нужно в .bashrc, задать команду HISTFILE=~/.my_history.
HISTSIZE — определяет число строк, хранящихся в списке истории (в памяти интерпретатора).
HISTFILESIZE — максимальное количество команд хранящихся в файле истории.
Если интересует больше записей, по можно поменять под себя:

$ export HISTSIZE=1000
$ export HISTFILESIZE=1000

  • !! — ссылается на предыдущую команду;
  • !n — ссылается на команду под номером n;
  • !-n — ссылается на команду по номером „текущая минус n“;
  • history -c — очистить историю команд, удалив все записи
  • history -d n — удалить из истории запись под номером n
  • history -a — дописать команды, введенные в текущей сессии bash, в конец файла $HISTFILE

Дополнения:
Так же можно сохранить дату и время для каждой команды в истории, для этого в конец .bashrc дописываем:
$ nano .bashrc

и применяем изменений в .bashrc без перезапуска сеанса/системы делаем командой
$ bash
Получаем :
$ history 3

147 Aug/11 — 11:05:28 sudo aptitude install gspca-source
148 Aug/11 — 11:07:23 cd /lib/modules/2.6.32-22-generic/
149 Aug/11 — 11:11:08 modprobe gspca

Контролируйте Bash History

HISTCONTROL — представляет из себя список опций, разделенных двоеточиями.

Они контролируют каким образом список команд сохраняется в истории.

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

Пример :

export HISTCONTROL=ignorespace:erasedups

Добавьте в .bashrc:

export HISTCONTROL=»ignoredups»

Это заставит bash игнорировать дупликаты, так же как ls, bg, fg и exit, делая историю чище.

Забытая история bash.

Если вы открыли терминал и печатаете там команды, потом открыли еще один, немного его поиспользовали, то новый терминал не «вспомнит» ни одной команды, напечатанной в первом. Вдобавок, при закрытии первого терминала второй перезапишет все команды в истории, введённые в первом. Вдвойне досадно!

Это происходит потому, что история bash сохраняется только когда вы закрываете терминал, а не после каждой команды. Чтобы исправить такое поведение, добавьте в ~/.bashrc строки:

shopt -s histappend
PROMPT_COMMAND=`history -a`

Добавьте следующую строку, если переменная $PROMPT_COMMAND уже была задана :

PROMPT_COMMAND=’$PROMPT_COMMAND; history -a’

Это заставит bash дополнять историю вместо того, чтобы перезаписывать её: каждый раз, когда показывается приглашение командной строки, последняя команда добавляется в историю.

Увеличиваем Размер Хранимой Истории

Увеличьте HISTSIZE — количество команд, которые необходимо запоминать в списке истории (стандартное значение — 500).

export HISTSIZE=10000

Увеличьте HISTFILESIZE — максимальное количество строк, содержащееся в файле истории (стандартное значение — 500).

export HISTFILESIZE=10000

Одна Команда — Одна Запись в Истории

Сохранять все строки многострочной команды в одной записи списка истории :

shopt -s cmdhist

Изменить Имя Файла с Историй Команд

Используйте HISTFILE для изменения имени файла, в котором сохраняется история команд. Стандартное значение ~/.bash_history.

Читайте также:
Внешний накопитель что это за программа

export HISTFILE=~/.custom_file

Читайте другие интересные статьи

Понравилась статья, расскажи о ней друзьям, нажми кнопку!

Источник: adminunix.ru

Запускаем и ищем предыдущие команды в Linux

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

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

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

!команда — используется для выполнения команды с аргументами, которые использовались при последнем запуске.

Предположим, мы выполняем какие-нибудь команды и дополняем их аргументами. Например, мы решили отредактировать файл myfile.txt в текстовом редакторе nano. Для этого мы выполняем:

nano /home/pingvinus/path/to/file/myfile.txt

Далее мы можем выполнять еще какие-нибудь команды, затем снова хотим выполнить nano, чтобы открыть в нем файл myfile.txt. Мы можем воспользоваться волшебным «!». Для этого достаточно написать восклицательный знак и без пробела название команды:

!nano

В результате будет вызвана команда nano с теми аргументами, с которыми она вызвалась последний раз, то есть в нашем случае !nano будет аналогично вызову nano /home/pingvinus/path/to/file/myfile.txt.

Выполнение предыдущей команды. Используем «!!»

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

Про два восклицательных знака я уже рассказывал. Например, вы вызвали команду:

apt-get install leafpad

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

sudo !!

Отмечу, что !! можно использовать прямо внутри текста команды. Например, мы перейдем в домашнюю директорию пользователя pingvinus:

cd /home/pingvinus

А теперь войдем в папку /home/pingvinus/Downloads вот таким образом:

!!/Downloads

Поиск по истории команд. Команда history

history — поиск по истории команд — предназначена для вывода истории команд, поиска по ним и быстрого запуска предыдущих команд.

Если мы выполним history, то на экран будет выведен список последних введенных вами команд:

$ history . 139 leafpad pigvinus.txt 140 sudo apt-get install gedit 141 pwd 142 cd /home/pingvinus

Каждая команда пронумерована. Чтобы вызвать какую-нибудь команду из списка достаточно выполнить в командной строке: !номер. Например выполним команду под номером 139:

Можно указать номер с минусом. Например, выполнив !-2 мы выполним пред-предыдущую команду. Выполнив, !-1 мы выполним предыдущую команду, это эквивалентно команде !!, описанной выше.

Для поиска по истории можно воспользоваться утилитой grep:

history | grep gedit

У команды history есть еще несколько дополнительных возможностей. Почитать руководство по history можно, выполнив man history.

Поиск по истории. Сочетание клавиш Ctrl+R

Ctrl+R — сочетание клавиш, которое используется для вызова «интерактивного» поиска по истории команд.

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

(reverse-i-search)`’:

Начинайте вводить начальную часть или середину команды, которую вы ищете. То, что вы вводите будет заключено в кавычки, а после значка двоеточия вам будет предложена команда, найденная в истории команд, которая максимально удовлетворяет поиску. Например, я нажал Ctrl+R и начал вводить id-, и нашлась команда, содержащая символы id-:

(reverse-i-search)`id-‘: git clone https://github.com/id-Software/DOOM-3.git

Источник: pingvinus.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru