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