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 쉘에 내장 된 명령입니다. 이전에 대화식 쉘에 입력 한 명령을 나열, 편집 및 재실행합니다.
답변
답변
이것은 처음에 게시 된 이 질문 나중에 여기에 게시 제안했다.
다음은 유사 대체를 위한 별명 fc
과 history
함께 사용하는 방법 !-
입니다. 당신이 사용하려는 경우 가정 !-n
(여기서 n은 N을위한 자리이다 번째 사용 마지막 명령), 다음 사용할 수 있습니다 fc
및 history
다음과 같이 별명 :
-
사용
history
:alias xyz='echo $(history -p "!-<n>") ; sudo $(history -p "!-n")'
참고 : 또는
!-n
로 묶어야 합니다.'
''
-
사용
fc
:alias xyz='echo $(fc -ln -n -n) ; sudo $(fc -ln -n -n)'
참고 : 여기서 1st 및 2nd
-n
는 기록 목록의 범위를 지정하는 데 사용됩니다.
여기서는 felling 명령을 실행하기 전에 에코를 사용했습니다 !-<n>
.
답변
alias please="sudo $(history -p \!\-2)"