Как получить историю команд только для текущего процесса оболочки?

man 5 interfaces, 1st line

ifdown enp63s0
ifup enp63s0
2
18.12.2016, 08:22
2 ответа

При условии, что histappend не установлен и никакие игры не запускаются с PROMPT_COMMAND , история команда может:

  -a   Append the ``new'' history lines (history lines entered 
       since the beginning of the current bash session) to 
       the history file.

Если мы хотим оставить наш реальный файл истории невредимым, мы можем сделать:

$ cat .bash_history
#1482030925
ls
#1482030926
date
#1482030928
free

$ echo "one more command"
one more command

$ echo "another command"
another command

$ HISTFILE=foo history -a
$ cat foo
#1482031879
cat .bash_history
#1482031887
echo "one more command"
#1482031892
echo "another command"
#1482031899
HISTFILE=foo history -a

Предыдущие команды из более ранних сеансов (ls, date, free) не отображаются в наш «новый» файл истории, foo - я надеюсь, что этот пример подтверждает эту мысль.

Другой подход - сохранить текущий файл истории (в начале сеанса входа в систему!), А затем добавить историю текущего сеанса в файл истории (либо выполнив команду «history -a», либо выйдя из системы) и затем сравните оба файла:

$ history > hist.backup

$ echo "a new command"
a new command
$ echo "one more command"
one more command

$ history > hist.current 
$ diff hist.{backup,current}
4a5,7
>     5  2016-12-17 19:38:57 echo "a new command"
>     6  2016-12-17 19:39:01 echo "one more command"
>     7  2016-12-17 19:39:07 history > hist.current 

Примечание: я большой поклонник установки HISTTIMEFORMAT = '% F% T' (введено в bash 3, IIRC), метки времени помогают много, чтобы узнать, когда была выполнена команда.

5
27.01.2020, 21:56

Используйте comp для сравнения всей истории (включая текущий сеанс Bash) с уже сохраненной историей в .bash_history и распечатайте только те строки, которые уникальны для текущего сеанса - - который должен отображать только те команды, которые были выполнены с момента запуска текущей оболочки Bash

comm -23 <( history | cut -c 8- ) ~/.bash_history
1
27.01.2020, 21:56

Теги

Похожие вопросы