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

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

  • Как проверить shellshock против удаленной машины, используя простой скрипт
  • Полные пары ключевых значений
  • Найти последнюю строку файла для соответствия строки?
  • Как использовать каталоги XDG и пути в Bash?
  • Сценарий Bash для минимизации PNG продолжает останавливаться
  • Является родителем оболочки всех процессов в Linux
  • Изменение оболочки по умолчанию для пользователей
  • Сценарий оболочки не работает через работу cron
  • Выход команды сохранения в переменной, если команда включает в себя каналы
  • Как проверить действительные каталоги $ PATH и вывести их, указав, действителен ли каждый из них?
  • Попросите Bash-скрипт дождаться сообщения о статусе, прежде чем продолжить
  • linux 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 - лучшая ОС в мире.