Lệnh Linux mv được giải thích cho người mới bắt đầu (8 ví dụ)

theanh

Administrator
Nhân viên
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.

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...
Và đây là nội dung trang hướng dẫn nói về it:
Mã:
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
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.

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]
Ví dụ:
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]
Ả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 ý:
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]
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:
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]
Đây là lý do tại sao tùy chọn dòng lệnh này tồn tại:
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
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.

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]
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

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

Kết luận​

Như bạn đã đoán, mv quan trọng như cp và rm về chức năng mà nó cung cấp - đổi tên/di chuyển tệp cũng là một trong những thao tác cơ bản sau cùng. Chúng ta đã thảo luận về phần lớn các tùy chọn dòng lệnh mà công cụ này cung cấp. Vì vậy, bạn chỉ cần thực hành chúng và bắt đầu sử dụng lệnh. Để biết thêm về mv, hãy truy cập trang hướng dẫn của nó. Ngoài ra còn có các hướng dẫn lệnh Linux khác có sẵn tại HowtoForge, ví dụ như lệnh tee.
 
Back
Bên trên