出力のリダイレクトとスペース


9

私はこれについて妄想的ですが、うまくいけばそれは簡単な質問です:

違いはありますか

cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt

そして

cat file1|egrep -oP "[Mm]y string">/home/user/file.txt

つまり、パイプ文字(|)とリダイレクト文字(>)のパディングにスペースがあるかどうかは問題になりますか?私は本当にそこにスペースがあると、私がそれを望まないときに、スペースがどういうわけか出力ファイルに含まれることになることに非常に偏執的です。誰かが明確にできますか?(それが重要な場合はUbuntu 12 / bashを使用します。)


唯一の違いは、a)外観とb)bashでコマンドラインを編集するときの利便性です。たとえば、「単語」はスペースで区切られているため、前後にスペースが|ないか>、入力Ctrl-Wして前の「単語」を削除すると、おそらく必要以上に削除されます。カーソル移動などのキーストロークのための同上Esc-fEsc-bなど
CAS

回答:


8

シェルコマンドラインでは、引用符で囲まれていないスペースは、コマンドの解析中に単語を区切るためにのみ役立ちます。それらは、コマンドが参照する引数でも標準入力ストリームでも渡されません。


演算子の後にスペースを使用してもセキュリティの脆弱性はないと確信していますか?現在、再生に苦労していますが、悪意のあるユーザーが目的のファイルが「fileName」のときに「fileName」のようなファイルを使用して目的の操作を変更できるという一般的なエクスプロイトがあります。
CrippledTable
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.