Linuxでファイル名を指定するときに特定の特殊文字を使用するのは正しいですか?

Linuxでファイル名を指定するときに特定の特殊文字を使用するのは正しいですか?

基本的にファイル名に+、、、、(ドット)、 (カンマ)など特定&の特殊文字を使うのが正しいのですか?'.,

私はあなたが問題なく-使用できることを知っていますが_、調査した後は他の記号に関する明確な情報を見つけることができません。どういう意味ですか)。

答え1

ファイル名にデフォルトで+、&、'、.(ドット)、、(カンマ)などの特定の特殊文字を使用することは正しいですか?

はい。

正確であるが、必ずしも望ましいか便利であるとは限らない。

あなたはそれを使用することができますnull と/ 最新のUnixおよびLinuxファイルシステムのファイル名内で。

あなたはそれを使用することができますASCII句読点。一部のユーティリティ会社では stop(指す)と生成されたファイル名にはカンマが含まれています。

あなたはそれを使用することができますASCII制御文字ただし、これは許容可能な方法で表示される可能性が低く、使用しにくいため推奨されません。

あなたはそれを使用することができますシェルメタ文字たとえば、ASCIIアンパサンドとASCIIアポストロフィです。ただし、これは不便であり、コマンドを設定するときにこれらの文字を引用またはエスケープするために特別な注意が必要です。

あなたはそれを使用することができますマルチバイト文字複数のエンコーディングを使用してください。非ASCII文字は、シェルおよび/またはユーティリティによって正しく解釈され表示されます。広く使用されているエンコーディング(UTF-8など)に制限し、ロケールを適切に設定することをお勧めします。

あなたはやる最小限の問題ASCII印刷可能文字を使用し、句読点文字セットをビシェルメタ文字に制限し、名前はハイフン(またはファイルを非表示にしない限り停止文字)で始まりません。

答え2

他の人が言ったように、最新のUnix / Linuxシステムでは、ファイル名に\0(NUL)と(スラッシュ)/を除くすべての文字を含めることができます。

とりわけ、POSIX 標準はファイル名の移植可能な文字セットを定義します。

3.28.2 移植可能なファイル名文字セット

移植可能なファイル名を構成するための文字セット。

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -

最後の3文字は<ピリオド>、<アンダースコア>、<ハイフン>文字です。また、見ることができますパス名

これpathchkユーティリティは以下から来ます。GNU Coreutilsこれはこのオプションで呼び出されたときに確認され-p-Pオプションは空のファイル名(無効ではなく引数として渡される可能性があります)とpathchkハイフン()で-始まるファイル名について警告します。

答え3

最も安全な方法は、すべてのオペレーティングシステムで許可されている文字セットについてWikipediaエントリを参照することです。以下で見つけることができます。ここ

たとえば、ほとんどのUNIXベースのシステムでは、許可されている文字セットは8ビットセットで、予約済み文字は次のとおりです。ヌル文字(NUL、'\0')。ただし、ファイル名に特殊文字を使用すると、削除時に問題が発生する可能性があるため、お勧めできません。

たとえば、ファイル名があり、-ramesh.txt次のように削除しようとします。

rm -ramesh.txt
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
rm "-ramesh.txt"
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.

ファイルを削除する必要があるため

rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y

詳細は以下で確認できます。この答えも同じです。

私はLinuxとOS-Xでは、/印刷可能なASCIIセットだけが無効になっていると思います。特定の文字(シェルメタ文字など*?!)はコマンドラインで問題を引き起こす可能性があり、ファイル名を適切に引用またはエスケープする必要があります。

Linuxファイルシステム(例:ext2、ext3)は文字セットに拘束されません(私の考えではほとんどバイトストリームとして扱うようです。nullのみが許可されており、禁止されて/います)。これは、ファイル名をUTF-8エンコーディングとして保存できることを意味します。私はシェルや他のアプリケーションが表示や処理のためにファイル名を適切に変換するために使用するエンコーディングを知っていると思います。

全体的に問題は、ファイル名に特殊文字を使用するのではなく、これを処理する方法です。

答え4

あなたの研究はほぼ正確でした。ファイル名に特殊文字を使用できますが、特殊文字には特別な意味があるため、お勧めできません。Linuxのファイル命名規則「ファイル名はハイフンで始めることはできません」など、ファイル名に関するその他の制限も説明されています。

シンプルはいコマンドライン操作を実行するには、ファイル名に特殊文字を使用します。

個人的には、ファイル名に特殊文字を使用しないことを好みます。特殊文字は、これらのファイルを処理するときに特別な注意が必要なためです。そのため、開発の過程で特殊文字処理の心配がなくなりました。

関連情報