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)