어떻게`alias sudo !!`를 할 수 있습니까?


50

sudo !!Bash에서 별칭을 설정하려고합니다 . alias sbb='sudo !!'를 시도했지만 리터럴로 해석 !!하고 인쇄합니다.

sudo: !!: command not found

큰 따옴표를 사용하면 문자열 자체에서 이중 뱅을 대체하므로 작동하지 않습니다.

이 작업을 수행 할 수있는 방법이 있습니까? 아니면 다른 별명입니까? `



답변:


61

!!입력하면 bash로 확장됩니다. 별명 대체로 확장되지 않습니다.

history내장을 사용 하여 확장을 수행 할 수 있습니다 .

alias sbb='sudo $(history -p !!)'

명령이 단순한 명령 이상인 경우 (예 : 경로 재 지정 또는 파이프 포함) sudo에서 쉘을 호출해야합니다.

alias sbb='sudo "$BASH" -c "$(history -p !!)"'

tcsh에 대한 것이 있습니까?
mdpc

1
@mdpc : 나는 tcsh를 사용하지 않는,하지만 난 힐끗 man tcsh하고 있다는 것을 발견 하지 별칭 확장 중에 역사 확장을 "원래의 명령은 이전 입력 라인 것처럼." 흥미 롭군 그러나 alias sbb 'sudo \!-2예상대로 작동하지 않았습니다 (실제로 두 번째 이전 항목을 대체 함). alias sbb 'sudo \!\!'예상대로 작업을 수행했습니다 (대신 sbb사용 !!). 그리고 결국 내가 원하는 것은와 alias sbb 'sudo \!-1'같을 것으로 예상되는 것으로 판명 되었습니다 \!\!. (tcsh 6.17.06 (Astron) 2011-04-15) YMMV. 행운을 빕니다.
rici

감사! 이 별명은 관리자가 명령 앞에 sudo를 두는 것을 잊었을 때 좋습니다.
mdpc

대신 @jpschorr에서 제안한 별칭으로 sbb선호합니다prease
rubo77

40

시험:

alias sbb='sudo $(fc -ln -1)'

나는 실제로 '제발'이라는 이름을 선호합니다.

alias please='sudo $(fc -ln -1)'

Info : fc는 bash 쉘에 내장 된 명령입니다. 이전에 대화식 쉘에 입력 한 명령을 나열, 편집 및 재실행합니다.


13
please확실히 갈 길입니다!
Anto

bash에서도 작동하므로 'for zsh'주석을 제거했습니다.
Michael Durrant

1
zsh에서 잘 작동합니다. fc는 사용할 명령입니다. 감사합니다
Frax

please터미널이 내가해야 할 엔티티입니다 것처럼 기분 에 좋은 물건을 완수하기 위해이. 같은 - 나는 컨트롤의 더 나은 감각을 준다 뭔가 선호 fuck)
Przemek D


0

이것은 처음에 게시 된 질문 나중에 여기에 게시 제안했다.

다음은 유사 대체를 위한 별명 fchistory함께 사용하는 방법 !-입니다. 당신이 사용하려는 경우 가정 !-n(여기서 n은 N을위한 자리이다 번째 사용 마지막 명령), 다음 사용할 수 있습니다 fchistory다음과 같이 별명 :

  1. 사용 history:

    alias xyz='echo $(history -p "!-<n>") ; sudo $(history -p "!-n")'

    참고 : 또는 !-n로 묶어야 합니다.'''

  2. 사용 fc:

    alias xyz='echo $(fc -ln -n -n) ; sudo $(fc -ln -n -n)'

    참고 : 여기서 1st2nd -n 는 기록 목록의 범위를 지정하는 데 사용됩니다.

여기서는 felling 명령을 실행하기 전에 에코를 사용했습니다 !-<n>.


이전 응답이 이미 포함 history -p하고 fc. 여기에 새로운 것이 있습니까?
muru

알았어?
muru

나는 -ln -n -n혼란 스럽습니다. 또한 비트에 관한 '또는 ''(그리고 비트에 관한 비트 -<n>).
Scott

옵션 2. 오타를해야한다, 나는 당신이 원하는 생각$(fc -ln -1)
cmcginty

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