Bash에서 마지막으로 실행된 명령을 얻는 방법은 무엇입니까? 알아요!!:p는 마지막 명령을 인쇄하지만 bash 프롬프트 외에는 사용할 수 없는 것 같습니다. 시도했지만 echo !!:p
인쇄되었습니다.
~/다운로드$pwd 다운로드 ~/다운로드$에코!!:p 에코 비밀번호
이것을 변수에 사용 하고 싶기 PROMPT_COMMAND
때문에 인쇄할 수 있도록 문자열로 가져와야 합니다. 찾을 수 있는 단축키가 있나요? 내가 잘못된 곳을 찾고 있는 걸까요?
아직은 모르는 것 같아요. 출력 후와 다음 프롬프트 전에 다시 표시할 수 있도록 마지막 명령 실행을 저장해야 합니다. 예를 들어 출력이 다음과 같기를 원합니다.
~/다운로드$pwd 다운로드 비밀번호 ~/다운로드$
.bashrc
파일의 프롬프트를 변경하고 있습니다.
PROMPT_COMMAND='echo -en "\033[38;5;2m"!!:p"\033[0m\n"' PS1='\W\$'
하지만!! :p는 bash 프롬프트에서만 잘 작동합니다. 그렇다면 나중에 다시 인쇄할 수 있도록 마지막 명령을 어떻게 저장합니까?
답변1
history
내장된 명령을 사용하여 방금 실행한 명령줄에 액세스할 수 있습니다. ( history 1
방금 실행한 명령줄을 인쇄하는데 왜 fc -nl -1
같은 명령줄을 인쇄하는지 모르겠습니다 fc -nl 0
.)
PROMPT_COMMAND='echo -en "\033[38;5;2m"; history 1; echo -en "\033[0m\n"'
명령 텍스트 앞에 숫자가 인쇄됩니다. 해당 번호를 제거한 버전입니다. (히스토리 라인이 99999개보다 많으면 정확하지 않을 수 있습니다. bash가 해당 숫자의 형식을 어떻게 지정하는지 모르겠습니다.)
prompt_function () {
local prompt_history="$(history 1)"
prompt_history=${prompt_history:7}
echo -En $'\033[38;5;2m'"$prompt_history"$'\033[0m\n'
}
PROMPT_COMMAND=prompt_function
(이것은 echo -en ..."$prompt_history"...
명령줄에서 백슬래시를 확장하므로 echo -E
쉘 확장을 사용하여 . 을 사용하여 $''
제어 문자를 생성하도록 했습니다.)