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

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

나는 종종 명령을 실행하기 위해 서브셸을 사용하고 때로는 무언가를 실행하기 전에 서브셸을 확장하고 싶습니다. 이렇게 하면 내가 하고 있는 일을 확인할 수 있고 앞으로 나올 일을 편집할 수도 있습니다.

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

예를 들어

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

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

서브쉘 확장을 보고 싶습니다.앞으로다음과 같이 명령을 실행합니다.

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

이를 수행할 수 있는 방법이 있습니까?

답변1

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: 기록 및 별칭 확장 줄

수집한 내용입니다이 블로그에서, 그리고슈퍼유저에 대한 질문, 이는 다음과 매우 유사합니다.

관련 정보