현재 쉘 프로세스의 명령 기록만 얻는 방법은 무엇입니까?

현재 쉘 프로세스의 명령 기록만 얻는 방법은 무엇입니까?

bash 쉘에서 를 실행하면 history현재 쉘에서 입력한 모든 명령의 기록뿐만 아니라 이전 쉘에서 입력한 명령의 기록도 제공합니다. 현재 셸에서 지금까지 입력한 명령의 기록만 어떻게 얻을 수 있나요? 이는 현재 쉘에 입력된 것으로 알려진 명령을 찾으려는 경우에 유용합니다. 감사해요.

답변1

전제는조직 첨부설정되지 않았으며 게임을 플레이하지 않음프롬프트 명령, 이것역사이 명령은 다음을 수행할 수 있습니다.

  -a "새" 히스토리 라인을 추가합니다(입력 히스토리 라인
       현재 bash 세션이 시작된 이후)
       역사적 문서.

우리가 떠나고 싶다면진짜기록 파일을 그대로 유지하면서 다음을 수행할 수 있습니다.

$ cat.bash_history
#1482030925
엘에스
#1482030926
날짜
#1482030928
무료

$ echo "명령어가 하나 더 있습니다"
또 다른 명령

$ echo "다른 명령"
다른 명령

$ HISTFILE=foo 기록-a
$ 고양이 푸
#1482031879
cat.bash_history
#1482031887
echo "명령어가 하나 더 있습니다"
#1482031892
에코 "다른 명령"
#1482031899
HISTFILE=foo 기록-a

이전 세션의 이전 명령(ls, date, free)은 "새" 기록 파일에 나타나지 않습니다. foo- 이 예에서 이를 설명할 수 있기를 바랍니다.

또 다른 방법은 현재 기록 파일을 (로그인 세션 시작 시!) 저장한 다음 현재 세션의 기록을 기록 파일에 추가하고("history -a"를 실행하거나 로그아웃하여) 두 파일을 비교하는 것입니다.

$ 역사 > hist.backup

$ echo "새 명령"
새로운 명령
$ echo "명령어가 하나 더 있습니다"
또 다른 명령

$ 역사 > hist.current
$ 차이점 기록. {백업, 현재}
4a5,7
> 5 2016-12-17 19:38:57 echo "새로운 명령"
> 6 2016-12-17 19:39:01 echo "다른 명령이 있습니다"
> 7 2016-12-17 19:39:07 역사 > hist.current

참고: 저는 설정 HISTTIMEFORMAT='%F %T '(bash 3, IIRC에 도입됨)을 매우 좋아합니다.타임스탬프명령이 실행된 시기를 알아내는 데 매우 유용합니다.

답변2

comm전체 기록(현재 Bash 세션 포함)을 저장된 기록과 비교 .bash_history하고 현재 세션과 관련된 줄만 인쇄하는 데 사용됩니다 . 이는 현재 Bash 쉘이 시작된 이후 실행된 명령만 표시해야 합니다.

comm --nocheck-order -23 <( history | cut -c 8- ) ~/.bash_history

관련 정보