Bash에서 명령 대체 결과를 확장하고 편집하는 방법은 무엇입니까?

Bash에서 명령 대체 결과를 확장하고 편집하는 방법은 무엇입니까?

$(<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위해 추가했습니다 . 다른 명령의 경우 를 사용해야 할 수도 있습니다 .curlstderr2> /dev/null

답변2

저는 Apple이 아닌 노트북에서 Kubuntu의 Bash를 사용하고 있습니다. Ctrl+ Alt+ e다음을 포함하여 명령줄에서 많은 기능을 확장했습니다 $(whatever). 키 입력이 Mac 키보드로 어떻게 "변환"되는지 잘 모르겠습니다. 요점은 트리거하는 것입니다shell-expand-line주문하다.

노트:

  • 오류로 whatever인해 프로세스가 중단될 수 있습니다.
  • 다른 것들도 인라인으로 확장됩니다.
  • 참조가 손실됩니다

$(whatever)그래서 먼저 입력하고 확장한 다음 나머지를 추가하는 것이 좋다고 생각합니다 .

관련 정보