ファイル名の改行文字

ファイル名の改行文字

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

ここにあるテキスト処理の質問に対するほとんどの答えはこの原則に従い、スペース、ダッシュ、および改行を含む可能性のある非正規のファイル名に対する偶然性が含まれます。

ファイル名に新しい行がどのくらいの頻度で使用されますか?具体的には:

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

[1] 可能な最も広範なシナリオと緊急事態を計画し管理することを意味します。

(やや悲しい)コメントからインスピレーションを得た質問この問題

答え1

ファイル名を操作するテストアプリケーション用に特別に作成されたファイル名以外の改行文字を含むファイル名を見たことはありません。改行を含むファイル名は、次の理由で発生する可能性があります。

  • いくつかのバグやユーザーエラー(誤ったコピー - 貼り付けなど)が原因で予期しないファイル名が発生しました。
  • 一部のファイルシステムの破損はファイル名に影響します。
  • 誰かがセキュリティの脆弱性を利用するために意図的に「奇妙な」ファイル名を作成します。ここで、アプリケーションは渡されたファイル名を必要以上に信頼します。

POSIX は以下を定義します。ファイル名"ファイル名を指定するために使用される1〜{NAME_MAX}バイトで構成される名前。名前を構成する文字は、スラッシュ文字とヌルバイトを除く任意の文字値セットから選択できます。ファイル名"dot" "ドット - 「ドット」は特別な意味を持ちます。「すべてのファイルシステムが「奇妙な」ファイル名(固有)を許可するという保証はありません。保証するキャラクターはASCII文字、数字、ピリオド、ハイフン、アンダースコアつまり、、、および、ハイフンは最初の位置に表示されることは禁止されていますがA-Z、最新の unice のほとんどの基本ファイルシステムはこれを行います。a-z0-9._-

答え2

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

IMHO、標準によるコーディングに対して「防御的な」ことはありません。この標準は、ファイル名に改行を許可することを指定します。スクリプトが標準で許可されているすべてのファイル名を処理できない場合、スクリプトは破損しています。

答え3

通常のユーザーがファイル名に改行文字を使用するのを見たことはありません。主な目的は、(1)攻撃者がシステムを破壊しやすくし、(2)セキュリティプログラムを作成するのを難しくすることです。 :-(. しかし、最新の Unix 系システム (例えば Linux) では許可されているので、攻撃に強いプログラムが必要な場合はこれに備えなければなりません。

「シェルのファイル名とパス名:正しく取得する方法」この問題を正しく処理する方法を示します。

関連情報