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

В оболочке bash, когда я запускаю history , она предоставляет историю всех команд не только тех, которые были введены в текущую оболочку, но также и в предыдущих оболочках. Как я могу получить историю команд, только набранных в текущей оболочке? Это полезно, если вы хотите найти команду, которая, как вы знаете, была введена в текущую оболочку. Благодарю.

  • Как остановить bash заменять команды в истории звездочками? ( '*')
  • Как прервать fc без выполнения команды?
  • Как очистить историю терминала?
  • Где хранится история Баша?
  • Сохранение истории bash из нескольких Konsole не работает правильно
  • .bash_history vs history command
  • Могу ли я удалить .bash_history без sudo?
  • Как я могу программно добавлять записи в историю Bash и работать с метками времени?
  • 2 Solutions collect form web for “Как получить историю команд только для текущего процесса оболочки?”

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

       -a Добавить «новые» строки истории (введенные строки истории 
            с начала текущей сессии bash) до 
            файл истории.
    

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

     $ cat .bash_history
     # 1482030925
     Ls
     # 1482030926
     Дата
     # 1482030928
     свободно
    
     $ echo "еще одна команда"
     еще одна команда
    
     $ echo "другая команда"
     другая команда
    
     $ HISTFILE = foo history -a
     $ cat foo
     # 1482031879
     cat .bash_history
     # 1482031887
     эхо "еще одна команда"
     # 1482031892
     эхо "другая команда"
     # 1482031899
     HISTFILE = foo history -a
    

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

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

     $ history> hist.backup
    
     $ echo "новая команда"
     новая команда
     $ echo "еще одна команда"
     еще одна команда
    
     $ history> hist.current 
     $ diff hist. {backup, current}
     4a5,7
     > 5 2016-12-17 19:38:57 эхо "новая команда"
     > 6 2016-12-17 19:39:01 эхо "еще одна команда"
     > 7 2016-12-17 19:39:07 history> hist.current 
    

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

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

     comm -23 <( history | cut -c 8- ) ~/.bash_history 
    Linux и Unix - лучшая ОС в мире.