Trong hướng dẫn này, chúng tôi giải thích cách dùng lệnh cp trong Linux để copy file hoặc thư mục. Các ví dụ được bao gồm bên dưới.
Linux là một trong những Hệ điều hành phổ biến nhất trên hành tinh và là cơ sở cho tất cả thiết bị Android. Nó là mã nguồn mở và có một số lợi thế rõ rệt so với các hệ thống khác như Windows hoặc macOS.
Trong Linux, có số lượng đáng kể các lệnh khác nhau mà lập trình viên dùng thường xuyên.
Lệnh cp là gì?
Lệnh copy (cp) là một trong những lệnh cơ bản và phổ biến nhất của tất cả lệnh Linux. Nó cho phép người dùng copy file hoặc thư mục từ nơi này sang nơi khác. Khi file được copy, tên file nguồn giữ nguyên, nhưng tên file đích có thể thay đổi nếu cần.
Cú pháp phổ biến cho lệnh cp
Dạng cú pháp phổ biến cho lệnh này là:
cp [Options] [Source] [Destination]
Các tùy chọn phổ biến cho lệnh cp
-v Verbose mode (Hiện tiến trình) -n Không ghi đè file đã tồn tại -d Copy file link -r/R Copy thư mục đệ quy -i Hỏi trước khi ghi đè -b Tạo bản sao lưu mỗi file đích hiện có -p Giữ các thuộc tính chỉ định
Cách copy file và thư mục
Dưới đây, chúng ta sẽ đi qua các phương pháp dùng để copy file và thư mục dùng lệnh cp.
Cách tạo bản sao của một file
Để copy file dùng lệnh cp, nhập tên file bạn muốn copy theo sau đích đến.
Trong ví dụ dưới, file linxscrew.txt được copy thành file mới tên linxscrew_updated.txt. Lệnh cp cũng tạo file mới.
cp linxscrew.txt linxscrew_updated.txt
Kết quả:
ls linxscrew.txt linxscrew_updated.txt
Cách copy nhiều file đến vị trí mới
Để copy nhiều hơn một file dùng lệnh cp, truyền tên các file theo sau thư mục đích. Trong ví dụ này, chúng ta sẽ copy ba file tên “linxscrew1.txt“, “linxscrew2.txt“, và “linxscrew3.txt“. Chúng ta sẽ copy chúng từ thư mục “/home/docs” đến thư mục “/home/new_docs“. Tất cả tên file phải cách nhau bởi dấu cách.
cp /home/docs linuxscrew1.txt linuxscrew1.txt linuxscrew1.txt /home/new_docs
Để kiểm tra file đã được copy đúng vị trí mới, bạn có thể dùng lệnh ls, như dưới đây:
ls -lh /home/new_docs
Cách copy một thư mục
Lệnh cp không copy nội dung thư mục mặc định. Do đó, nếu bạn muốn copy đệ quy một thư mục từ nơi này sang nơi khác, bạn sẽ cần dùng tùy chọn – r kết hợp với lệnh cp. Điều này sẽ dẫn đến toàn bộ thư mục, bao gồm thư mục con, được copy đến thư mục đích mới. Tên thư mục sẽ giữ nguyên.
Lệnh sau sẽ copy toàn bộ thư mục gọi là linuxscrew, bao gồm thư mục con, từ vị trí docs đến vị trí tên new_docs:
cp -r /home/docs/linuxscrew/ /home/newdocs/
Cách copy nhiều thư mục
Điều này tương tự copy một thư mục đơn và cho phép bạn copy đệ quy nhiều thư mục dùng một lệnh đơn. Trong ví dụ dưới, chúng ta muốn copy thư mục gọi là linuxscrew_files và linuxscrew_images đến thư mục gọi là /home/all_linuxscrew_docs.
cp -r /home/linuxscrew_files/ /home/linuxscrew_images/ /home/all_linuxscrew_docs/
Cách copy file định dạng cụ thể
Nếu bạn chỉ muốn copy file định dạng cụ thể trên Linux, bạn có thể dùng wildcard “*” với extension file liên quan. Trong ví dụ dưới, chúng ta copy tất cả file kết thúc .txt vào thư mục đích, nhưng phương pháp có thể dùng với bất kỳ extension nào.
cp /home/linuxscrew/*.txt /home/text_files/
Cách tránh ghi đè file đã tồn tại
Nếu bạn không muốn ghi đè file đã tồn tại khi copy file trong Linux, dùng tùy chọn –n. Điều này sẽ kiểm tra thư mục đích cho file tên đó và chỉ thực thi lệnh nếu KHÔNG có file tên đó đã có mặt. Nếu có, lệnh vẫn thực thi nhưng không thay đổi gì. Trong ví dụ dưới tên file là linuxscrew.txt.
cp -n /home/linuxscrew/linuxscrew.txt /home/all_linuxscrew_docs/
Cách copy file symlink
Mặc định, symlinks bị loại trừ khi thực hiện thao tác copy. Nếu bạn muốn copy file link thì bạn sẽ cần dùng tùy chọn -d, như ví dụ dưới:
cp -d /home/linuxscrew/linuxscrew.txt /home/all_linuxscrew_docs/