0

この動作は予期せぬものであり、現実の世界では実用的ではないため、coreutilsにバグを報告することを計画しています...最初は笑いましたが、知らなかったのでファイル名にワイルドカードを含むファイルを作成できます。ワイルドカードを含むファイル名はどの程度実用的ですか?誰がそのような機能を使用しますか?

最近、次のようなbashコマンドを実行しました。

ln -s ../../avatars/* ./

残念ながら、正しい量の「../」を追加しなかったため、情報エラーを提供するのではなく、存在しない「*」ファイルへのリンクを作成するだけです。私はこれがそれをすることを期待します:

ln -s "../../avatars/*" ./

これは、そのようなファイル名をアドレス指定するための適切な方法です。

coreutilsのバグを送信する前に、他の人の意見をお願いします。この動作の実用的な使用法はありますか、またはlnは意味のあるエラーメッセージを提供する必要がありますか?

はい、私は、ディレクトリ内の各ファイルではなく、ディレクトリ全体にリンクできることを知っていますが、新しく作成されたファイルを古い場所に複製することは望んでいません。現在リンクされているファイルはごくわずかです。

シンボリックリンクでワイルドカードを使用することは悪い習慣であると言う人さえいるかもしれません。ただし、ディレクトリの内容は正確にわかっているので、各ファイルを手動で実行するよりもはるかに高速です。

4

1 に答える 1

3

これはバグではありません。

シェルでは、何にも一致しないワイルドカードパターンを使用すると、そのパターンは置き換えられません。たとえば、これを行う場合:

echo *.c

現在のディレクトリに.cファイルがない場合は、「*。c」と出力されます。現在のディレクトリに.cファイルがある場合、*。cはそのリストに置き換えられます。

多くのコマンドでは、存在しないファイルを指定するとエラーになり、「*。cにアクセスできません」などの意味のあるメッセージが表示されます。ただし、ln -sの場合、シンボリックリンクであるため、実際のファイルが存在する必要はなく、先に進んでリンクを作成します。

于 2012-08-20T04:35:53.517 に答える