rename
コマンドはどこから来たのですか?
user@Host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
驚くべきことに、それはrename
パッケージから来ています。
pilot6@Pilot6:~$ ls -l /usr/bin/rename
lrwxrwxrwx 1 root root 24 окт 17 2013 /usr/bin/rename -> /etc/alternatives/rename
pilot6@Pilot6:~$ ls -l /etc/alternatives/rename
lrwxrwxrwx 1 root root 20 апр 29 2016 /etc/alternatives/rename -> /usr/bin/file-rename
pilot6@Pilot6:~$ dpkg -S /usr/bin/file-rename
rename: /usr/bin/file-rename
おそらく、update-alternatives
メカニズムによって管理されるシンボリックリンクであることがわかります。
$ ls -l $(which rename)
lrwxrwxrwx 1 root root 24 Jun 29 2016 /usr/bin/rename -> /etc/alternatives/rename
を使用してオプションの実装を確認できます
$ update-alternatives --list rename
/usr/bin/file-rename
/usr/bin/prename
を使用して実装を選択できます
update-alternatives --config rename
FWIW file-rename
はrename
パッケージによって提供されますが、元のprename
はPerl
自体によって提供されます。 apt-cache show rename
から:
このパッケージは、ファイルの名前を変更するためのPerlインターフェイス(File :: Rename)と、Perlパッケージによって現在提供されているバージョンを置き換えることを目的としたコマンドラインツール 'rename'の両方を提供します。
これがまだ十分に混乱していないかのように、util-linux
パッケージからさらに別のrename
に出くわす可能性があります- すべての名前変更とは何ですか?
/usr/bin/rename
(かなり気の利いたPerlスクリプト)について話している場合、rename
コマンドは独自の個別のパッケージに属します。
rename:
Installed: 0.20-4
Candidate: 0.20-4
Version table:
*** 0.20-4 500
500 http://archive.ubuntu.com/ubuntu xenial/main AMD64 Packages
500 http://archive.ubuntu.com/ubuntu xenial/main i386 Packages
100 /var/lib/dpkg/status
Kornシェルとその派生物の場合、rename
はシェル組み込みコマンドです。
$ echo $Shell
/bin/mksh
$ type rename
rename is a Shell builtin