나는 종종 명령을 실행하기 위해 서브셸을 사용하고 때로는 무언가를 실행하기 전에 서브셸을 확장하고 싶습니다. 이렇게 하면 내가 하고 있는 일을 확인할 수 있고 앞으로 나올 일을 편집할 수도 있습니다.
예를 들어, 서브셸의 결과를 편집할 수 있도록 실행하기 전에 다음 명령줄을 확장하려면 어떻게 해야 합니까?
예를 들어
$ 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
\eg
glob-expand-word
\C-x*
답변2
다음은 편리한 방법입니다. ~/.inputrc에 다음 줄을 추가하세요(필요한 경우 파일 생성).
Control-x: 쉘 확장 라인
다음 방법 중 하나를 사용하여 기록이나 별칭만 확장하거나 둘 다를 확장할 수도 있습니다.
Control-x: 기록 확장 라인
또는
Control-x: 별칭 확장 줄
또는
Control-x: 기록 및 별칭 확장 줄
수집한 내용입니다이 블로그에서, 그리고슈퍼유저에 대한 질문, 이는 다음과 매우 유사합니다.