기록 확장을 수행할 때 명령의 여러 단어/토큰에 대한 기록 항목을 일치시키는 방법이 있습니까?

기록 확장을 수행할 때 명령의 여러 단어/토큰에 대한 기록 항목을 일치시키는 방법이 있습니까?

tool foo나는 모두 동일한 바이너리(예: 등) 를 사용하는 여러 하위 명령을 제공하는 명령줄 도구를 사용하고 있으며 tool bar, 작업할 때 이러한 명령은 내 Bash 쉘 기록에 저장됩니다.

 7322  [2021-04-16 15:37:45 +0000] tool foo .
 7323  [2021-04-16 15:37:47 +0000] tool bar
 7324  [2021-04-16 15:37:50 +0000] tool baz
 7325  [2021-04-16 15:38:01 +0000] tool qux -a -b asdf -c=100 /var/lib/foo/...
 7326  [2021-04-16 15:38:15 +0000] htop
 7327  [2021-04-16 15:38:21 +0000] tool foo . -x

정확한 도구는 독점적이며(정확한 기능은 관련이 없음) 자체 명령을 추적하고 호출하는 데 도움이 되는 특정 기능이 없습니다.

예를 들어, 명령 7325를 기억하고 싶습니다 tool qux -a -b asdf -c=100 /var/lib/foo/...(위쪽 화살표를 여러 번 누를 만큼 새로운 명령은 아니라고 가정). 명령과 인수가 너무 자주 변경되어 Bash 별칭 설정이 비현실적이거나 불편해 보입니다(.bashrc를 편집하거나 셸을 닫을 때 별칭이 손실됨). 나는 매우 자신감이 있다마지막이를 실행하면 tool qux사용하고 싶은 올바른 매개변수가 있거나 어쨌든 편집해야 하는 상당히 안전한 매개변수 세트가 있습니다.

history | grep quxfind History index를 실행한 다음 실행할 수 있다는 것을 알고 있습니다 !7325. 내가 할 수 있는 방법이 없을까?곧장Bash 프롬프트에 일련의 키 입력을 입력하여 기억하십니까? !tool qux이 경우에는 실행되므로 작동하지 않습니다 tool foo . -x qux. 인용해 보았는데 확장이 더 일찍 일어나는 것 같습니다.

답변1

Ctrl일반적 으로 + 를 사용하여 액세스하는 bash의 "역방향 대화형 검색"을 사용할 수 있습니다 R. 이 키 조합을 누르면 다음 프롬프트가 나타납니다.

 (reverse-i-search)`': 

여기에서 명령 작성을 시작할 수 있으며 기록에서 최신 항목부터 자동으로 완료됩니다. 그러나 입력한 전체 문자열과 일치하므로 tool q즉시 다시 가져옵니다 tool qux -a -b asdf -c=100 /var/lib/foo/.... 그러면 원하는 대로 됩니다.

에서 man bash:

       reverse-search-history (C-r)
              Search backward starting at the current line  and  moving  `up'
              through  the  history  as  necessary.   This  is an incremental
              search.

관련 정보