ความแตกต่างระหว่างคำสั่ง "เปลี่ยนชื่อ" ที่แตกต่างกันคืออะไร?


13

ตั้งแต่ Ubuntu 14.04 มีrenameคำสั่งอย่างน้อยสามคำ:

  1. renameจัดทำโดยutil-linuxแพคเกจให้ดูการเปลี่ยนชื่อมนุษย์
  2. renameให้บริการโดยperlแพคเกจดูผู้ชาย prename
  3. renameจัดทำโดยrenameแพคเกจดูเปลี่ยนชื่อไฟล์ผู้ชาย

คำถาม:

  • อะไรคือความแตกต่างระหว่างคำสั่งเหล่านั้น?
  • ทำไมมีหลายแพ็คเกจที่ให้คำสั่งต่างกันโดยใช้ชื่อเดียวกัน - ฉันคิดว่านั่นไม่ใช่อุบัติเหตุหรือมันคืออะไร?
  • มันจะไม่ตรงไปตรงมาหรือเปล่าที่perlแพ็คเกจจะรวมrenameคำสั่ง“ เต็ม” หรือไม่รวมrenameคำสั่งใด ๆเลย? เหตุใดการแยกนี้จึงดูเหมือนไม่เสร็จสิ้นอย่างต่อเนื่องจนถึงอย่างน้อย Ubuntu 17.04

คำถามนี้ถูกถามใน U&L แล้ว (ตามที่ฉันค้นพบในภายหลัง):
มีอะไรกับการเปลี่ยนชื่อทั้งหมด: prename, เปลี่ยนชื่อ, เปลี่ยนชื่อไฟล์?

คำตอบ:


8

ทำไมมีสองแพ็คเกจที่ให้คำสั่งต่างกันโดยใช้ชื่อเดียวกัน (ถ้าไม่ใช่โดยบังเอิญ)?

นั่นไม่ใช่เรื่องแปลก renameผู้เขียนมักจะเลือกชื่อคำสั่งที่ง่ายพวกเขาคิดว่าดังนั้นหากคนสองคนเขียนคำสั่งที่จะเปลี่ยนชื่อไฟล์ก็มีแนวโน้มที่พวกเขาจะชื่อทั้งมัน นั่นเป็นหนึ่งในเหตุผลที่อยู่เบื้องหลังระบบเดเบียนทางเลือก - ช่วยให้แพคเกจที่มีคำสั่งที่มีชื่อคล้ายกันสามารถอยู่ร่วมกันได้ ตัวอย่างเช่นมีหลายการใช้งาน AWK - mawk, original-awk, gawk(แม้พวกเขาทั้งหมดที่อ้างตัวเองว่าเป็น awk) ด้วยระบบทางเลือกที่คุณสามารถติดตั้งได้ทั้งหมดในเวลาเดียวกันและสะดวกสลับระหว่างการใด ๆ awkของพวกเขาเป็นค่าเริ่มต้น

ในกรณีเฉพาะนี้prenameมาจากซอร์สโค้ด Perl Debian ดูแลแพคเกจเดิมมีrenameเป็น Perl หนึ่งแล้วเปลี่ยนมาใช้ระบบทางเลือกเพื่ออำนวยความสะดวกจากrename util-linuxจากนั้นมีคนเขียน Perl รุ่นที่ปรับปรุงแล้วrenameในโมดูล File-Rename Perlซึ่งเพิ่มเข้ามาเป็นอีกทางเลือกหนึ่ง แต่นั่นไม่ใช่แม้แต่โมดูล Perl สำหรับเปลี่ยนชื่อไฟล์เท่านั้น

มันจะไม่ตรงไปตรงมาหรือเปล่าที่perlแพ็คเกจจะรวมrenameคำสั่ง“ เต็ม” หรือไม่รวมrenameคำสั่งใด ๆเลย? เหตุใดการแยกนี้จึงดูเหมือนไม่เสร็จสิ้นอย่างต่อเนื่องจนถึงอย่างน้อย Ubuntu 17.04

ดูDebian bug # 735134เพื่อดูว่าสถานการณ์นี้วิวัฒนาการอย่างไร ผู้ดูแล Debian มักชอบปล่อยอย่างน้อยหนึ่งตัวเมื่อทำอะไรที่รุนแรงเช่นแทนที่คำสั่งที่ใช้งานได้ด้วยคำสั่งอื่น prenameถูกเก็บไว้รอบ ๆ สำหรับเจสซีและตอนนี้ถูกลบออกสำหรับมือปราบ นอกจากนี้ดูเหมือนว่าrenameจะไม่อยู่ภายใต้ระบบทางเลือกอีกต่อไปเนื่องจากrename.ulไม่เข้ากันเกินไป จะเป็นเพียงrenamefile-rename

เนื่องจากโดยทั่วไปแล้ว Ubuntu จะรับการเปลี่ยนแปลงบรรจุภัณฑ์จาก Debian สิ่งที่เกิดขึ้นกับrenameDebian นั้นจะถูกหยิบขึ้นมาโดย Ubuntu ไม่ช้าก็เร็วใน 18.04 ดูเหมือนว่าจะสายเกินไปสำหรับ 17.10

อะไรคือความแตกต่างระหว่างคำสั่งเหล่านั้น?

โดยพื้นฐานแล้วทั้งprenameและfile-renameเรียกใช้นิพจน์ Perl เพื่อเปลี่ยนชื่อไฟล์ file-renameมีการบำรุงรักษาอย่างแข็งขันและรองรับตัวเลือกเพิ่มเติม renameจากutil-linuxผลงานที่แตกต่างอย่างสิ้นเชิงมีกฎของตนเองสำหรับรูปแบบ


จากman prenameสำหรับ 17.10ดูเหมือน 17.10 ไม่ในความเป็นจริงรับแทนfile-rename prenameเดียวกัน18.04
wjandrea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.