我是新來的bash。 我試試這個命令來查找當前路徑下的文件夾:
$ ls -F | grep "/"
但有時我會鍵入錯誤,如grep「\」,它會跟隨無限「>」。 在這種情況下,我可以輸入所有內容,如':',w,q,...但只是文本,我無法輸入其他命令。 看起來是這樣的:
$ ls -F | grep"\"
>
>:wq
>exit
>blablabla
>
任何人都可以告訴我怎麼去從這些可怕的「>」走? 謝謝你救了我
我是新來的bash。 我試試這個命令來查找當前路徑下的文件夾:
$ ls -F | grep "/"
但有時我會鍵入錯誤,如grep「\」,它會跟隨無限「>」。 在這種情況下,我可以輸入所有內容,如':',w,q,...但只是文本,我無法輸入其他命令。 看起來是這樣的:
$ ls -F | grep"\"
>
>:wq
>exit
>blablabla
>
任何人都可以告訴我怎麼去從這些可怕的「>」走? 謝謝你救了我
嘗試按Ctrl +d這將signal the end of input。
(也稱爲「end of transmission」)
這樣,您可以恢復您的bash會話。
在你的情況,如Gordon Davisson提到下面,按Ctrl +ç我們足夠。
我已經測試了在GNU的bash,版本46年3月4日(2)-release下(x86_64-PC-MSYS)(從最新的git 2.9.2)
按Ctrl +顯示
bash: unexpected EOF while looking for matching `"'
按Ctrl +çW¯¯後的C將返回慶典(沒有註銷)生病立即返回到bash。
在bash中使用反斜槓通常會轉義成功的字符。
$ echo "\" # this escapes the last double quote but does not complete the command
因此,grep不認爲命令是完整的,並繼續允許輸入>
。
$ echo "back\slash" | grep "\"" # notice there is a second trailing double quote
完成命令提供缺少的結束雙引號 (轉義這一次!)。 triplee
雖然前面的例子中完成它實際上告訴grep來搜索一個雙引號("
)的命令。要指示grep來搜索一個反斜槓(我相信最初的目的),那麼\
將需要進行轉義三次(允許它在雙引號內工作):
$ echo "back\slash" | grep "\\\\"
如果沒有逃過正常,你很可能會得到一個錯誤grep: Trailing backslash
。當然,還有其他方法可以實現這一點,儘管這可能有助於您理解手頭的問題。
哇,謝謝!它真棒而有趣! – AHao
Control-C會更好。在許多情況下,Control-D將結束shell會話,而Control-C更通用「oops,取消」。 –
@GordonDavisson謝謝。我已將您的評論納入答案以獲得更多可見性,並對兩種組合進行了測試。 – VonC