Giống như cp để sao chép và rm để xóa, Linux cũng cung cấp một lệnh tích hợp để di chuyển và đổi tên tệp. Lệnh này được gọi là mv. Trong bài viết này, chúng ta sẽ thảo luận về những điều cơ bản của công cụ dòng lệnh này bằng các ví dụ dễ hiểu. Xin lưu ý rằng tất cả các ví dụ được sử dụng trong hướng dẫn này đã được thử nghiệm trên Ubuntu 22.04 LTS.
Và đây là nội dung trang hướng dẫn nói về it:
Các ví dụ theo dạng Hỏi & Đáp sau đây sẽ giúp bạn hiểu rõ hơn về cách thức hoạt động của công cụ này.
Ví dụ:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22116%22%3E%3C/svg%3E
Tương tự như vậy, nếu yêu cầu là di chuyển tệp đến vị trí mới, hãy sử dụng lệnh mv theo cách sau:
mv [tên tệp] [thư mục đích]
Đối với Ví dụ:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22126%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2299%22%3E%3C/svg%3E
Tuy nhiên, nếu muốn, bạn có thể buộc mv nhắc bằng cách sử dụng tùy chọn dòng lệnh -i.
mv -i [file_name] [new_file_name]
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2229%22%3E%3C/svg%3E
Vì vậy, các ảnh chụp màn hình ở trên cho thấy rõ ràng rằng -i dẫn đến mv yêu cầu quyền của người dùng trước khi ghi đè lên tệp hiện có. Xin lưu ý rằng trong trường hợp bạn muốn chỉ định rõ ràng rằng bạn không muốn mv nhắc trước khi ghi đè, hãy sử dụng tùy chọn dòng lệnh -f.
Ảnh chụp màn hình sau đây cho thấy thao tác mv không thành công vì tệp có tên 'full_names.txt' đã tồn tại và lệnh có tùy chọn -n trong đó.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2284%22%3E%3C/svg%3E
Lưu ý:
Sau đây là cách tài liệu chính thức giải thích về tính hữu ích của tùy chọn này:
Đây là lý do tại sao tùy chọn dòng lệnh này tồn tại:
Tùy chọn này đặc biệt hữu ích trong những trường hợp bạn cần đưa ra quyết định như vậy từ bên trong một tập lệnh shell.
Ví dụ, các ảnh chụp màn hình sau đây cho thấy mv phát ra một số thông tin chi tiết hữu ích về những gì nó đã làm.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2234%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2276%22%3E%3C/svg%3E
Lệnh mv Linux
Như đã đề cập, lệnh mv trong Linux được sử dụng để di chuyển hoặc đổi tên tệp. Sau đây là cú pháp của lệnh:
Mã:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
Mã:
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Câu hỏi 1. Làm thế nào để sử dụng lệnh mv trong Linux?
Nếu bạn chỉ muốn đổi tên một tệp, bạn có thể sử dụng lệnh mv theo cách sau:
Mã:
mv [filename] [new_filename]
Mã:
mv names.txt fullnames.txt
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22116%22%3E%3C/svg%3E
Tương tự như vậy, nếu yêu cầu là di chuyển tệp đến vị trí mới, hãy sử dụng lệnh mv theo cách sau:
mv [tên tệp] [thư mục đích]
Đối với Ví dụ:
Mã:
mv fullnames.txt /home/himanshu/Downloads
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22126%22%3E%3C/svg%3E
Câu 2. Làm thế nào để đảm bảo lệnh mv nhắc nhở trước khi ghi đè?
Theo mặc định, lệnh mv không nhắc nhở khi thao tác liên quan đến việc ghi đè lên tệp hiện có. Ví dụ, ảnh chụp màn hình sau đây cho thấy full_names.txt hiện tại đã bị mv ghi đè mà không có bất kỳ cảnh báo hoặc thông báo nào.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2299%22%3E%3C/svg%3E
Tuy nhiên, nếu muốn, bạn có thể buộc mv nhắc bằng cách sử dụng tùy chọn dòng lệnh -i.
mv -i [file_name] [new_file_name]
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2229%22%3E%3C/svg%3E
Vì vậy, các ảnh chụp màn hình ở trên cho thấy rõ ràng rằng -i dẫn đến mv yêu cầu quyền của người dùng trước khi ghi đè lên tệp hiện có. Xin lưu ý rằng trong trường hợp bạn muốn chỉ định rõ ràng rằng bạn không muốn mv nhắc trước khi ghi đè, hãy sử dụng tùy chọn dòng lệnh -f.
Câu hỏi 3. Làm thế nào để mv không ghi đè lên một tệp hiện có?
Để thực hiện việc này, bạn cần sử dụng tùy chọn dòng lệnh -n.
Mã:
mv -n [filename] [new_filename]
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2284%22%3E%3C/svg%3E
Lưu ý:
Mã:
If you specify more than one of -i, -f, -n, only thefinalonetakes effect.
Câu hỏi 4. Làm thế nào để mv xóa dấu gạch chéo theo sau (nếu có) khỏi đối số nguồn?
Để xóa bất kỳ dấu gạch chéo theo sau nào khỏi đối số nguồn, hãy sử dụng tùy chọn dòng lệnh --strip-trailing-slashes như được hiển thị bên dưới.
Mã:
mv--strip-trailing-slashes [source] [dest]
Mã:
mv
Câu hỏi 5. Làm thế nào để mv coi đích đến là một tệp bình thường?
Để đảm bảo rằng thực thể đích đến được coi là một tệp bình thường (và không phải là một thư mục), hãy sử dụng tùy chọn dòng lệnh -T.
Mã:
mv -T [source] [dest]
Mã:
This can help avoid race conditions in programs that operate in a shared area. For example, when the command ‘mv /tmp/source /tmp/dest’ succeeds, there is no guarantee that /tmp/source was renamed to /tmp/dest: it could have been renamed to/tmp/dest/source instead, if some other process created /tmp/dest as a directory. However, if mv -T /tmp/source /tmp/dest succeeds, there is no question that/tmp/source was renamed to /tmp/dest.
Mã:
In the opposite situation, where you want the last operand to be treated as a directory and want a diagnostic otherwise, you can use the --target-directory (-t) option.
Câu hỏi 6. Làm thế nào để mv di chuyển tệp chỉ khi tệp đó mới hơn tệp đích?
Giả sử có một tệp có tên là fullnames.txt trong thư mục Downloads của hệ thống của bạn và có một tệp có cùng tên trong thư mục home của bạn. Bây giờ, bạn muốn cập nhật ~/Downloads/fullnames.txt bằng ~/fullnames.txt, nhưng chỉ khi tệp sau mới hơn. Sau đó, trong trường hợp này, bạn sẽ phải sử dụng tùy chọn dòng lệnh -u.
Mã:
mv -u~/fullnames.txt~/Downloads/fullnames.txt
Câu hỏi 7. Làm thế nào để mv phát ra thông tin chi tiết về những gì nó đang làm?
Nếu bạn muốn mv đưa ra thông tin giải thích chính xác những gì nó đang làm, hãy sử dụng tùy chọn dòng lệnh -v.
Mã:
mv -v [filename] [new_filename]
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2234%22%3E%3C/svg%3E
Câu hỏi 8. Làm thế nào để buộc mv tạo bản sao lưu các tệp đích hiện có?
Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -b. Tệp sao lưu được tạo theo cách này sẽ có cùng tên với tệp đích, nhưng có thêm dấu ngã (~) vào. Đây là một ví dụ:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2276%22%3E%3C/svg%3E