![! ! : 명령어를 찾을수 없음](https://linux55.com/image/197101/!%20!%20%3A%20%EB%AA%85%EB%A0%B9%EC%96%B4%EB%A5%BC%20%EC%B0%BE%EC%9D%84%EC%88%98%20%EC%97%86%EC%9D%8C.png)
최근에 나는 관리자로서 명령을 실행하지 않는 것에 약간 좌절감을 느꼈고 다음을 사용하기 시작했습니다.sudo !!
많은. 나는 사용의 용이성을 위해 ffs
이 라인에 대한 별칭을 만들기로 결정했습니다. 다음 줄을 추가했습니다 ...
alias ffs="sudo !!"
나를 위한 .zshrc
.
그런데 이 기능을 사용하려고 하면 ffs
터미널에 들어갈 때 오류가 발생합니다.
sudo: !!: command not found
별칭을 사용하여 호출하면 명령이 작동하지 않는 이유는 무엇입니까? 이전 명령을 다시 실행하는 대신 이 문제를 해결하려면 어떻게 해야 합니까? 미리 감사드립니다!
답변1
별칭 확장 중에는 기록 확장이 수행되지 않습니다.
여기서는 이전 명령과 동일한 코드를 평가하고 싶지만 첨부된 별칭에 인수로 전달한 내용을 앞에 추가합니다 (예: 또는 sudo
등 원하는 작업을 수행하지 않을 수 있다는 점에 유의 ). 다음을 수행할 수 있습니다.cmd1; cmd2
for i (a b) echo $i
alias ffs='eval "sudo ${history[@]:0:1}"'
아니면 작동하게 할 수도 있지만 sudo zsh -c <the-code-from-the-previous-command+your-args-appended>
다음과 같은 경우에는 작동하지 않습니다.echo $non_exported_variable
ffs() sudo zsh -c "${history[@]:0:1} ${(j[ ])@}"
특수 연관 배열은 $history
과거 이벤트 번호를 해당 명령줄에 매핑합니다. ${array[@]:offset:length}
또한 최신 항목에서 오래된 항목으로 확장된다는 점에서 특별합니다. 따라서 위에서 ksh93 스타일을 사용하여 값 목록의 첫 번째 항목을 가져오면 최신 이벤트를 얻을 수 있습니다 ${${history[@]}[1]}
. .
또는 $(fc -nl -1)
이를 사용하여 추가 프로세스를 포크할 수도 있습니다.