$(<cmd>)
Bash에서 명령 대체 결과를 확장하고 편집할 수 있습니까?
<cmd>
이것이 내가 실행하고 싶은 또 다른 명령으로 이어진다 고 가정해 보겠습니다 . 실제로 $(<cmd>)
명령이 실행되지만 표시되지 않으므로 history
다시 돌아가서 편집할 수 없습니다.
이 문제를 해결한 유일한 방법은 출력을 $(<cmd>)
변수에 할당한 cmd=$(<cmd>)
다음 다음 pbcopy
을 사용하여 클립보드에 에코하는 것이었습니다. macOS echo $cmd | pbcopy
.
답변1
현재 명령줄에서 모든 쉘 대체 항목을 확장할 수 있습니다.
쉘 연장 케이블(MCe)- 쉘처럼 라인을 확장합니다. 이는 별칭 및 기록 확장은 물론 모든 쉘 단어 확장(셸 확장 보기).
누르기: Ctrl+ Esc+ e.
예:
$ echo $(curl -s ifconfig.io)
# press ctrl+esc+e,
# command line will switch to:
$ echo 151.101.1.69
명령줄과의 혼동을 피하기 -s
위해 추가했습니다 . 다른 명령의 경우 를 사용해야 할 수도 있습니다 .curl
stderr
2> /dev/null
답변2
저는 Apple이 아닌 노트북에서 Kubuntu의 Bash를 사용하고 있습니다. Ctrl+ Alt+ e다음을 포함하여 명령줄에서 많은 기능을 확장했습니다 $(whatever)
. 키 입력이 Mac 키보드로 어떻게 "변환"되는지 잘 모르겠습니다. 요점은 트리거하는 것입니다shell-expand-line
주문하다.
노트:
- 오류로
whatever
인해 프로세스가 중단될 수 있습니다. - 다른 것들도 인라인으로 확장됩니다.
- 참조가 손실됩니다
$(whatever)
그래서 먼저 입력하고 확장한 다음 나머지를 추가하는 것이 좋다고 생각합니다 .