쉘 명령은 가장 최근의 출력 라인을 현재 명령줄에 넣습니다.

쉘 명령은 가장 최근의 출력 라인을 현재 명령줄에 넣습니다.

셸에는 키보드 위쪽 화살표를 누르면 현재 명령줄의 내용이 이전 명령줄의 내용으로 바뀌는 유용한 기능이 있습니다.주문하다이미 입력되었습니다. (이 작업을 다시 수행하면 이전 명령이 실행되는 식입니다.)

(다른 버튼)을 누르면 현재 명령줄의 내용이 다음과 같이 바뀌는 유사한 기능을 원합니다.출력의 마지막 줄이전 명령에서(또는 다시 실행되는 경우 이전 출력 라인 등)

그러한 기능을 제공하는 쉘이 있습니까?

그 이유는 이전 명령의 출력 일부를 입력으로 사용하여 하나의 명령을 실행한 다음 다른 명령을 실행하려는 경우가 많기 때문입니다. (아니요, 저는 한 명령의 출력을 다음 명령으로 파이프하는 것과 관련된 작업을 수행하고 싶지 않습니다.인터렉티브첫 번째 명령을 실행하는 경험,바라보다그런 다음 마우스로 어색하게 복사하여 붙여넣을 필요 없이 해당 출력의 한 줄을 다음 명령에 입력합니다. )

답변1

내부에서 쉘을 실행하는 경우 롤백 모드를 사용하여 이를 달성할 screen수 있습니다 . screen기본 키 바인딩을 사용하세요.

  • CtrlAEsc롤백 모드로 들어갑니다.
  • 위아래로 이동하려면 키를 이동하세요.
  • Y현재 줄을 붙여넣기 버퍼에 복사하고 스크롤백 모드를 종료합니다.
  • CtrlA]버퍼를 붙여넣습니다.

설명서(실행 man screen)에서는 롤백 모드의 추가 기능(검색, 부분 복사 등 포함)에 대한 자세한 내용과 설명을 제공합니다.

tmux의심할 바 없이 비슷한 특성을 가지고 있습니다.

답변2

내가 올바르게 이해했다면 한 명령의 출력에서 ​​마지막 줄을 가져와 새 명령으로 실행하고 싶을 것입니다. 그러므로:

$ $( /path/to/command_generator | tail -n1 )

또는 디스크에 있는 파일의 내용인 경우:

$ $( tail -n1 /path/to/RUNME.txt )

실행하기 전에 편집하려면 vipe실행 중인 파이프라인의 내용을 편집하기 위한 도구가 있습니다.

$ $( /path/to/command_generator | vipe )

답변3

`!!`예를 들어 파일을 찾기 위해 이전 명령을 다시 실행하고 해당 출력을 인라인으로 사용하고 싶을 수도 있습니다 .

$ find . -name "myfile.txt"
./dir/files/myfile.txt
$ emacs `!!` &
emacs `find . -name "myfile.txt"` &

이는 다음과 같습니다.

$ emacs ./dir/files/myfile.txt &

답변4

Bash는 비대화형 명령의 출력을 저장할 수 있습니다. 그런 다음 Ctrl-G를 사용하여 편집기에서 열고 원하는 필드를 현재 명령줄로 가져올 수 있습니다.https://asciinema.org/a/395092

관련 정보