Câu hỏi In dấu chạy bởi vỏ


Tôi đang cố sao chép các tệp không có trong một thư mục sang thư mục khác bằng cách sử dụng awk

diff -r dir1 dir2 | grep dir1 | awk '{$1=$2=$3 =""; print "cp \"./dir1/" substr($0,4) "\" ./dir2/"}' | sh

Điều này hoạt động tốt ngoại trừ việc tôi cũng muốn in tệp đang được sao chép. Cái gì đó như cp ./dir1/file1.txt ./dir2/ trên stdout

Làm thế nào để tôi làm điều này. Tôi biết nó đơn giản nhưng tôi không thể hiểu được. Tôi đã thử tee và echo lệnh nhưng vô ích.


1
2017-11-19 13:36


gốc


in trên màn hình hoặc in trên một số máy in? - Adam Silenko
@AdamSilenko Trên màn hình hoặc nói stdout - Rohit Walavalkar
Có thể trùng lặp Lệnh shell để hiển thị nội dung của một tập tin là gì? - Adam Silenko
Bất kỳ lý do nào không sử dụng rsync? - user657451
@ user657451 Tôi không biết về rsync. Không chắc chắn nếu nó phục vụ mục đích. - Rohit Walavalkar


Các câu trả lời:


Bạn đã có thể sử dụng |sh -x. Từ trang người đàn ông:

 -x xtrace
         Write each command (preceded by the value of the PS4 variable
         subjected to parameter expansion and arithmetic expansion) to
         standard error before it is executed.  Useful for debugging.

Vì vậy, vỏ sẽ in stderr tất cả các lệnh được thực hiện. Và bạn có thể sử dụng chuyển hướng stderr, như |sh -x 2>commands_list.txt để có được danh sách các lệnh trong tập tin riêng biệt.


2
2017-11-19 15:20



Thật tuyệt khi thấy một kịch bản đang làm gì. Nhưng nếu bạn sử dụng một lệnh duy nhất để sao chép một loạt các tệp, ví dụ cp *.txt newfolder/ điều này sẽ chỉ in các lệnh duy nhất, không phải mỗi tập tin được sao chép. - Xen2050


cp có thể cho bạn biết những gì nó đang làm quá, đó là tùy chọn

-v, --verbose
          explain what is being done

in để stdout những tập tin được sao chép ở đâu, trong các hình thức:

‘file1’ -> ‘file2’

2
2017-11-20 08:14



Ừ. Điều này thật đơn giản. Bây giờ tôi cảm thấy tôi đã hỏi một câu hỏi ngu ngốc. - Rohit Walavalkar
Không, câu hỏi hay. Hầu hết các chương trình đều có tiết hoặc -v tùy chọn để cung cấp thêm thông tin về những gì họ đang làm, một số (ví dụ: gpg) sẽ chấp nhận một số v cho nhiều "verbosity", luôn luôn kiểm tra trang người đàn ông đầu tiên (hoặc đôi khi trang thông tin, thêm thông tin nếu nó khác nhau). Tôi cá là có thể có một cách đơn giản để gửi một bản sao để stdout quá nhưng tôi không quá hiện tại trên nó ngay bây giờ - Xen2050