Откуда берется rename
команда?
user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
command-line
dpkg
rename
guettli
источник
источник
rename
то, что поставляется с Fedora, совсем другое. Похоже, что это скомпилированная программа, и она не такая мощная, как та,rename
которая поставляется с Ubuntu. Так что будьте осторожны при использовании скриптов в другом дистрибутиве Linux.prename
Ответы:
Удивительно, но это идет от
rename
пакета.источник
dpkg -S
не идет по символической ссылке? Баг или фича?dpkg
работа.dpkg
имеет дело только с установленными пакетами. Используйтеupdate-alternatives --query rename
, это покажет вам разрешенный путь ссылкиdpkg
/dpkg-query
предложил эту информацию удобно. Однако я не думаю, чтоdpkg -S
следует молча разыменовывать символические ссылки, пока он не найдет файл пакета.dpkg -S foo
не должен находить командуfoo
, он находит пакет, который установил файлfoo
, и наиболее полезен, когда вызывается с абсолютным путем файла. Было бы хорошо, если быdpkg -S /usr/bin/rename
объяснили, почему ни один пакет не предоставляет такую символическую ссылку, но я думаю, что это все равно должно сказать правду, что ни один пакет не делает.Вы, вероятно, обнаружите, что это символическая ссылка, которой управляет
update-alternatives
механизм:Вы можете увидеть дополнительные реализации, используя
и может выбирать между реализациями, используя
FWIW
file-rename
предоставляетсяrename
пакетом, тогда как оригиналprename
предоставляется отдельноperl
. Отapt-cache show rename
:Как будто это уже не достаточно сбивало с толку, вы также можете столкнуться с еще одним
rename
изutil-linux
пакета - посмотрите, что со всеми переименованиями?источник
Если мы говорим о том
/usr/bin/rename
, что это довольно изящный Perl-скрипт, тоrename
команда принадлежит отдельному пакету.В случае оболочки Korn и ее производных,
rename
это встроенная команда оболочки.источник
rename
команде, ноrename
не только упоминается/usr/bin/rename
, как вы видите в моем ответе. Пользователи, имеющие оболочки ksh или mksh, могут не знать об этом. Когда я лично начинал сmksh
, я был очень озадачен, когдаrename
не принимал регулярное выражение, пока не понял, что это две разные вещи. Кроме того, не воспринимайте мои слова «Если мы говорим о х» буквально, считайте это способом сказать «В случае»