Sự khác biệt giữa các lệnh khác nhau đổi tên thành trò khác nhau là gì?


13

Vì Ubuntu 14.04 có ít nhất ba renamelệnh:

  1. renameđược cung cấp bởi util-linuxgói, xem man rename.ul
  2. renameđược cung cấp bởi perlgói, xem tên người đàn ông
  3. renameđược cung cấp bởi renamegói, xem đổi tên tập tin người đàn ông

Câu hỏi:

  • Chính xác thì sự khác biệt giữa các lệnh đó là gì?
  • Tại sao có nhiều gói cung cấp các lệnh khác nhau sử dụng cùng một tên - tôi cho rằng đó không phải là một tai nạn, hay là vậy?
  • Sẽ không đơn giản hơn nếu perlgói đó bao gồm renamelệnh đầy đủ trên toàn bộ hay không bao gồm bất kỳ renamelệnh nào? Tại sao sự phân chia dường như chưa hoàn thành này được duy trì cho đến khi ít nhất là Ubuntu 17.04?

Câu hỏi này đã được hỏi trên U & L (như tôi đã tìm hiểu sau):
Cái gì với tất cả các tên đổi tên: prename, rename, đổi tên tập tin?

Câu trả lời:


8

Tại sao có hai gói cung cấp các lệnh khác nhau sử dụng cùng một tên (nếu không phải là ngẫu nhiên)?

Điều đó không có gì bất thường. Các tác giả thường chọn tên lệnh đơn giản nhất mà họ nghĩ ra, vì vậy nếu hai người viết một lệnh để đổi tên các tệp, có khả năng cả hai sẽ đặt tên cho nó rename. Đó là một trong những lý do đằng sau hệ thống Thay thế Debian - nó cho phép các gói cung cấp các lệnh có tên tương tự cùng tồn tại và cho một gói thay thế một gói khác. Ví dụ, có nhiều triển khai AWK - mawk, original-awk, gawk(mặc dù tất cả họ đều đề cập đến bản thân như awk). Với hệ thống thay thế, bạn có thể cài đặt tất cả chúng cùng một lúc và thuận tiện chuyển đổi giữa bất kỳ trong số chúng làm mặc định awk.

Trong trường hợp cụ thể này, prenamexuất phát từ mã nguồn Perl. Các bộ duy trì gói Debian ban đầu renamelà Perl, sau đó chuyển sang hệ thống thay thế, để chứa renametừ util-linux. Sau đó, ai đó đã viết một phiên bản cải tiến của Perl renametrong mô-đun Perl đổi tên tệp , sau đó được thêm vào như là một thay thế khác. Nhưng đó thậm chí không phải là mô-đun Perl duy nhất để đổi tên tệp.

Sẽ không đơn giản hơn nếu perlgói đó bao gồm renamelệnh đầy đủ trên toàn bộ hay không bao gồm bất kỳ renamelệnh nào? Tại sao sự phân chia dường như chưa hoàn thành này được duy trì cho đến khi ít nhất là Ubuntu 17.04?

Xem lỗi Debian # 735134 để biết tình huống này đã phát triển như thế nào. Các nhà bảo trì Debian thường thích thực hiện ít nhất một bản phát hành khi thực hiện một cách quyết liệt, như thay thế một lệnh làm việc bằng một lệnh khác. prenameđã được giữ xung quanh cho jessie, và bây giờ đã được gỡ bỏ cho buster. Ngoài ra, có vẻ như renamesẽ không còn thuộc hệ thống thay thế, vì rename.ulquá không tương thích. renamesẽ chỉ file-rename.

Do Ubuntu thường chọn các thay đổi đóng gói từ Debian, những gì xảy ra renametrong Debian sẽ được Ubuntu chọn sớm hay muộn, có thể là vào ngày 18.04. Có vẻ như đã quá muộn cho 17.10.

Chính xác thì sự khác biệt giữa các lệnh đó là gì?

Về cơ bản, cả hai prenamefile-renamechạy các biểu thức Perl để đổi tên các tệp. file-renamechỉ được tích cực duy trì và hỗ trợ nhiều lựa chọn hơn. renametừ util-linuxcác công trình hoàn toàn khác nhau, có các quy tắc riêng cho các mẫu.


Từ ngày man prename17.10 , có vẻ như 17.10 thực tế đã nhận file-renamethay vì prename. Tương tự cho 18.04 .
wjandrea
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.