Ubuntu 14.04以降、少なくとも3つのrename
コマンドがあります。
rename
はutil-linux
パッケージで提供されます。 man rename.ul を参照してくださいrename
パッケージで提供されるPerl
、 man prename を参照rename
パッケージで提供されるrename
、 man file-rename を参照質問:
Perl
パッケージに「フル」rename
コマンドを含めるか、rename
コマンドをまったく含めないのは簡単ではありませんか?少なくともUbuntu 17.04までこの一見不完全なように見える分割が維持されるのはなぜですか?この質問はU&Lですでに尋ねられています(後でわかりました)。
すべての名前変更の内容:prename、rename、file-rename?
(偶然ではない場合)同じ名前を使用して異なるコマンドを提供する2つのパッケージがあるのはなぜですか?
それは珍しいことではありません。作成者は通常、考えている最も単純なコマンド名を選択するため、2人がファイルの名前を変更するコマンドを記述した場合、おそらく両方ともrename
という名前を付けます。これが Debian Alternatives system の背後にある理由の1つです。同じ名前のコマンドを提供するパッケージを共存させ、あるパッケージを別のパッケージに置き換えることができます。たとえば、複数のAWK実装があります-mawk
、original-awk
、gawk
(これらはすべて自分自身をawkと呼びます)。代替システムを使用すると、それらをすべて同時にインストールし、デフォルトのawk
としてそれらを簡単に切り替えることができます。
この特定の場合、prename
はPerlソースコードから取得されます。 Debianパッケージメンテナーは元々rename
がPerlのものでしたが、util-linux
からのrename
に対応するために代替システムに切り替えました。それから誰かが Perlのファイル名を変更するモジュール でPerlのrename
の改良版を書き、それが別の代替手段として追加されました。しかし、それはファイルの名前を変更するためのPerlモジュールでさえありません。
Perl
パッケージに「フル」rename
コマンドを含めるか、rename
コマンドをまったく含めないのは簡単ではありませんか?少なくともUbuntu 17.04までこの一見不完全なように見える分割が維持されるのはなぜですか?
この状況がどのように進化したかについては、 Debianバグ#735134 をご覧ください。 Debianのメンテナーは一般に、作業コマンドを別のものに置き換えるなどの抜本的なことを行う場合、少なくとも1つのリリースを行うことを好みます。 prename
はjessieのために保持されていましたが、現在はバスターのために削除されています。さらに、rename.ul
の互換性が低すぎるため、rename
は代替システムの下にないようです。 rename
はfile-rename
になります。
Ubuntuは一般にDebianからパッケージの変更を選択するため、Debianのrename
に起こることは遅かれ早かれ、おそらく18.04にUbuntuによって選択されます。 17.10には遅すぎるようです。
これらのコマンドの違いは何ですか?
基本的に、prename
とfile-rename
の両方がPerl式を実行してファイルの名前を変更します。 file-rename
は積極的に保守されており、より多くのオプションをサポートしています。 rename
from util-linux
はまったく異なる動作をし、パターンに関する独自のルールを持っています。