web-dev-qa-db-ja.com

UNIX / Linuxでファイルに名前を付けるために安全に使用できる文字は何ですか?

昨日までは、小文字、数字、ドット(.)およびアンダースコア(_)ディレクトリとファイルの命名用。

今日はもっと特殊文字を使い始めたいと思います。 safe(安全とは、問題が発生しないことを意味します)はどれですか?

ps:このサイトでこの質問がまだ出されていないなんて信じられませんが、「名前付け」という単語を検索して、正規の質問を読んで成功しませんでした(ほとんどはコンピューター名に関するものです)。

編集#1:(ところで、ファイル名に大文字は使用していません。理由は覚えていません。しかし、数か月後、大文字の作成に問題があります: 一部のOSはASCIIをサポートしていません !)

昨日の職場での出来事は次のとおりです。いつものように、自己署名SSL証明書を作成する必要がありました。いつものように、ファイルにはWebサイトの名前を使用しました:www2.example.com.key www2.example.com.crtwww2.example.com.csr。

次に問題が発生します。ワイルドカードの自己署名証明書を生成します。私はそれを行い、ファイルにexample.com.key example.com.crt example.com.csrという名前を付けましたが、これは誤解を招く恐れがあります(* .example.comの証明書です)。

私は家に帰り、Apache構成ファイルのファイル名にいくつかの星を入れ始め、それが機能するかどうかを確認しました(役に立たない家庭用コンピューターで、スタッグすらしていません)。

ファイル名のスターは本当に私を怖がらせます:一部の同僚/ベンダー/ ...は、rm find xargを使用してスクリプトを実行できます http://www.ucs.cam.ac.uk/support/unix- support/misc/horror 、そしてすでに1つの答えが災害について語っています。

編集#2

ちょうどそれを考えました : エスケープする必要はありません。ファイル名に使用されない理由を知っている人はいますか?

編集#3

私がこれまでに理解したことを要約しましょう:

  • . そして _ ファイル名で安全に使用できます。
  • エスケープする必要のある特殊文字(スペースなど) |(* )は避ける必要があります。
  • 他のいくつかの特別なキャラクターは、さまざまな理由で避ける必要があります( /-:

他のすべてのものはどうですか? % または =

4
user130370

災害のレシピのように聞こえます。

あなたは以外のものを使うことができます / -ただし、一重引用符で囲むことをお勧めします(')特殊文字の実行を回避するため。

例えば。 $*`\|

ファイル名に特殊文字を使用することは、Windows-ism-主にGUIマシンの管理とコマンドライン(継続的に使用することはできません)から取得されます。ファイル名をエスケープする必要があります)。

最も安全なアプローチは、固執することです a-zA-Z0-9_.

UNIXでは、ディレクトリ名を区切るため、「/」以外の任意の文字を使用できます。 Unicode文字も問題ありません。

3
Antonio

アントニオは正しいですが、大文字を追加する場合を除いて、名前のスタイルを変更しないことをお勧めします(ただし、他のオペレーティングシステムが混在している場合はあいまいになる可能性があります)。

これにより、エスケープする必要のあるロケールや特殊文字(スペースやスペースなど)で直面する可能性のある多くの問題を回避できます。 $ サイン)シェルコマンドで。

2
Sven

: Windowsはそのようなファイルの読み取りを拒否するため、通常はファイル名には使用されません。名前、特に使用に関してより多くの制限があります : デバイスセパレータとして、Unixは単一のファイルシステム階層を持つ必要はありません。

1
jlliagre