
;
및 와 같은 문자 그대로의 텍스트를 인쇄하고 싶습니다 #
.
에서는 bash
다음을 사용할 수 있습니다.(신용 거래):
echo_literally_helper() {
local str; str=$(history 1)
# Remove leading space number space
echo "$str" | sed -En 's/^ *[0-9]+ +[[:graph:]]+[[:blank:]]//p'
}
alias echo-literally='echo_literally_helper #'
그 다음에:
$ echo-literally a; b; c
a; b; c
같은 일을 어떻게 할 수 있습니까 zsh
?
답변1
이 작업은 다음을 사용하여 수행할 수 있습니다.$history
그리고INTERACTIVE_COMMENTS
:
echo_literally_helper () {
local str="$history[$(print -P %h)]"
echo "${str#*echo_literally\ }"
}
alias echo_literally='echo_literally_helper #'
# for using `$history`. (does not needed in zsh-5.5.1 here, though.)
zmodload zsh/parameter
# zsh does not enable this option by default, so turn on.
setopt interactivecomments
그 다음에:
% echo_literally a; b; c
a; b; c
참고: bulitin 명령이 아닌 (또는 ) 현재 기록 명령을 가져오기 위해 print -P %h
및 를 사용합니다 .$history
history
fc
다음은 zsh 문서에 대한 몇 가지 참조입니다.
history
이 연관 배열은 과거 사건 번호를 완전한 역사 라인에 매핑합니다.
...
--
INTERACTIVE_COMMENTS
(-k
)는
대화형 쉘에서도 주석을 허용합니다.
--
참고:
비대화형 쉘 또는INTERACTIVE_COMMENTS
옵션 세트가 있는 대화형 쉘에서 histchars 인수의 세 번째 문자(기본값은 "#")로 시작하는 단어는 해당 단어와 개행 문자 앞에 있는 모든 후속 문자를 초래합니다. 무시당하다.
--
%h
%!
현재 역사적 사건 번호.