![이 bash 별칭은 이전 명령을 sudo로 어떻게 반복합니까? [복사]](https://linux55.com/image/60608/%EC%9D%B4%20bash%20%EB%B3%84%EC%B9%AD%EC%9D%80%20%EC%9D%B4%EC%A0%84%20%EB%AA%85%EB%A0%B9%EC%9D%84%20sudo%EB%A1%9C%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%B0%98%EB%B3%B5%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
나는 최근에 발행된 마지막 명령을 sudo로 반복하기 위해 이 영리한 bash 별칭을 발견했습니다. sudo !!
명령이 실패한 후 터미널에서 직접 를 사용하여 이 작업을 수행할 수 있습니다.
내가 찾은 별칭은alias mycmd='sudo $(history -p \!\!)'
이것이 어떻게 작동하는지 잘 모르겠습니다.
답변1
$(history -p \!\!)
기록에 다시 추가하지 않고 마지막으로 실행된 명령을 가져오는 방법입니다. 에서 help history
:
-p perform history expansion on each ARG and display the result
without storing it in the history list
Bash에서는 !!
마지막으로 실행된 명령까지 확장되지만 이 확장은 별칭 확장 전에 실행되므로 별칭에서 직접 사용할 수 없습니다. (역사적 확장은 가장 초기의 확장 중 하나입니다. 이는 버팀대 확장 이전에도 발생했습니다(예:보통 먼저).)
따라서 마지막으로 실행된 명령을 얻으려면 어떤 방법을 사용해야 합니다. 이는 셸 방식을 history -p
확장한 를 사용하여 수행할 수 있습니다.!!
왜 도망쳤는지는 모르겠지만 !
. 나에게는 백슬래시 없이도 잘 작동합니다.