ryg

Команда history в Mac OS X и FreeBSD

Синтаксис:

      history [n]
      history -c
      history -d offset
      history -anrw [filename]
      history -p arg [arg ...]
      history -s arg [arg ...]

Описание:

Встроенная команда bash позволяет управлять списком выполненных команд в текущей сессии. При использовании команды без параметров выводится пронумерованный список истории команд. Если указать значение параметра n, то будет выведено n последних команд. Строки с примечанием в виде * означает, что команда была модифицирована. Чтобы выполнить конкретную команду из списка используйте оператор '!'. Например
!30
выполнит тридцатую по списку команду, а команда
!-3 
выполнит третью с конца команду
Сохранить историю после выполнения серии команд, для создания скрипта можно с помощью команды:
history 20 >cmds.txt

Параметры:

-c Удалить всю историю команд
-d offset Удалить из списка команду под указанным номером строки.
-a Добавить строки истории команд текущей сессии bash к содержимому заданного файла
-n Добавить в список команды из файла истории, если они отсутствуют в списке.
-r Считать содержимое файл с истории команд и использовать его содержимое качестве истории текущей сессии
-w Записать текущую историю команд в файл, переписав его содержимое 
-p arg Выполнить замещение указанных args и показать результат в стандартном выводе. Результат не сохраняется в списке. Значения arg необходимо заключить в кавычки.
-s arg Добавить arg в конец списка команд, не выполняя его.
Если для параметров -a, -n, -r, -w указано имя файла, то история будет сохранена в него, если нет, то будет использовано имя указанное в переменной окружения HISTFILE

Переменные:

HISTCONTROL  управляет хранением истории команд. Флаг ignorespace задает игнорирование команд начинающихся с пробела (сохраняться не будут), ignoredups игнорировать повторяющиеся команды и ignoreboth - игнорировать команды, начинающиеся с пробела и повторяющиеся (аналогично ignorespace:ignoredups). 

export HISTCONTROL=erasedups

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

export HISTFILE=~/.history2

HISTSIZE определяет количество строк (команд) хранимых в истории (по умолчанию 500). При превышении количества удаляются старые команды.

export HISTSIZE=5000

HISTFILESIZE -определяет количество команд хранящихся в файле истории (~/.bash_history) после выхода из оболочки bash (по умолчанию 500)

export HISTFILESIZE=5000

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

Примеры:

Удобно использование данной команды совместно с командой grep

history |grep "mysql"

В данном случае на экран будут выведены команды в которых встречается слово mysql.

Иногда удобно использование команды !! - данная команда заставляет повторить предыдущую команду. Это удобно когда возникает необходимость использовать команду sudo, Например:
$ purge
Unable to purge disk buffers: Operation not permitted
$sudo !!
Команада purge в Mac OS X 10.9 Mavericks требует прав суперпользователя, тогда sudo !! превратит ее в 
sudo purge

Связанные команды:

fc
shopt
complete
grep  -искать строки в файлах соответствующие заданному шаблону

Алфавитный список команд terminal в Mac OS X