ファイル名の改行


24

防御的な1シェルスクリプトは慎重であり、長期的にはより持続可能であるという前提を理解し、受け入れます。

ここでのテキスト処理の質問に対する回答の多くは、非正統的なファイル名の回答の不測事態に組み込むことにより、この原則に従っています。スペース、ダッシュ、改行が含まれる場合があります。

ファイル名の改行はどの程度普及していますか?具体的には:

  • デフォルトで改行を含むファイル名を作成するアプリケーションはありますか?
  • そのようなファイル名を作成することが望ましい状況はありますか?
  • それとも、主にユーザーエラーのインスタンスですか?

[1]シナリオと不測の事態の可能な限り広い範囲の意味の計画と管理...

この質問に対する(やや平凡な)コメントに触発された質問


4
簡単な答えは、改行や印刷できない文字を含む奇妙なファイル名は決して良い習慣ではありません、賢明なアプリはそれらを作成せず、そのような名前を正しく処理しないシェルスクリプトまたはプログラムを誰かが破ろうとしている場合にのみ本当に見られます。他の人に参考文献などの詳細な回答を提供させていただきます。
jw013

回答:


26

ファイル名を操作するアプリケーションをテストするために意図的に作成されたもの以外の改行を含むファイル名を見たことはありません。改行を含むファイル名は、次の理由で表示される場合があります。

  • いくつかのバグまたはユーザーエラー(たとえば、不適切なコピーと貼り付け)により、意図しないファイル名が作成されました。
  • いくつかのファイルシステムの破損がファイル名に影響しました。
  • 誰かが「奇妙な」ファイル名を意図的に作成して、セキュリティホールを悪用しました。アプリケーションは、渡されるファイル名に本来あるべきものよりも多くの信頼を置きます。

POSIXでは、ファイル名を「ファイルの名前付けに使用される1〜{NAME_MAX}バイトで構成される名前」と定義しています。名前を構成する文字は、スラッシュ文字とヌルバイトを除くすべての文字値のセットから選択できます。ファイル名は、ドットとドットドット特別な意味を持っている。唯一の(奇妙な『ファイル名を」すべてのファイルシステムが受け入れるという保証はありません』保証文字はASCII文字、数字、ピリオド、ハイフンとアンダースコア、すなわちA-Za-z0-9および._-ハイフンでは、最初の位置では禁止されています)が、現代のユニシスのほとんどのネイティブファイルシステムはそうです。


だからspaces、ファイル名に移植性が保証されていませんか?これらの最後の3文字がであることを明確にすると役立つでしょうperiod, underscore, and hyphen。下線付きのリンクでは、わかりにくいです。
トクサロット14年

4
@toxalotいいえ、スペースは移植性が保証されていません。また,:(RCSで使用)、(X.orgで使用)、~(バックアップファイルの多くのプログラムで使用)、...しかし、ほとんどすべての最新システムでサポートされています。
ジル 'SO-悪であるのをやめる' 14年

22

論文を書くときには、さまざまなソースからPDFファイルの参考文献を収集することがよくあります。これらのすべてに正しいメタデータが含まれているわけではありません。つまり、PDFビューアーから論文のタイトルをコピーしてファイル名に貼り付けることがあります。これにより、ファイル名に改行が含まれることがよくありますが、私が使用したツールで問題になることはありませんでした。

私見では、標準へのコーディングについて「防御的」なものは何もありません。ファイル名に改行を使用できることを示す標準です。スクリプトが標準で許可されているすべてのファイル名を処理しない場合、スクリプトは壊れています。


2
実世界の例に感謝します。標準についてかなり雄弁にあなたのポイントを強調します
...-jasonwryan

6
「標準で許可されているすべてのファイル名をスクリプトが処理しない場合、スクリプトは破損しています」(強調を追加)
-jw013


⁺¹、まったく同じ理由でこの投稿に出会いました!改行をスペースに変換するコマンドを記述する方法を理解しようとしています。
ハイエンジェル

2

NORMALユーザーがファイル名に改行を使用するのを見たことがありません。彼らの主な目的は、(1)攻撃者がシステムを破壊することを容易にし、(2)安全なプログラムを書くことを困難にすることであるように思われます:-(。 、したがって、攻撃に抵抗するプログラムが必要な場合は、それらの準備をする必要があります。

「シェルのファイル名とパス名:正しく実行する方法」は、これを正しく処理する方法を示しています。


私は普通のユーザーで、ファイル名に改行があります。@smlの回答に記載されているシナリオは、私に何度も起こりました。私にとって興味深いのは、ファイル名の改行を使用して「システムを破壊」する方法です。それを説明する情報源はありますか?
ジョセフR.

@JosephR。私はシステムを侵害するための方法を考えることはできませんが、あなたがdontハンドル改行することをアプリケーションにDOSとしてそれを使用することができます(代わりに、クラッシュ)
strugee
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.