Команда history, это не просто вывод истории команд, которые ты или кто-то набирал в консоли. Это великолепный инструмент, с помощью которого можно воссоздать к примеру всю картину настройки сервера. Либо отдебажить момент когда всё работало, а сегодня перестало, по причине какого нибудь отбитого админа, который решил тонко оптимизировать linux ядро.
В общем — history, это как спасательный круг. Давай сегодня затюним её на удобство.
Чего же не хватает из коробки? А не хватает временны́х маркеров, то есть даты и времени, когда была выполнена та или иная команда. Это легко решаемо. Для оболочки bash это делается так:
export HISTTIMEFORMAT="%d/%m/%y %T "
И вывод будет примерно таким:
369 20/07/23 15:46:54 flask run
370 20/07/23 15:46:54 /usr/bin/python3
371 20/07/23 15:46:54 python --version
372 20/07/23 15:46:54 python3 --version
373 20/07/23 15:46:54 ps ax|grep python
374 20/07/23 15:46:54 sudo kill -9 30049
375 20/07/23 15:46:54 brew install pyenv
Либо можешь прописать это в ~/.bashrc чтобы export выполнялся автоматически:
echo "export HISTTIMEFORMAT=\"%d/%m/%y %T \"" >> ~/.bashrc
Прекрасно, теперь намного нагляднее. Идем дальше. Давай перекрасим временные маркеры в синий цвет, чтобы более лаконично выглядело.
export MY_BASH_BLUE="\033[0;34m"
export MY_BASH_NOCOLOR="\033[0m"
export HISTTIMEFORMAT=`echo -e ${MY_BASH_BLUE}[%F %T $MY_BASH_NOCOLOR`
Эти экспорты можешь так же закинуть в ~/.bashrc и затем выполнить команду source ~/.bashrc чтобы не перезагружать сессию и применить настройки в моменте.
Окей, но как же быть с оболочкой zsh? Сейчас и в ней сделаем нечто подобное.
➕ Подпишись на BashDays в телеграм
Из коробки zsh, ты можешь воспользоваться командой:
history -E
вывод будет таким:
9481 9.5.2023 16:04 export FLASK_RUN_PORT=8888
9482 9.5.2023 16:04 export FLASK_APP=index.py
9483 9.5.2023 16:04 flask run
9484 9.5.2023 16:08 export TGS_API_KEY=12345
9485 9.5.2023 16:08 flask run
Уже более менее информативно, а если так:
history -i
опа-опа-опапа:
9481 2023-05-09 16:04 export FLASK_RUN_PORT=8888
9482 2023-05-09 16:04 export FLASK_APP=index.py
9483 2023-05-09 16:04 flask run
9484 2023-05-09 16:08 export TGS_API_KEY=12345
9485 2023-05-09 16:08 flask run
Видим другой формат даты. Вообще ключей для форматирования даты достаточно много, можешь почитать на досуге если интересно:
man zshoptions
man zshbuiltins
Ну а чтобы каждый раз не вводить ключи, сделай нужный тебе alias в ~/.zshrc
alias history="history -i"
А еще есть такая утилита как «fc», я думаю большинство про нее вообще ничего не слышали.
fc — unix-утилита, служащая для редактирования списка ранее введенных команд, а также их выполнения.
Вот тебе команда на основе fc, которая выведет историю, сразу же с временными маркерами:
fc -li 100
Больше уж и сказать нечего, основное разобрали, внедряй. Еще есть и другие оболочки типа fish, но так как я ими не пользуюсь ежедневно, то и рассказывать вам про них сегодня не буду.
Увидимся!