Thông thường, để sao chép một tệp, bạn sẽ sử dụng
cp
lệnh, liên kết đến tệp nguồn và thư mục đích:
cp ~/Documents/FileToBeCopied.txt ~/TextFiles/
Để sao chép nó vào hai thư mục khác, nhiều người sẽ chỉ chạy lệnh hai lần nữa, với các đích khác nhau:
cp ~/Documents/FileToBeCopied.txt ~/Dropbox/
cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Đây là cách lệnh này hoạt động. Các
echo
lệnh thường ghi vào màn hình. Tuy nhiên, trong trường hợp này, chúng tôi muốn cho đầu ra của
echo
lệnh làm đầu vào cho
xargs
chỉ huy. Để làm điều này, chúng tôi sử dụng biểu tượng đường ống (
|
) cung cấp đầu ra từ một lệnh làm đầu vào cho một lệnh khác. Các
xargs
lệnh sẽ chạy
cp
lệnh ba lần, mỗi lần chắp thêm đường dẫn thư mục tiếp theo vào đường dẫn từ
echo
lệnh vào cuối
cp
chỉ huy. Có ba đối số được chuyển đến
xargs
nhưng
-n 1
tùy chọn trên
xargs
lệnh yêu cầu nó chỉ thêm một trong các đối số đó vào một thời điểm
cp
lệnh mỗi khi nó chạy.
Vì vậy, để gắn bó với ví dụ của chúng tôi từ trước đó, ba
cp
lệnh trên có thể được kết hợp thành một lệnh như sau:
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt
cp
lệnh để sao chép tệp vào một vị trí duy nhất, bạn có thể thêm
-i
tùy chọn hỏi xem bạn có muốn thay thế tệp hiện có không. Tuy nhiên,
-i
tùy chọn là một tùy chọn tương tác (nó gây ra
cp
lệnh để yêu cầu đầu vào từ người dùng) và bạn không thể sử dụng tùy chọn tương tác với
cp
lệnh khi sử dụng nó cùng với
xargs
.)
Một điều khác cần xem xét, đó là nếu bạn đang sao chép một tệp rất lớn, bạn có thể muốn thêm không dấu kiểm soát (
-n
) tùy chọn
cp
lệnh trong lệnh đơn ở trên. Tùy chọn này tự động ngăn tệp bị ghi đè ở đích nếu nó đã tồn tại ở đó. Nếu bạn sao chép một tệp rất lớn qua mạng, nó có thể chậm và bạn có thể muốn tránh sử dụng các tài nguyên cần thiết để sao chép và thay thế tệp. Lệnh sau thêm vào
-n
và sẽ không sao chép tệp vào bất kỳ đích nào được liệt kê trong các đối số cho câu lệnh echo, nếu tệp đã tồn tại ở đích đó.
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt