`rename` 명령은 어디에서 왔습니까?


17

rename명령은 어디 에서 왔습니까?

user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename

3
그러나 rename페도라와 함께 제공되는 것은 다릅니다. 컴파일 된 프로그램 인 것 같 rename으며 우분투와 함께 제공되는 것만 큼 ​​강력하지는 않습니다 . 따라서 다른 Linux 배포판에서 스크립트를 사용할 때는주의하십시오.
Martin Ueding

@MartinUeding 당신은 여기에 의견을 남겨주세요 : askubuntu.com/questions/873661/…
guettli

이 답변 은 다음과 같습니다prename
Gallifreyan

답변:


20

놀랍게도 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

1
dpkg -S심볼릭 링크를 따르지 않는 이유는 무엇 입니까? 버그 또는 기능?
guettli

5
@guettli feature : "이 명령은 관리자 스크립트에 의해 생성 된 추가 파일을 나열하지 않으며 대안을 나열하지도 않습니다."
muru

2
심볼릭 링크는 패키지 자체에 속하지 않습니다.
Pilot6

2
@guettli는 일이 아니기 때문에 dpkg. dpkg설치된 패키지 만 처리합니다. 를 사용 update-alternatives --query rename 하면 해결 된 링크 경로가 표시됩니다
Sergiy Kolodyazhnyy

5
@guettli 데비안 버그 # 198220 참조 . 경우는 편리 할 것입니다 dpkg/ dpkg-query편리하게이 정보를 제공했다. 그러나 패키지 파일을 찾을 때까지 심볼릭 링크를 자동으로 역 참조 dpkg -S해서는 안된다고 생각 합니다 . 명령을 찾지 말고 파일 을 설치 한 패키지를 찾은 다음 파일의 절대 경로로 호출 할 때 가장 유용합니다. 패키지가 해당 심볼릭 링크를 제공하지 않는 이유를 설명 하면 좋을 것 입니다. 그러나 패키지가 없다는 사실을 여전히 말해야한다고 생각합니다. dpkg -S foofoo foodpkg -S /usr/bin/rename
Eliah Kagan

12

아마도 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-renamerename패키지에서 제공되는 반면 원본 prenameperl자체적 으로 제공됩니다 . 보낸 사람 apt-cache show rename:

이 패키지는 파일 이름 바꾸기를위한 perl 인터페이스 (File :: Rename)와 perl 패키지가 현재 제공하는 버전을 대체하기위한 명령 줄 도구 'rename'을 제공합니다.

이것이 충분히 혼란스럽지 않은 것처럼 패키지 rename에서 다른 것을 발견 할 수도 있습니다. 모든 이름 변경util-linux무엇입니까?를 참조하십시오 .


이름 바꾸기 대안으로 이름 바꾸기를 사용할 수없는 이유는 무엇입니까?
Random832

@ Random832 명령 줄 유틸리티의 경우, 대안은 서로에 대한 구문 호환 가능한 대체물 (적어도 일부 공통적 인 핵심 기능의 경우)이어야합니다. rename.ul 및 prename은 자격이 없습니다.
zwol

7

우리가 /usr/bin/rename꽤 멋진 펄 스크립트 인 에 대해 이야기하고 있다면 , 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

왜 "/ usr / bin / rename"에 대해 이야기하고 있습니까? 질문은 절대 경로를 포함합니다.
guettli

1
@guettli 질문에 rename명령에 대한 질문 rename이 있지만 /usr/bin/rename내 대답에서 볼 수 있듯이 참조 되지 않습니다 . ksh 또는 mksh 쉘을 가진 사용자는이를 알지 못할 수 있습니다. 개인적으로 시작 mksh했을 때 rename정규 표현식을 받아들이지 않을 때 매우 당황 했습니다. 두 가지 다른 것을 깨달았습니다. 또한 "우리가 x에 대해 이야기하고 있다면"이라는 말을 그대로 사용하지 말고 "경우에 대해"
Sergiy Kolodyazhnyy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.