ワイルドカードを使用したシンボリックリンクの作成

ワイルドカードを使用したシンボリックリンクの作成

ワイルドカードを使用してシンボリックリンクを作成したいと思います。

ln -s jetty_server01.file jetty_*.file

したがって、名前付きファイルに対するすべての要求は同じディレクトリの宛先jetty_*.fileに接続されます。jetty_server01.file

それは可能ですか?

CentOS 7を使用してください。

答え1

いいえ、ファイルシステムの動作方法はそうではありません。ファイルシステムストレージ既存のファイル名、いいえ潜在的なファイル名。

" *"は、ディレクトリ内のすべての既存のファイル名をユーザーが指定したパターンと一致させてファイル名を完成させるシェル機能「ワイルドカード」を意味します。プログラムでファイルを開くと、これは発生しません。

このようなことをしたい場合は、独自のファイルシステムを実装するか、実際の潜在的なファイル名のそれぞれへのリンクを作成する必要があります。

答え2

はい...名前にアスタリスクがあるシンボリックリンクを作成できます。

2番目のファイル名(アスタリスク付きの名前)を引用すると、ユーザーが提供するコマンドはこれを行います。

$ ln -s jetty_server01.file 'jetty_*.file'
$ ls -l jetty_\*.file 
lrwxrwxrwx 1 ilkkachu ilkkachu 19 Jan 12 19:56 jetty_*.file -> jetty_server01.file

しかし、これはおそらくあまり役​​に立ちません...使用するたびにファイル名を引用する必要があります。jetty_*.fileこれは、シェルで使用するとjetty_*.file、次のようなすべての一致するファイル名に拡張されるためですjetty_server01.file

$ ls jetty_*.file
jetty_server01.file  jetty_*.file@

正確な名前のファイルがあるため、globが他のファイルと一致するのを防ぎません。

たとえば、最新のファイルセットに接続する場合は、jetty_current.file類似または別の名前を指定する方が簡単で混乱しにくくなります。もちろん、リンクを手動で更新する必要があります。

(シェル以外のプログラムではglobを拡張できないため、jetty_*.file設定ファイルなどで使用できますが、これもやや混乱する可能性があります。)

関連情報