私は防御的なシェルスクリプトが慎重で長期的に持続可能であるという前提を理解し受け入れます。
ここにあるテキスト処理の質問に対するほとんどの答えはこの原則に従い、スペース、ダッシュ、および改行を含む可能性のある非正規のファイル名に対する偶然性が含まれます。
ファイル名に新しい行がどのくらいの頻度で使用されますか?具体的には:
- デフォルトでは、改行文字を含むファイル名を生成するアプリケーションはありますか?
- そのようなファイル名を作成する必要がある状況はありますか?
- それとも主にユーザーエラーの例ですか?
[1] 可能な最も広範なシナリオと緊急事態を計画し管理することを意味します。
(やや悲しい)コメントからインスピレーションを得た質問この問題。
ベストアンサー1
ファイル名を操作するテストアプリケーション用に特別に作成されたファイル名以外の改行文字を含むファイル名を見たことはありません。改行を含むファイル名は、次の理由で発生する可能性があります。
- いくつかのバグやユーザーエラー(誤ったコピー - 貼り付けなど)が原因で予期しないファイル名が発生しました。
- 一部のファイルシステムの破損はファイル名に影響します。
- 誰かがセキュリティの脆弱性を利用するために意図的に「奇妙な」ファイル名を作成します。ここで、アプリケーションは渡されたファイル名を必要以上に信頼します。
POSIX は以下を定義します。ファイル名"ファイル名を指定するために使用される1〜{NAME_MAX}バイトで構成される名前。名前を構成する文字は、スラッシュ文字とヌルバイトを除く任意の文字値セットから選択できます。ファイル名"dot" "ドット - 「ドット」は特別な意味を持ちます。「すべてのファイルシステムが「奇妙な」ファイル名(固有)を許可するという保証はありません。保証するキャラクターはASCII文字、数字、ピリオド、ハイフン、アンダースコアつまり、、、および、ハイフンは最初の位置に表示されることは禁止されていますがA-Z
、最新の unice のほとんどの基本ファイルシステムはこれを行います。a-z
0-9
._-