Bash 쉘 히스토리 범위를 얻는 방법


9

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

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

history | grep somecommand

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

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

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

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

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


역사 조작을 위해 2 개의 내장 기능이 있습니다 : gnu.huihoo.org/bash-2.02/html_node/bashref_73.html
LAFK는 Reinstate Monica가

답변:


13

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

history | grep -B 3 -A 5 somecommand

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

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

history | less +/somecommand

1
매우 멋진 트릭 less! 당신이 그렇게 할 수 있다는 것을 몰랐습니다
워렌

실제로 아주 훌륭합니다 ... 내가 실제로 찾고 있지 않은 경우에도 내가 찾고있는 명령을 "주변"으로 볼 수 있지만 다른 관련 명령을 사용할 때 사용했던 것을 기억합니다! 좋은 물건 tnx.
Khalil Gharbaoui

8

fc를보십시오 :

fc -l 4972 5012

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.