2016-07-17 7 views
0

私はbashを初めて使っています。 「>」

$ ls -F | grep "/" 

を、時には私が間違ってgrepのように入力し、「\」、それは無限たどる: iは、現在のパスの下のフォルダを見つけるために、このコマンドを実行してください。 このような状況では、「:」、「w」、「q」などのようなものはすべて入力できますが、テキストだけでは他のコマンドを入力できません。

$ ls -F | grep"\" 
> 
>:wq 
>exit 
>blablabla 
> 

誰がどのように離れてこれらの恐ろしいから得るために私に言うことができる「>」: は次のようになりますか?私

答えて

0

を保存するための おかげで意志signal the end of inputはCtrl +Dを試してみてください。
end of transmissionとも呼ばれます)

こうすると、bashセッションを再開できます。あなたのケースでは

Gordon Davissonは以下の言及として、はCtrl +十分Cたちを。

私がテストしている両方のGNU bashで、(最新のgit 2.9.2から)バージョン4.3.46(2)-release(x86_64版-PC-MSYS)

  • はCtrl +Cは、W

    bash: unexpected EOF while looking for matching `"' 
    
  • Ctrlキー + Cを表示した後はbash(NOログアウト)に戻ります直ちに病気に戻ります。

+0

うわー、ありがとう!それは素晴らしいと面白いです! – AHao

+0

Control-Cはより良いでしょう。多くの状況では、Control-Dはシェルセッションを終了しますが、Control-Cはより一般的な "oops、cancel that"です。 –

+0

@GordonDavissonありがとうございました。私はより多くの可視性のために答えにあなたのコメントを入れて、両方の組み合わせをテストしました。 – VonC

0

通常、バックスラッシュを使用する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を伝えるの命令を完了しますが。適切にエスケープされていない場合、あなたはおそらくよ

$ echo "back\slash" | grep "\\\\" 

:(私はもともと意図していたと考えている)、バックスラッシュを検索するためにはgrepを指示するには、その後\は3回(それは二重引用符内で作業できるようにする)をエスケープする必要があります。エラーgrep: Trailing backslashを取得します。もちろんこれを達成する他の方法もありますが、これは手元の問題を理解するのに役立ちます。

+0

"エスケープ"するには、欠落している閉じている二重引用符を入れてください(今度はエスケープされていません)。 – tripleee

+0

@トライプルー:あなたのご意見は、はい、二重引用符をエスケープしたい場合は "欠落している閉じ二重引用符を指定してください(今度はエスケープされていません!)" - これがコマンドを完了します。バックスラッシュをエスケープしたい場合は、3回エスケープするか別の方法で行う必要があります。 –

+0

ありがとう、それは本当に私はそれが起こった方法と他の問題でそれを適用する方法を理解するのに役立ちます – AHao

関連する問題