Поговорка для айтишников
Команда 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?
Сейчас и в ней сделаем нечто подобное.
Из коробки 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, но, так как я ими не пользуюсь ежедневно, то и рассказывать вам про них сегодня не буду.
А завтра снова пятница, неделя прям в трубу вылетела. Давайте, увидимся.







