
특정 범위의 기록 항목을 가져오거나 필터링하려면 어떻게 해야 합니까?
대용량 히스토리 파일을 가지고 있어 자주 사용합니다.
history | grep somecommand
이제 기억력이 꽤 나빠서 명령을 입력할 무렵에 내가 또 무엇을 했는지도 알고 싶습니다.
지금은 다음을 수행합니다. 일치 항목을 가져온 4992 somecommand
다음 수행합니다.
history | grep 49[0-9][0-9]
이것은 일반적으로 충분하지만 더 정확하게 수행하는 것이 좋습니다. 즉, 4972에서 5012까지의 명령, 즉 이전 20개 명령과 이후 20개 명령을 참조하는 것입니다.
더 쉬운 방법이 있는지 궁금합니다. 내 생각에는 사용자 정의 스크립트가 올바른 것 같지만 아마도 다른 사람이 이전에 비슷한 작업을 수행했을 수도 있습니다.
답변1
grep
일치 항목 주위에 몇 줄(예: 앞 3줄, 뒤 5줄)을 인쇄하도록 지시할 수 있습니다 .
history | grep -B 3 -A 5 somecommand
grep -C 4
와 같습니다 grep -A 4 -B 4
.
그러나 종종 원하는 라인 수를 미리 정확히 알지 못하는 경우가 많습니다. 그러니 적게 사용하고 그 안에서 검색해보세요. 명령줄에서 검색을 시작할 수도 있습니다.
history | less +/somecommand
답변2
FC를 사용해 보세요:
fc -l 4972 5012
... bash 내장 명령입니다. (따라서 tcsh에서는 시도하지 마세요 :>)
답변3
노력하다history | grep -C20 '^4992'