什麼是’ls報價’?
今天我碰巧按
'
了ls
所以命令是
ls'
> ls' quote> ls' zsh: command not found: ls\nls >
誰能告訴我,這是什麼
ls quote
東西?
由於您打開了一個報價
'
並按下輸入,shell 想要您關閉報價。quote>
提示只是這樣的視覺指示。這樣您就可以將多行參數傳遞給程序。
例如:
$ echo 'hi quote> there' hi there
由於您鍵入
l``s``'``Enter``l``s``'``Enter
了 ,這相當於嘗試執行一個名為ls\nls
(中間帶有換行符的命令)的命令,該命令不存在,因此 shell 給您一個錯誤。
那
quote>
是$PS2
(aka$PROMPT2
inzsh
) 提示,輔助提示字元串。在您的情況下,主要提示字元串(
$PS1
/$PROMPT
)>
似乎是邀請您輸入命令的提示字元串。次要命令是邀請您繼續並完成命令的命令。
Enter
當命令尚未完成時,它會在您按下後顯示。在
zsh
中,預設值為,其中$PS2
is (記錄在Prompt Expansion / Shell State下):%_>``%_
%_
解析器的狀態,即已在命令行上啟動的 shell 結構(如
if
和)。for
如果給定一個整數,將列印許多字元串;零或負數或沒有整數意味著列印盡可能多的數量。PS2
這在提示續行和PS4
使用選項進行調試時最有用XTRACE
;在後一種情況下,它也將以非互動方式工作。例如,如果我輸入:
my-PS1-prompt> (while true; do for i in "${var-qwe subsh while for dquote braceparam>
shell告訴我我仍然需要關閉那個
${...}
大括號參數擴展,"..."
雙引號,完成for
andwhile
語句並在該命令完成之前關閉子shell並且shell可以開始執行它。在您的情況下,它告訴您需要關閉該
'...'
單引號字元串。一旦你這樣做,它會嘗試執行相應的命令並失敗,因為ls<newline>ls
你的系統上沒有命令。請注意
Enter
,您可以按Escape
,Enter
(在某些終端上您也可以輸入為Alt
+Enter
)或Ctrl
+V
,Ctrl
+J
來^J
代替按送出給shell。在這種情況下,您將看不到輔助提示,您可以將游標移回第一行。除了
$PS1
and之外$PS2
,還有$PS3
(aka$PROMPT3
),用於select
語句中,$PS4
(aka$PROMPT4
) 用於xtrace
調試輸出,$RPS1
($RPROMP
) 和$RPS2
($RPOMPT2
) 與$PS1
/類似,$PS2
只是它們列印在螢幕的右側。
$PS1,2,3,4
來自 Korn shell,而%x
特殊序列來自csh
(大大擴展了zsh
)。 POSIX 指定 all butPS3
(因為它沒有指定ksh
’sselect
語句),但不指定%x
序列。
tcsh
有$prompt
並且$rprompt
啟發了zsh
’s$RPS1
/$PRS2
。
bash
shell 為它的提示符中的特殊序列選擇了一種不同的(也是不幸的)語法,而$PSx
不是使用\
與/%
中的字母不同且不兼容的字母。是特定的。tcsh``zsh``%_``zsh