それはように、特定の特殊文字を使用するために正しいことを+
、&
、'
、.
(ドット)と,
ファイル名に、基本的には、(カンマ)。
私はあなたが使用できることを理解-
し、_
何の問題もなく、私は他のシンボルについての明確な何かを見つけることができなかったいくつかの研究を行っています。あなたができると言う人もいれば、できないと言う人もいれば、それらを使用することが「推奨されていない」と言う人もいます(それが何であれ)。
それはように、特定の特殊文字を使用するために正しいことを+
、&
、'
、.
(ドット)と,
ファイル名に、基本的には、(カンマ)。
私はあなたが使用できることを理解-
し、_
何の問題もなく、私は他のシンボルについての明確な何かを見つけることができなかったいくつかの研究を行っています。あなたができると言う人もいれば、できないと言う人もいれば、それらを使用することが「推奨されていない」と言う人もいます(それが何であれ)。
回答:
+、&、 '、などの特定の特殊文字を使用するのは正しいですか?(ドット)および、(コンマ)、基本的に、ファイル名。
はい。
正しいが、必ずしも推奨または便利ではない。
最新のUnixおよびLinuxファイルシステムでは、nullを除く任意の文字を/
ファイル名内で使用できます。
ASCII句読点を使用できます。一部のユーティリティは、作成するファイルの名前にストップ(ドット)とコンマを使用します。
ASCII制御文字を使用できますが、これは受け入れられるように表示される可能性が低く、使用が難しいためお勧めできません。
ASCIIアンパサンドやASCIIアポストロフィなどのシェルメタ文字を使用できます。ただし、これは不便であり、コマンドを作成するときには、そのような文字を引用またはエスケープするように特に注意する必要があります。
さまざまなエンコーディングを使用してマルチバイト文字を使用できます。非ASCII文字を正しく解釈して表示するのは、シェルまたはユーティリティ、あるいはその両方です。UTF-8などの一般的なエンコーディングに制限し、ロケールを適切に設定することをお勧めします。
あなたは持っています最少の問題をシェルのメタ文字ではなくハイフンで名前を開始していないものに句読点文字のセットを制限し、ASCII印刷可能な文字を使用して(または停止-あなたがファイルを非表示にする場合を除きます)。
他の人が述べたように、現代のUnix / Linuxシステムでは、ファイル名には\0
(NUL)と/
(スラッシュ)を除く任意の文字を含めることができます。
それに加えて、POSIX標準では、ファイル名に移植可能な文字セットを定義しています。
3.278ポータブルファイル名文字セット
ポータブルファイル名を構成する文字のセット。
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文字は、それぞれ<ピリオド>、<アンダースコア>、および<ハイフン>文字です。Pathnameも参照してください。
GNU Coreutilsのpathchk
ユーティリティは、オプションで呼び出されるとこれをチェックし、オプションは空のファイル名(無効ですが、引数としてに渡される可能性があります)およびハイフン()で始まるファイル名について警告します。-p
-P
pathchk
-
最も安全な方法は、任意のオペレーティングシステムで許可されている文字セットのウィキペディアエントリを参照することです。ここから見つけることができます。
たとえば、ほとんどの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セットのみが禁止されています。一部の文字(などのシェルメタ文字*?!
)はコマンドラインで問題を引き起こし、ファイル名を適切に引用またはエスケープする必要があります。ext2、ext3などのLinuxファイルシステムは、文字セットに依存しません(多かれ少なかれバイトストリームとして扱うだけです-nullのみで
/
禁止されています)。これは、UTF-8エンコーディングでファイル名を保存できることを意味します。表示または処理のためにファイル名を適切に変換するためにどのエンコーディングを使用するかを知ることは、シェルまたは他のアプリケーション次第だと思います。
結論として、問題はファイル名に特殊文字を使用することではなく、それらを処理する方法にあります。
-
、単に正確にするために:1)絶対にこのファイル名を引用符で囲む必要はありません、2)特別な--
引数を使用する代わりに、rm
それ自体が示唆するとおりに正確に行うことがrm ./-ramesh.txt
できます:、それをする必要はありませんあなたが提案するとおり。
あなたの研究はほぼ正しいです。ファイル名に特殊文字を使用することは可能ですが、これらの文字には特別な意味があるためお勧めできません。Linuxのファイル命名規則では、「ファイル名はハイフンで始まらない」など、ファイル名に関するその他の制限について説明しています。
ファイル名に特殊文字を使用してコマンドライン操作を実行する簡単な例。
個人的な注意として、これらのファイルを処理に使用する場合は特別な注意が必要なため、ファイル名に特殊文字を使用することは避けたいです。したがって、開発プロセスから特殊文字を扱う心配を取り除きます。
-
、_
および.
(ドット)のみを使用することですか?