printf
感叹号的最佳表达方式是什么!
——tcsh
?
似乎使用单引号或双引号对于转义感叹号没有任何影响;使用反斜杠 — \!
— 确实有效,但随后它就会从history
.
编辑:具体来说,根据我自己在 2014-09-21T15:34Z 的评论,这个问题可以重现savehist
- 你必须exit
重新加载tcsh
才能体验这个问题。 :-)
答案1
如果您正在使用tcsh
(不是原来的csh
),你应该设置histlit
变量:
histlit
(+)
如果设置,内置和编辑器命令以及 savehist 机制将使用历史列表中行的文字(未展开)形式。另请参见
toggle-literal-history
编辑器命令。
set histlit=1
因此,只需在您的~/.cshrc
或中添加一行即可~/.tcshrc
。
之后,您可以用反斜杠引用!
:
printf 'a\!b\n'
答案2
尝试:
$ printf 'a\!c\n'
a!c
或者:
$ printf '%s\n' a\!c
答案3
tcsh
使用 !历史替换字符
g4ur4v:~> echo $0
tcsh
g4ur4v:~> printf '!\n'
!
编辑
g4ur4v:~> echo 'a\!c'
a!c
g4ur4v:~> printf 'a\!c\n'
a!c