2016-08-01 33 views
0

當我在Linux命令行中輸入字符\或`(反向)時,顯示的子輸入終端是什麼?它顯示了我認爲是包含單個「>」字符的提示。 (見下圖)在Linux中鍵入或`後輸入的子命令行

它幾乎看起來像一個腳本終端(如python的「>>>」)。

enter image description here

我試着問谷歌,但問題是很難解釋。

回答

2

它只是在等待收尾。

您可以使用這些反引號從命令行獲得輸出並將其分配給一個變量。如果你想做myvar=`ls`,那麼ls的輸出將被分配給myvar。

同樣,您可以使用myvar=$(ls),有人認爲它更現代。

\的情況有點不同。反斜槓允許轉義下一個字符的含義。當你通常「結束」該行時,該命令被執行,但是當行結尾被轉義時不行。這在編寫shell腳本時可以派上用場,並且您想要在多行中傳播長命令。

+0

謝謝。我希望我能爲命令行學習一種新的超級力量:@ – javey

+0

@javey:插入任意換行符不是超級大國? –

+0

「有人建議」?歷史記錄毫無疑問;在Bourne實現了文字反引號支持之後很長一段時間,'$()'語法被引入到POSIX sh中(出於很好的理由:文字反引號很難嵌套,並且引用它們的語法是令人驚訝且難以使用的)。 –

0

由於newline(按Enter鍵)沒有關閉它,只是希望您繼續執行上一個命令。

2

此提示符是PS2(就像您的標準shell提示符是由變量PS1定義的那樣)。從the POSIX standard

PS2 - 每次用戶輸入一個<newline>之前完成在交互式外殼命令行,這個變量的值應經受參數膨脹和寫入標準誤差。默認值是"> "。本卷的POSIX.1-2008僅針對支持用戶可移植性實用程序選項的系統指定變量的影響。


因此,該被印刷意味着您輸入一個不完整的命令行的一個交互式殼。如果您還有其他類型的報價尚未完成,或者報價沒有結束fi,您可能會得到同樣的結果。

+1

中的問題#7感謝POSIX標準報價。我現在可以將PS2導出爲「close your dang'$」之類的東西,所以我記得這個提示的含義。 – javey

+1

@javey你也可以在'(''''while','if',''''''和其他關鍵字和字符的變體之後得到它。 –

+0

@thatotherguy這會使長時間提示。 .. – javey