bash와 함께 사용한 이전 명령의 마지막 (n 번째?) 전달 인수를 어떻게 기억합니까?


9

종종 같은 파일에서 다른 명령을 내립니다. 예를 들면 다음과 같습니다.

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

현재 명령에서 이전 명령의 인수를 재사용하여 다시 작성할 필요가없는 방법이 있습니까?

답변:


15

alt-.확실히 멋지지만 원하는 번호의 인수를 이미 알고 있다면 더 빠를 수 있습니다 . 이전 명령 !:nnth 인수입니다.

이것을 마술 공간과 결합하는 것이 종종 도움이됩니다. 이를 가능하게하려면 .inputrc에 넣으십시오 Space: magic-space. 이를 활성화하면 after after space를 !:2입력하면 Enter 키를 누르지 않고 즉시 해당 값으로 확장됩니다. 실수로 잘못된 논증을 잡지 않아도됩니다.


9

bash에서는 바로 가기 Alt+를 사용할 수 있습니다 ..
한 번만 치면 마지막 주장이 나옵니다. 더 많이 치는 것은 당신의 마지막 논증을 순환 할 것입니다.


4

bash에서 "이전 명령 행의 마지막 단어"지정자는 !!$다음과 같습니다.

$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world

"캐럿 구문"을 사용 하여 명령 행 의 초기 부분 을 바꿀 수도 있습니다 . 동일한 파일에서 여러 명령을 실행하려는 경우 유용합니다.

file file.dat
^file^ls -l^ #gives `ls -l file.dat`
^ls -l^stat # gives `stat file.dat`

더 많은 가능성이 있습니다. 자세한 내용은 bash (1) 매뉴얼 페이지의 "기록 대체"를 참조 하십시오.


캐럿 구문은 실제로 위쪽 화살표를 누르고 명령 줄을 직접 편집하는 것보다 느립니다 ...
badp

1
!!$쓸 수도 있습니다 !$.
Mikel

3

bash에서는 마지막으로 입력 한 명령의 마지막 명령 행 인수에 $ _를 사용할 수도 있습니다.

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

된다 :

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv $_ kittens.flv
$ vlc $_
$ rm $_

0

상대적으로 느린 방법 중 하나는 이전 명령을 호출하고 이전 명령을 새로운 명령으로 바꾸는 것입니다.


나는 더 빠른 것을 기대하고있다 :)
badp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.