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 qux
find 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.