bash - 기록을 통해 편집 중인 현재 명령의 첫 번째 인수를 얻거나 이와 유사합니까? [복사]

bash - 기록을 통해 편집 중인 현재 명령의 첫 번째 인수를 얻거나 이와 유사합니까? [복사]

나는 종종 bash 프롬프트에 명령을 작성하며 현재 줄의 이전 인수를 가져와서 명령의 다른 위치에 배치하려고 합니다.

간단한 예는 파일 이름을 바꾸려는 경우입니다. 저 할 수 있어요

  • mv입력
  • 이동하고 싶은 파일명을 입력하고,~/myTestFileWithLongFilename.txt
  • 이제 다시 입력하지 않고 첫 번째 매개변수에 제공한 파일의 확장자를 변경하고 싶습니다.

첫 번째 인수를 자동 완성하기 위해 어떻게든 히스토리나 bash 완성을 사용할 수 있나요?

$ mv ~/myTestFileWithLongFilename.txt ~/myTestFileWithLongFilename.md

물론 불완전한 명령을 실행하고 기록에 넣은 다음 참조할 수 있다는 것을 알고 있습니다 !$.

답변1

가능하지만 조금 번거롭습니다. bash에서는 !#입력된 행 전체를 의미합니다. :이 경우 뒤에 인용할 특정 단어를 지정할 수 있습니다 !#:1. shell-expand-line내장된 readline 키바인딩 Control- Alt- 을 사용하여 확장 할 수 있습니다 e.

답변2

이 명령에 필요한 입력량을 줄이려면 mv중괄호 확장을 사용할 수 있습니다.

mv ~/myTestFileWithLongFilename.{txt,md}

중괄호 확장은 ~/myTestFileWithLongFilename.txt다음 과 같이 확장됩니다 ~/myTestFileWithLongFilename.md(올바른 순서가 중요합니다 {txt,md}).

bash중괄호 확장은 명령줄에 입력하든 스크립트에 입력하든 작동합니다.

중괄호 확장은 string , 및 실제 중괄호 에서 문자열 prefix{word1,word2,word3}suffix이 반복될 때 마다 세 개의 개별 단어를 생성 합니다 . 또는 와 같은 중괄호 확장 내에서 범위를 사용할 수도 있습니다 .prefixsuffixwordNprefixword1suffixprefixword2suffixprefixword3suffix{1..4}{p..u}

답변3

대화형으로 alt+를 누른 1다음 alt+ .(마침표)를 입력합니다.

반복 alt+는 .명령 기록으로 더 돌아가서 가장 최근 명령 이전 명령에서 토큰 #1을 추출합니다. (명령어 자체는 토큰 #0, alt+ 입니다 0)

<token-number>alt- 수정자가 없으면 alt-가 다음을 .수행합니다.마지막이전 명령의 인수입니다. 예를 들어 mkdir foo/ cdAlt+. 돌아가서 디렉토리를 만들고 그 안에 CD를 넣으십시오.

일반적으로 마지막 토큰(수정된 키 입력)을 제외한 모든 경우에는 위쪽 화살표, Ctrl-w 또는 Alt+D를 누른 다음 Ctrl-y를 눌러 단어를 삭제하고 다시 가져와서 엉망이 되지 않도록 합니다. 내 기록을 뒤섞은 다음 아래쪽 화살표와 Ctrl-y를 다시 눌러 편집 중인 명령줄에서 원하는 위치로 끌어옵니다. 그건 그렇고, 이것은 bash에 있습니다.

답변4

를 사용 set -o vi하고 Esc 키를 누르세요 byw$p(공백 등을 추가해야 할 수도 있고 또는 B이 필요할 수도 있음 W). 그런 다음 수정하면 됩니다.

관련 정보