Bash 쉘 히스토리 범위를 얻는 방법 grep somecommand 지금, 나의

특정 범위에서 내역 항목을 가져 오거나 필터링하려면 어떻게해야합니까?

기록 파일이 커서 자주 사용합니다

history | grep somecommand

지금, 나의 기억은 꽤 나쁘다. 그리고 나는 또한 내가 명령을 입력했을 때 내가 뭘했는지보고 싶다.

GET 일치, 말 : 지금 나는이 할 4992 somecommand다음 내가,

history | grep 49[0-9][0-9]

이것은 일반적으로 충분하지만, 4972에서 5012까지의 명령, 즉 20 명령은 20 명령입니다.

더 쉬운 방법이 있는지 궁금합니다. 커스텀 스크립트가 문제가 있다고 생각하지만 다른 누군가가 이전에 비슷한 것을했을 것입니다.



답변

grep일치하는 부분 주위에 일부 줄을 인쇄하도록 지시 할 수 있습니다 ( 예 : 3 전과 5 후) :

history | grep -B 3 -A 5 somecommand

grep -C 4와 같습니다 grep -A 4 -B 4.

그러나 종종 얼마나 많은 라인을 미리 원하는지 정확하게 알지 못할 수도 있습니다. 따라서 덜 사용하고 그 안에서 검색하십시오. 명령 행에서 검색을 시작할 수도 있습니다.

history | less +/somecommand

답변

fc를보십시오 :

fc -l 4972 5012

… bash 내장 명령입니다. (tcsh에서 시도하지 마십시오 :>)


답변

시험 history | grep -C20 '^4992'