2017-01-07 6 views
0

私はUNIX(Bash)の基礎を学び、- !! $$という名前のファイルを作成しました。- !! agh!@@のようになります:

echo --\!\!agh\[email protected]@ > --\!\!\$\$ 

さて、このようなファイルを読み込み、削除するために、成功せずにしようとイム:

//read 
cat --\!\!\$\$ 
cat "--\!\!\$\$" 

//delete 
rm --\!\!\$\$ 
rm "--\!\!\$\$" 

私はさらに約非印字文字を読んで、非印刷可能なCHをオンに成功せずに試してみました以下のような印刷可能な形式へのaracters:

cat -v "--\!\!\$\$" 

私はどのように読んで、この種類のファイルを削除することができますか?

+1

':たとえば、あなたは-grepを使用して開始したパターンを検索したい場合は、次のものが電子 XPRESSIONはなく、別の選択肢であるということを教えて-eオプションを使用することができますrm - - \!\!\ $ \ $ 'と入力します。 '--'はoptions_の_endを意味し、ユーティリティはハイフンをオプションマーカーとして解釈しようとはしません。 –

+0

ありがとうございます。それは今働いている。説明ありがとう。 +1 – stfsngue

答えて

1

問題は特殊文字ではなく、正しくエスケープしています。しかし、ファイル名が--(または、しばしば1つだけでも-)で始まる場合、コマンドはファイル名ではなくオプションとして認識します。裸のファイル名の代わりに相対パス名を使用するだけです。例:

すべてのコマンドで大文字と小文字が区別されるわけではありませんが、ほとんどの場合そうです。それらのうちのいくつかは、--のように、オプションの終わりを示すためにセンチネルを使用させることができます。しかし、シェル自体はうまく裸のファイル名を読み込みます:catに任意の引数を渡すことはありません

cat <'--!!$$' 

を。シェルはファイルを読み込み、catの標準入力に送ります。そのため、オプション解析は入力されません。

ドットスラッシュトリックは、ファイル名ではない引数に対しては機能しませんが、これもコマンドに依存します。

$ read --help | grep -e -i 
read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...] 
    -i text use TEXT as the initial text for Readline 
+0

申し訳ありません。あなたの答えは '。/'の後のスペースで間違っていました。今あなたが説明する方法で働いています。私はこの答えを最高とマークしました。 +1 – stfsngue

関連する問題