쉘 기록에서 여러 명령을 편집하고 실행하는 방법은 무엇입니까?

쉘 기록에서 여러 명령을 편집하고 실행하는 방법은 무엇입니까?

때때로 최근에 사용한 명령 시퀀스를 수정한 후 재활용하고 싶습니다.

내가 어제 처형했다고 상상해보자

foo 42
bar with some strange arguments
baz /my/most/beloved/folder

오늘은 이런게 필요해

foo -x 42
bar with some more strange arguments
baz /my/most/hated/folder

ctrlRand 를 사용하여 foo어제의 명령을 찾아서( foo다른 상황에서 사용하기 때문에 여러 번 사용할 수 있음) 이를 변경하고 실행할 수 있습니다. 지금까지는 문제가 없습니다. 하지만 이제는 긴 검색을 다시 반복하지 않고(실제로는 일반적으로 10개 이상의 명령) 기록의 다음 줄로 빠르게 이동하고 싶습니다.

명령은 내가 원하는 것과 비슷하지만 대화형이 아닙니다. 수십 개의 명령을 실행하면 fc그 중 하나에 예상과 다르게 응답해야 할 수도 있습니다(또는 다음 명령을 실행하면 혼란이 발생할 수 있습니다).kshgit

MS Windows의 셸에는 cmd(보통 짜증나는) 동작이 있습니다. 기록에서 명령을 실행한 후 위쪽 화살표를 누르면 기록의 마지막 명령이 아니라 마지막으로 실행된 명령으로 이동합니다. 따라서 foo해당 줄을 다시 실행한 후 , 위쪽 화살표를 누른 다음 아래쪽 화살표를 누르면 해당 bar줄로 이동합니다. 이 정확한 동작은 수정되지 않은 줄을 실행할 때만 작동하므로 나에게 도움이 되지 않습니다. 수정하면 "히스토리 포인터"가 다시 끝으로 설정됩니다. 그러나 기록에 그러한 북마크를 두고 해당 foo행에 설정한 다음 키 조합을 사용하여 다시 그곳으로 이동하거나 북마크를 다음 행으로 이동하는 것이 더 나은 솔루션이 될 것입니다.

이런 필요성을 느끼는 사람이 나뿐만이 아닐 것 같지만 해결책을 찾지 못했습니다. 현재는 기록의 관련 부분을 인쇄하고 마우스를 사용하여 다음에 필요한 줄을 붙여넣는 방법으로 해결하지만 이것은 서투르고 키보드와 마우스 사이를 전환하는 것을 좋아하지 않습니다. 기록 확장을 수행하지 마십시오. 일반적으로 탭 확장을 포함하여 행을 대화식으로 편집해야 합니다.

어떤 해결책을 알고 있나요? 타겟팅하는 것이 가장 좋습니까 zsh?

답변1

바보야! 다른 곳에서 답을 얻었습니다. 제가 설명한 완벽한 솔루션은 오래 전에 존재했던 것 같습니다. 계속 감독했지만 올바른 검색어를 찾지 못했습니다.

ctrlO현재 명령을 실행하고 기록의 다음 줄로 이동합니다.

정말 훌륭한 기능입니다. 다행스럽게도 그 요청을 읽은 20여명의 사람들도 이 사실을 몰랐습니다.

관련 정보