Bash: 마지막 명령에 전달된 액세스 인수

Bash: 마지막 명령에 전달된 액세스 인수

나는 종종 다음과 같은 상황에 직면합니다.

mkdir /Some/really/long/path/to/a/directory/
cd /Some/really/long/path/to/a/directory/

나는 이상적으로는 cd /Some/...etc.../a/then과 then을 수행할 것이라는 것을 알고 있지만 mkdir directory, 나는 종종 먼저 수행한 다음 방금 생성한 것과 동일한 긴 파일 경로의 끝까지 mkdir실행해야 합니다 .cd

하는 일이 부족하다...

var="/Some/...etc.../a/"
mkdir $var/directory; cd $var

...더 나쁜 것은 전달된 매개변수를 재사용할 수 있는 방법이 있다는 것입니다.더 일찍주문하다? 나는 탭 완성 기능을 확실히 알고 있지만 유사한 이름을 가진 일련의 중첩된 디렉토리에서는 그것이 항상 도움이 되는 것은 아닙니다. 이상적으로는 $#또는 같은 단축키를 갖고 싶습니다 $@.

실패하면 차선책으로 시간을 절약해 주는 솔루션도 높이 평가될 것입니다!

답변1

이전 답변에서는 $_및 를 사용하는 것이 좋습니다 !$. 이것이 작동하는 동안에는 확장되지 않고 Enter 키를 누르고 명령을 실행할 때까지 해당 값을 볼 수 없기 때문에 매우 위험하다고 생각합니다. rm $_무엇을 삭제할지 확신하지 못한 채 사용한다고 상상해보세요 !

Bash를 사용하고 있다면(아마도 기본값인 emacs 모드에서 readlines를 사용하고 있을 것입니다) 를 누르고 ESC놓은 다음 를 누르는 것이 좋습니다 ..

이 바로가기는 마지막으로 실행된 명령의 마지막 매개변수를 호출합니다. 따라서 글을 쓰면 cd <ESC> <.>긴 경로/파일이 제공됩니다.

단축키 ALT+ .(동시에 누르기)도 같은 방식으로 작동합니다.

기본 emacs 모드 대신 bash vi 모드를 사용하는 경우 ALT+를 사용하여 이 동작을 시뮬레이션 할 수 있습니다 .(다음을 ~\.inputrc사용하여 파일을 변경하는 경우).

set keymap vi-insert

$if mode=vi
    "\e.": yank-last-arg
$endif

답변2

$_Bash(및 zsh와 같은 다른 쉘)에서는 이전 명령의 마지막 인수가 포함된 를 사용할 수 있습니다 .

mkdir /path/to/file
cd "$_"

답변3

대화형으로 작업할 때 다음과 같은 목적으로 기록 확장을 사용할 수 있습니다.

mkdir /Some/really/long/path/to/a/directory/
cd !$

이전 명령이나 기록의 다른 명령에서 추가 매개변수에 액세스할 수 있는 다양한 변형이 있습니다. 바라보다Bash, 현재 명령의 마지막으로 사용된 인수 삽입상세 사항은...

관련 정보