Tại sao tiện ích đổi tên trên Debian / Ubuntu khác với tiện ích trên các bản phân phối khác, như CentOS?


7

Trên CentOS, lệnh đổi tên sử dụng hai chuỗi đơn giản fromto.

rename from to file...

trong khi trên Debian / Ubuntu, nó sử dụng biểu thức chính quy theo kiểu perl.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

Tại sao tiện ích này khác nhau dựa trên phân phối? Có tài liệu tham khảo nào phân phối giao hàng hoặc mặc định cho phiên bản nào của tiện ích không?



Không trả lời câu hỏi của bạn, nhưng đây là cách sử dụng một trong hai cú pháp .
tự đại diện

@JeffSchaller Cảm ơn! Rất hữu ích, mặc dù tôi vẫn muốn biết thêm về lý do tại sao mỗi gia đình phân phối sử dụng phiên bản tiện ích nào.
Jacob Ritchie

Câu trả lời:


13

Lịch sử. Có hai dòng lịch sử của một renamelệnh, với cùng mục đích cơ bản nhưng khả năng và cú pháp hoàn toàn khác nhau:

  • Các renamelệnh trong util-linux gói. Nó xuất hiện trong phiên bản 2.10e và chương trình có ngày 2000-01-01.
  • Một tập lệnh perl, được phân phối với Perl như một chương trình ví dụ. Thay đổi Debian ghi lại nó được thêm vào Debian vào tháng 6 năm 1999 (bản thân chương trình bắt đầu từ ít nhất là năm 1992). Một phiên bản khác, tương thích ngược, đi kèm với Unicode :: Tussle (kể từ Debian jessie, nó được gọi file-renamevà được cung cấp trong renamegói ; một số bản phân phối khác gọi nó prename).

Một mặt, produc-linux là một gói cốt lõi, do đó, nó chuẩn hơn so với tập lệnh ví dụ Perl được bao gồm trong ý tưởng của Debian. Mặt khác, tập lệnh Perl đã có trong Debian trước tiên. Cho đến nay, Debian đã chọn duy trì khả năng tương thích với bản phát hành Debian trước đây, thay vì liên kết với các bản phân phối khác. Các bản phân phối có nguồn gốc từ Debian (Ubuntu, Mint, sơ cấp, v.v.) có xu hướng theo Debian về điểm này.

Các bản phân phối khác không có renamelệnh khi được thêm vào linux-linux, vì vậy chúng bao gồm phiên bản linux-linux.


1
/usr/bin/renamekhông phải là một phần của bất kỳ gói. Ít nhất là dpkg -S /usr/bin/renamekhông trả lại bất cứ điều gì.
Faheem Mitha

1
@FaheemMitha Đây là một liên kết tượng trưng/etc/alternatives/rename , mặc định là phiên bản Perl (nhưng có thể trỏ đến phiên bản linux-linux, theo lựa chọn của quản trị viên).
Gilles 'SO- ngừng trở nên xấu xa'

1
@FaheemMitha Đó là vì / usr / bin / đổi tên được kiểm soát bởi hệ thống thay thế của debian. thử update-alternatives --display rename. debian cho phép sysadmin cục bộ lựa chọn giữa đổi tên linux-linux hoặc perl (hoặc những cái khác, nếu có)
cas

hmmm, thật lạ trên sidhệ thống của tôi , util-linuxkhông cung cấp một sự thay thế cho /usr/bin/rename. nhưng một gói khác renamethì có, vì vậy các lựa chọn là /usr/bin/prenametừ perl (ưu tiên 60) hoặc /usr/bin/file-renametừ rename(ưu tiên 70). file-renamedường như là một phiên bản cập nhật / nâng cao của prename.
cas

@cas file-renamelà phiên bản Unicode :: Tussle. Tôi nghĩ lý do rename.ulkhông phải là một thay thế cho renamevì nó không tương thích; nhưng một quản trị viên ủng hộ tính nhất quán giữa các bản phân phối vẫn có thể thay đổi liên kết theo cách thủ công để trỏ đến /usr/bin/rename.ul. Tôi không biết nếu điều này sẽ phá vỡ bất kỳ tập lệnh Debian nào; về nguyên tắc, theo chính sách, các gói có thể dựa vào phiên bản perl nếu chúng phụ thuộc perlvà các tập lệnh xây dựng có thể dựa vào phiên bản perl do perlgói là bản dựng.
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.