×

Lệnh cp trong Bash sao chép tệp tin và thư mục

Trong môi trường Unix/Linux, đặc biệt là khi làm việc với dòng lệnh trong Bash, việc sao chép tệp tin và thư mục là một trong những nhiệm vụ cơ bản mà người dùng cần thực hiện thường xuyên. Lệnh cp (copy) là công cụ chính được sử dụng để thực hiện nhiệm vụ này. Lệnh này rất mạnh mẽ và linh hoạt, cho phép người dùng sao chép không chỉ các tệp tin đơn lẻ, mà còn cả các thư mục và các tệp tin bên trong.

Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về lệnh cp, cú pháp cơ bản, các tùy chọn hữu ích và một số ví dụ thực tế để bạn có thể sử dụng lệnh này một cách hiệu quả trong công việc hàng ngày của mình.

Cú pháp cơ bản của lệnh cp

Lệnh cp có cú pháp cơ bản như sau:

cp [tùy chọn] nguồn đích

Trong đó:

  • nguồn là tệp tin hoặc thư mục bạn muốn sao chép.
  • đích là nơi bạn muốn đặt bản sao của tệp tin hoặc thư mục.

Tùy chọn thường gặp khi sử dụng lệnh cp

Lệnh cp có nhiều tùy chọn khác nhau để tăng cường khả năng sử dụng. Dưới đây là một số tùy chọn phổ biến mà bạn có thể sử dụng:

  • -a: Tùy chọn này cho phép bạn sao chép tệp tin và thư mục trong chế độ bảo toàn, nghĩa là nó sẽ giữ lại các thuộc tính của tệp tin gốc như quyền truy cập, thời gian tạo, v.v.

  • -r hoặc -R: Tùy chọn này cho phép bạn sao chép thư mục và tất cả các tệp tin và thư mục con bên trong nó. Nếu không có tùy chọn này, lệnh sẽ báo lỗi khi bạn cố gắng sao chép thư mục.

  • -i: Kích hoạt chế độ xác nhận. Khi bạn sử dụng tùy chọn này, nếu tệp đích đã tồn tại, lệnh sẽ hỏi bạn có muốn ghi đè tệp hay không.

  • -u: Sao chép chỉ khi tệp nguồn mới hơn tệp đích hoặc tệp đích không tồn tại.

  • -v: Hiển thị quá trình sao chép trên màn hình để bạn có thể theo dõi.

  • -f: Ghi đè tệp đích mà không yêu cầu xác nhận.

Sao chép tệp tin

Để sao chép một tệp tin đơn giản, bạn chỉ cần chỉ định tên tệp nguồn và tệp đích. Dưới đây là một ví dụ:

cp file1.txt file2.txt

Trong ví dụ này, file1.txt sẽ được sao chép và được lưu dưới tên file2.txt.

Sao chép thư mục

Để sao chép một thư mục, bạn cần sử dụng tùy chọn -r. Dưới đây là cú pháp sao chép một thư mục:

cp -r folder1 folder2

Ở ví dụ này, folder1 sẽ được sao chép vào folder2. Nếu folder2 không tồn tại, lệnh sẽ tự động tạo nó.

Sao chép tệp tin với việc giữ nguyên thuộc tính

Khi bạn cần sao chép một tệp tin và muốn giữ nguyên các thuộc tính của nó, bạn có thể sử dụng tùy chọn -a:

cp -a file1.txt file2.txt

Sao chép đối với thư mục cũng giống như vậy:

cp -a folder1 folder2

Sử dụng lệnh cp với tùy chọn xác nhận

Nếu bạn không muốn ghi đè lên các tệp tin đã tồn tại mà không có xác nhận, bạn có thể sử dụng tùy chọn -i:

cp -i file1.txt file2.txt

Khi bạn chạy lệnh này, nếu file2.txt đã tồn tại, hệ thống sẽ yêu cầu bạn xác nhận trước khi ghi đè.

Chỉ sao chép tệp tin mới hơn

Nếu bạn chỉ muốn sao chép các tệp tin mà mới hơn so với tệp đích, bạn có thể sử dụng tùy chọn -u:

cp -u file1.txt file2.txt

Lệnh này sẽ chỉ sao chép file1.txt nếu nó mới hơn file2.txt hoặc nếu file2.txt không tồn tại.

Hiển thị quá trình sao chép

Để thấy quá trình sao chép các tệp tin trên dòng lệnh, hãy sử dụng tùy chọn -v:

cp -v file1.txt file2.txt

Điều này sẽ cho phép bạn theo dõi tệp nào đang được sao chép đến đâu.

Các ví dụ cụ thể

  1. Sao chép một tệp tin đơn giản:
cp document.txt backup_document.txt
  1. Sao chép một thư mục với tất cả các tệp tin con:
cp -r my_folder/ my_folder_backup/
  1. Sao chép nhiều tệp tin vào một thư mục:
cp file1.txt file2.txt file3.txt backup_folder/
  1. Sao chép với tính năng bảo toàn thuộc tính:
cp -a project/ project_backup/
  1. Sao chép mà không ghi đè các tệp tin đã tồn tại:
cp -i report.txt old_report.txt

Kết luận

Lệnh cp trong Bash là một công cụ rất mạnh mẽ và linh hoạt cho việc sao chép tệp tin và thư mục. Việc hiểu rõ cú pháp cũng như các tùy chọn của nó sẽ giúp bạn sử dụng hiệu quả trong công việc hàng ngày. Bằng cách thực hành và áp dụng các kiến thức đã học trong bài viết này, bạn sẽ có thể quản lý tệp tin và thư mục của mình một cách hiệu quả hơn. Hãy khám phá thêm các tùy chọn khác của lệnh cp và áp dụng chúng vào công việc của bạn để nâng cao kỹ năng sử dụng dòng lệnh của mình.

Comments