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

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

sudo: !!: command not found

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

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



답변

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

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

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

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

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


답변

시험:

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

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

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

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


답변

이제 GitHub에 이러한 목적을위한 저장소가 있으며, 수퍼 유저 권한이 필요한지 마법으로 확인하고 오타도 수정합니다.

https://github.com/nvbn/thefuck


답변

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

다음은 유사 대체를 위한 별명 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>.


답변

alias please="sudo $(history -p \!\-2)"


답변