2011-11-25 24 views
5

Tôi đang cố tạo một tập lệnh sẽ sao chép các tệp từ một thư mục và đặt các tệp đã sao chép vào một thư mục mới.Cách kết hợp các lệnh shell

Tôi biết rằng lệnh cp sẽ sao chép các tệp và lệnh mkdir sẽ tạo thư mục nhưng có ai biết cách kết hợp 2 lệnh này thành một dòng không?

Cho đến nay tôi có

mkdir /root/newdir/ cp /root/*.doc /root/newdir 

này cung cấp cho các thông báo lỗi

mkdir: cannot create directory 'cp': Files exists 
mkdir: cannot create directory '/root/files/wp.doc: File exists 
mkdir: cannot create directory 'mkdir' : File exists 
mkdir: cannot create directory '/root/files/new dir: file exists 

Tuy nhiên nó không tạo ra các thư mục newdir

Trả lời

8
mkdir -p /root/newdir/ && cp /root/*.doc /root/newdir/ 

này sẽ gọi mkdir để tạo ra cấu trúc thư mục, kiểm tra xem thực thi lệnh có thành công hay không và gọi cp lệnh nếu nó được.

+0

này hoạt động cảm ơn rất nhiều mặc dù nó không đưa ra các thông báo lỗi ... cp: bỏ qua thư mục 'mkdir' – user1065861

+0

@ user1065861 : 'cp' không sao chép các thư mục theo mặc định. Bạn phải chỉ định tùy chọn '-p' nếu bạn muốn nó làm như vậy. Kiểm tra nội dung của thư mục '/ root' của bạn - có thể bạn đã tạo các thư mục không mong muốn ở đó khi chơi với các lệnh đó. –

+0

Err ... '-r', xin lỗi. –

2
mkdir /root/newdir/; cp /root/*.doc /root/newdir 
0

Nơi dấu chấm phẩy giữa hai lệnh

0

Điều này xảy ra bởi vì bạn không nói với vỏ nơi chính xác các lệnh kết thúc. Trong trường hợp này:

mkdir /root/newdir/ cp /root/*.doc /root/newdir 

lệnh của bạn cp sẽ đi như một đối số lệnh mkdir và vỏ cố gắng để làm cho file có tên cp. Tương tự xảy ra với tất cả khác.

Bằng cách đặt ; sau khi lệnh. Nó cho trình bao biết lệnh đã được kết thúc và từ tiếp theo là một lệnh khác.

dòng mới (Phím trả về) cũng được coi là trình hướng dẫn lệnh. Vì vậy, nếu bạn đặt mỗi lệnh trong dòng tiếp theo, nó cũng hoạt động tốt. Vì vậy, bạn có thể thử một trong những:

mkdir /root/newdir/ ; cp /root/*.doc /root/newdir 

HOẶC

mkdir /root/newdir/ 

cp /root/*.doc /root/newdir 
+0

Giải thích tốt, nhưng đối với các giải pháp tôi thích ['&&'] (http://stackoverflow.com/a/8271018/667820) trên ';' như trước đây sẽ chăm sóc khả năng thất bại 'mkdir'. –

Các vấn đề liên quan