sudo !!
Bash에서 별칭을 설정하려고합니다 . alias sbb='sudo !!
'를 시도했지만 리터럴로 해석 !!
하고 인쇄합니다.
sudo: !!: command not found
큰 따옴표를 사용하면 문자열 자체에서 이중 뱅을 대체하므로 작동하지 않습니다.
이 작업을 수행 할 수있는 방법이 있습니까? 아니면 다른 별명입니까? `
sudo !!
Bash에서 별칭을 설정하려고합니다 . alias sbb='sudo !!
'를 시도했지만 리터럴로 해석 !!
하고 인쇄합니다.
sudo: !!: command not found
큰 따옴표를 사용하면 문자열 자체에서 이중 뱅을 대체하므로 작동하지 않습니다.
이 작업을 수행 할 수있는 방법이 있습니까? 아니면 다른 별명입니까? `
답변:
!!
입력하면 bash로 확장됩니다. 별명 대체로 확장되지 않습니다.
history
내장을 사용 하여 확장을 수행 할 수 있습니다 .
alias sbb='sudo $(history -p !!)'
명령이 단순한 명령 이상인 경우 (예 : 경로 재 지정 또는 파이프 포함) sudo에서 쉘을 호출해야합니다.
alias sbb='sudo "$BASH" -c "$(history -p !!)"'
man tcsh
하고 있다는 것을 발견 하지 별칭 확장 중에 역사 확장을 "원래의 명령은 이전 입력 라인 것처럼." 흥미 롭군 그러나 alias sbb 'sudo \!-2
예상대로 작동하지 않았습니다 (실제로 두 번째 이전 항목을 대체 함). alias sbb 'sudo \!\!'
예상대로 작업을 수행했습니다 (대신 sbb
사용 !!
). 그리고 결국 내가 원하는 것은와 alias sbb 'sudo \!-1'
같을 것으로 예상되는 것으로 판명 되었습니다 \!\!
. (tcsh 6.17.06 (Astron) 2011-04-15) YMMV. 행운을 빕니다.
sbb
선호합니다prease
시험:
alias sbb='sudo $(fc -ln -1)'
나는 실제로 '제발'이라는 이름을 선호합니다.
alias please='sudo $(fc -ln -1)'
Info : fc
는 bash 쉘에 내장 된 명령입니다. 이전에 대화식 쉘에 입력 한 명령을 나열, 편집 및 재실행합니다.
please
확실히 갈 길입니다!
please
터미널이 내가해야 할 엔티티입니다 것처럼 기분 에 좋은 물건을 완수하기 위해이. 같은 - 나는 컨트롤의 더 나은 감각을 준다 뭔가 선호 fuck
)
이제 GitHub에 이러한 목적을위한 저장소가 있으며, 수퍼 유저 권한이 필요한지 마법으로 확인하고 오타도 수정합니다.
이것은 처음에 게시 된 이 질문 나중에 여기에 게시 제안했다.
다음은 유사 대체를 위한 별명 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>
.
history -p
하고 fc
. 여기에 새로운 것이 있습니까?
-ln -n -n
혼란 스럽습니다. 또한 비트에 관한 '
또는 ''
(그리고 비트에 관한 비트 -<n>
).
$(fc -ln -1)