“sudo !!”명령에 대한 설명서는 어디서 찾을 수 있습니까?


20

방금 Linux 에 마지막으로 입력 한 명령에 sudo !!적용되는 명령이 있다는 것을 알게되었습니다 sudo. 나는 그것에 대해 들어 본 적이 없다.

이것이 일반적인 통제입니까? 그것에 관한 문서는 어디서 찾을 수 있습니까?


4
commandlinefu.com/commands/browse/sort-by-votes 를 확인하십시오 . 거기에 정말 좋은 지름길.
Leo

답변:


36

이것은 바로 bash 단축키입니다. 그건 sudo!!그렇고 아닙니다 . 그건 sudo !!(공간주의).

!!bash는 기본적으로 이전 명령의 확장이다.

bash 매뉴얼 페이지의 "History Expansion"섹션을 살펴보십시오.

http://www.gnu.org/software/bash/manual/bashref.html#Event-Designators


이전 게시물을 수정했습니다. 말씀하신대로 공간을 잊었습니다!
Pier-Alexandre Bouchard

오, 나는이 지름길을 어디에도 보지 못했다!
Pier-Alexandre Bouchard

29

실제로의 sudo !!명령으로 구성되어있는, sudo당신은 아마 잘 알고있는, 및 이벤트 지정자 , !!입력 된 마지막 명령을 의미한다. bash매뉴얼 페이지의 Event Designators섹션 아래 에서 자세한 내용을 볼 수 있습니다 .

Event Designators
   An event designator is a reference to a command line entry in the  his‐
   tory  list.   Unless  the reference is absolute, events are relative to
   the current position in the history list.

   !      Start a history substitution, except when followed by  a  blank,
          newline,  carriage return, = or ( (when the extglob shell option
          is enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command minus n.
   !!     Refer to the previous command.  This is a synonym for `!-1'.
   !string
          Refer to the most recent command preceding the current  position
          in the history list starting with string.
   !?string[?]
          Refer to the most recent command preceding the current postition
          in the history list containing string.  The trailing  ?  may  be
          omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.   Repeat  the  previous  command, replacing
          string1 with string2.  Equivalent  to  ``!!:s/string1/string2/''
          (see Modifiers below).
   !#     The entire command line typed so far.

3

이러한 기능 분리는 Linux / Unix를 각 프로그램이 별도의 독립된 규칙 및 기능의 섬인 다른 대안보다 훨씬 강력하게 만드는 가장 아름다운 디자인 원칙 중 하나입니다.

"각 프로그램이 한 가지 일을하도록하고 잘한다"

구현하기보다는 !! sudo (또는 다른 명령) 내부에서 이전 명령을 반복하면 도움이 될 수 있습니다-셸에서 한 번 구현되며 모든 명령이 도움이 될 수 있습니다. 그래서 당신은 할 수 있습니다 :

$ echo !!     # will echo the last command
$ time !!     # will repeat and time the last command
$ strace !!   # will repeat the last program while system-call tracing it

등등.

그러나 여기서 끝나지 않습니다. 쉘은! 이벤트 지정자. 명령을 실행하기 전에 변수 확장, 파일 이름 와일드 카드 확장 (글 로빙), 명령 대체, 파일 / IO 리디렉션 등을 수행합니다. 이 모든 것은 쉘에서 호출되는 모든 명령에서 활용 및 사용될 수 있습니다.

또 다른 큰 장점은 쉘 (이 경우 'man bash')을 배우는 데 시간을 투자하면 한 번만 배워야하며 언제 어디서나 이러한 강력한 기능을 사용할 수 있다는 것입니다. 각 프로그램이나 유틸리티에서 명령 행 agr이 처리되는 방식을 다시 배우기보다는 강력한 일련의 강력한 원리와 규칙을 배우는 것이 훨씬 쉽습니다.

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