이전 bash 명령의 인수를 어떻게 기억합니까?


답변:


562

$_또는 !$이전 명령의 마지막 인수를 사용 하거나 호출 할 수 있습니다 .

또한 Alt + .이전 명령의 마지막 인수를 상기시키는 데 사용될 수 있습니다.


121
당신이 임의의 인수를 원하는 경우 또한, 당신은 사용할 수 있습니다 !!:1, !!:2등 ( !!:0참조 이전 명령 자체입니다.) gnu.org/software/bash/manual/bashref.html#History-Interaction
janmoesen

41
와 마찬가지로 첫 번째 인수에 !$사용 !^합니다.

13
아 ... * nix ... 당신은 아름다움의 일이 ... 매일 당신을 더 사랑합니다
jx12345

이전 명령의 두 번째에서 마지막 인수를 어떻게 참조 할 수 있습니까? 예를 들어, 내가 준 경우 다음 명령을 어떻게 echo tiger rabbit참조 할 수 tiger있습니까?
Chan Kim

3
Alt + .vi 모드에서는 작동하지 않습니다. 참고로 여기 혼란 스러웠던 다른 사람들을위한 것입니다.
Brian McCutchon

160

이전 명령에 다음과 같이 두 개의 인수가있는 경우

ls a.txt b.txt

첫 번째를 원하면

!:1

기부

a.txt

또는 둘 다 원하는 경우 다음을 입력 할 수 있습니다.

!:1-2

기부

a.txt b.txt

이를 여러 인수로 확장 할 수 있습니다. 예 :

!:10-12

@RNA, 방금 오타가 포함되지 않았는지 확인하기 위해 다시 시도했습니다. 좀 더 자세한 내용을 제공 할 수 있습니까 (예 : 우분투 명령 줄, Windows 용 cygwin? 오류 메시지? 이전 줄?)
Robert Gowland

GNU bash, 버전 3.2.51 (1)-릴리스 (x86_64-apple-darwin13)를 사용하고 있습니다. Copyright (C) 2007 Free Software Foundation, Inc. 오류 메시지는 다음과 같습니다.-bash: :1-2: bad word specifier
RNA

2
이전 줄에 두 개의 인수가 없으면 같은 결과를 얻습니다. 예 : 1 ls a.txt호선 2 호ll !:1-2
Robert Gowland

네가 옳아. 그건 내가 멍청한 실수 야 감사!
RNA

또한 모든 인수를 얻으려면 !:^-$숫자와 함께 사용하거나 유사한 코드를 사용할 수 있습니다.
816-8055

88

!!:n여기서 n원하는 인수의 위치는 0부터 시작합니다.

예를 들면 다음과 같습니다.

echo 'one' 'two'
# "one two"

echo !!:2
# "two"

!접두사 액세스 이전 명령에 사용됩니다.

다른 유용한 명령들 :

  • !$ -이전 명령의 마지막 인수
  • !^ -이전 명령의 첫 번째 인수 (프로그램 / 내장 / 스크립트 뒤)
  • !! -이전 명령 (종종 "bang bang"으로 발음)
  • !n- 명령 번호 n에서history
  • !pattern -가장 최근의 명령 일치 pattern
  • !!:s/find/replace- 마지막 명령, 대신 findreplace

명령 기록에 대한 추가 정보


7
대신에 !!:s/find/replace, 당신은 또한 할 수 있습니다 ^find^replace.
Big McLargeHuge

또한 : !* -이전 명령의 모든 인수 (프로그램 / 내장 / 스크립트 뒤). 예 : ls *.tmp *.cache rm !*
Aphoid

68

명령 행에서 esc- .또는 alt+를 누를 수 있습니다..

이전 명령 의 마지막 인수 를 순환 합니다.


난 항상 발견했습니다 뿐만 아니라 작업에 키를.
버킷

@Bucket 키는 이전 명령을 통과하지만 Antonio가 제공 한 솔루션은 이전 인수 (각 이전 명령의 마지막 인수 만 해당)를 통과 할 수 있습니다.
everyonesdesign

30

특정 명령에 대한 기록에 주어진 숫자를 알고 있다면 다음 용어를 사용하여 해당 명령에서 인수를 취할 수 있습니다.

히스토리의 세 번째 명령에서 두 번째 인수를 가져 오려면 다음을 사용하십시오.

!3:2

history를 사용하여 마지막 다섯 번째 명령에서 세 번째 인수를 가져 오려면 다음을 사용하십시오.

!-5:3

빼기 부호를 사용하여 이력의 마지막 명령에서 통과하도록 요청합니다.


19

! *는 모든 이전 인수와 함께 새 명령을 실행합니다.

ls /tmp
cd !*
#you are now in /tmp

이것은 OSX에서 나에게 효과가 없었습니다 $_. 대신 사용해야 했습니다.
Mike W

16

예, !$이전 명령의 마지막 인수를 호출하는 데 사용할 수 있습니다 .


특히 명령에 여러 개의 인수가 포함 된 경우 키워드 "마지막"에 유의하십시오.
버킷
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.