실행하기 전에 서브 쉘을 확장 하시겠습니까?


11

나는 종종 서브 쉘을 사용하여 명령을 실행하고 때로는 무언가를 실행하기 전에 서브 쉘을 확장하고 싶습니다. 이런 방식으로 내가하고있는 일을 확인하고 일어날 일을 편집 할 수 있습니다.

예를 들어, 다음 명령 줄을 실행하기 전에 확장하여 서브 쉘의 결과를 편집하려면 어떻게해야합니까?

예 :

$ find -name "test.txt" 
/tmp/test.txt

$ mv $(!!) /tmp/new.txt

명령을 실행 하기 전에 서브 쉘이 확장 된 것을보고 싶습니다 .

$ mv /tmp/test.txt /tmp/new.txt

이것을 할 수있는 방법이 있습니까?


1
zsh는 이것을 할 수 있지만 bash는 할 수 없다고 확신합니다. zsh에서 매개 변수에 커서를두고 Tab 키를 누르면 확장됩니다.
Patrick

나는 그 이후로 전환했으며 zsh훌륭하고 이것을 제안합니다. bash질문 이므로 원래 답변을 여기에 남겨 두겠습니다 .
Brad Parks

답변:


5

shell-expand-line( \e\C-e)는 bash에서 명령 대체를 확장합니다.

$ bind -p|grep shell-ex
"\e\C-e": shell-expand-line

$(!!)\e\C-e 이전 명령을 다시 실행하고 출력을 삽입하십시오.

"\eo": "$(!!)\e\C-e"

또한 다른 명령 대체를 확장하지만과 같은 명령은 없습니다 shell-expand-word.

bash 4.0 이상 에서는 ( ) 또는 ( )를 활성화 globstar, 입력 **/file.txt및 사용할 수도 있습니다 .glob-complete-word\egglob-expand-word\C-x*


2

다음은 편리한 트릭입니다. ~ / .inputrc에이 줄을 추가하십시오 (필요한 경우 파일 작성).

Control-X : 쉘 확장 라인

다음 중 하나만 사용하여 내역 만, 별칭 또는 둘 다를 확장 할 수 있습니다.

Control-X : 히스토리 확장 라인

또는

Control-X : 별칭 확장 라인

또는

Control-X : 히스토리 및 앨리어스 확장 라인

이는 수집 된 이 블로그에서 , 그리고 슈퍼 유저에이 질문에 매우 유사합니다 :

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