ที่ไหนที่ไม่rename
คำสั่งมาจากไหน?
user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
ที่ไหนที่ไม่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
dpkg -S
ไม่ติดตาม symlink ข้อผิดพลาดหรือคุณสมบัติ?
dpkg
งาน dpkg
เกี่ยวข้องเฉพาะกับแพ็คเกจที่ติดตั้ง ใช้update-alternatives --query rename
มันจะแสดงเส้นทางเชื่อมโยงที่ได้รับการแก้ไข
dpkg
/ dpkg-query
ให้ข้อมูลนี้อย่างสะดวก อย่างไรก็ตามฉันไม่คิดว่าdpkg -S
ควรยกเลิกการเชื่อมโยง Symbian เงียบ ๆจนกว่าจะพบไฟล์แพ็คเกจ dpkg -S foo
ไม่ควรค้นหาคำสั่งfoo
พบแพ็คเกจที่ติดตั้งไฟล์ foo
และมีประโยชน์มากที่สุดเมื่อเรียกใช้ด้วยพา ธ สัมบูรณ์ของไฟล์ มันจะดีถ้าdpkg -S /usr/bin/rename
อธิบายว่าทำไมไม่มีแพ็คเกจให้ symlink นั้น แต่ฉันคิดว่ามันควรจะบอกความจริงว่าไม่มีแพ็คเกจไหน
คุณอาจจะพบว่ามันเป็นลิงค์สัญลักษณ์ที่จัดการโดย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
:
แพคเกจนี้ให้ทั้งอินเทอร์เฟซสำหรับการเปลี่ยนชื่อไฟล์ (File :: Rename) และเครื่องมือบรรทัดคำสั่ง 'เปลี่ยนชื่อ' ซึ่งมีวัตถุประสงค์เพื่อแทนที่รุ่นที่ให้มาในปัจจุบันโดยแพคเกจ perl
ราวกับว่ามันไม่ได้ทำให้สับสนมากพอคุณอาจเจออีกอย่างrename
จากutil-linux
แพ็คเกจ - ดูว่ามีอะไรบ้างที่เปลี่ยนชื่อทั้งหมด
หากเรากำลังพูดถึง/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
rename
คำสั่ง แต่rename
ไม่ได้ถูกอ้างอิงเพียง/usr/bin/rename
เท่าที่คุณเห็นในคำตอบของฉัน ผู้ใช้ที่มี ksh หรือ mksh shell อาจไม่ทราบ เมื่อฉันเริ่มด้วยตัวmksh
เองฉันรู้สึกงุนงงมากเมื่อrename
ไม่ยอมรับการแสดงออกปกติจนกระทั่งฉันรู้ว่าสิ่งเหล่านั้นเป็นสองสิ่งที่แตกต่างกัน นอกจากนี้อย่าใช้คำพูดของฉัน "ถ้าเรากำลังพูดถึง x" อย่างแท้จริงลองคิดว่ามันเป็นวิธีการพูดว่า "ในกรณีของ"
rename
เรือกับ Fedora นั้นจะแตกต่างออกไป ดูเหมือนว่าจะเป็นโปรแกรมที่คอมไพล์แล้วและมันก็แทบจะไม่ทรงพลังเท่ากับโปรแกรมrename
ที่มาพร้อมกับ Ubuntu ดังนั้นควรระมัดระวังเมื่อคุณใช้สคริปต์ในการกระจาย Linux ที่แตกต่างกัน