ksh의 마지막 명령

ksh의 마지막 명령

Bash에서는 !!. ksh에서는 비슷한 작업을 수행할 수 있다고 생각 r하지만 일반적인 패턴 중 하나인 input 에서는 실패하는 것 같습니다 sudo [last command].

> cp foo /bar
cp: permission denied
> r c       # If I do this it will repeat my cp call
> sudo r c  # when I do this, it tells me that "r" is not a command

기록을 사용하여 "sudo [마지막 명령]"을 빠르게 입력하는 방법은 무엇입니까?

답변1

저는 명령줄 버전을 사용할 것입니다. Upand Home(또는 Ctrl+ P다음에 Ctrl+ A또는 vi 모드의 다른 시퀀스)를 입력한 다음 를 입력 sudo␣하고 를 누르십시오 Return.

답변2

므케시.mkshrc한동안 예제 파일에 이 기본 별칭을 제공했습니다.

alias doch='sudo mksh -c "$(fc -ln -1)"'

여기에서 "doch"는 독일어 사용자만 이해할 수 있는 말장난이므로 설명하겠습니다. 일부 명령은 사용자가 무언가를 할 수 없다는 것을 말하며, 이는 우리가 하지 않는 한 예-아니요-예-아니오 상황을 초래합니다. 이에 대한 독일어의 특정 단어입니다. 따라서 이 별칭은 "nee-nee, I"에 대한 응답입니다.이것을 허용하십시오! ”라는 오류 메시지가 표시됩니다.영어 학습자거기에도 뭔가가 있는데, 너무 헷갈릴까봐…

하지만 이 별칭 명명으로 인해 제한을 두지 마세요☺

답변3

내가 할 수 있는 가장 좋은 방법은 다음과 같은 자동 로드 기능을 만드는 것입니다 sudo_r.

function sudo_r {
  typeset comm=$(hist -nl ${@:- -1 -1} | sed 1q);
  print -- $comm;
  sudo $comm;
}

그런 다음 "별칭 ss=sudo_r"이라고 말합니다. 이 작업을 완료한 후에는 으로 시작 하고 접두사가 붙은 ss cp마지막 명령을 입력하여 반복 할 수 있습니다 . 또는 를 입력하면 이전 명령이 됩니다 .cpsudoss Returnsudo

답변4

ksh를 사용한 지 꽤 됐지만, 이 명령은 recall대개 다음과 같은 별칭으로 사용되는 것 같습니다.r

Bash에서는 텍스트로 시작하는 마지막 명령을 입력하여 기억할 수 있으며, ESC CTRL-e이는 다른 명령에 비해 이점이 있습니다! 명령을 실행하지 않고 단지 "호출"하여 사람들이 명령을 실행하기 전에 텍스트를 편집할 수 있는 기회를 제공하므로 히스토리 명령의 스타일을 지정하세요.

$ sudu <ESC><CTRL>-e

명령줄로 시작하는 마지막 명령을 호출하고 sudo실행 전에 편집하세요.

관련 정보