Terminal có hiển thị thanh tiến trình khi tôi sao chép bằng cp cp không?


33

Có thể hiển thị thanh tiến trình khi sao chép tệp trong Terminal bằng cp không?


2
rsyncThay vào đó, bạn cũng có thể cân nhắc sử dụng .
Asmus

Có cách nào để làm điều này với một thanh tiến trình tổng thể mà không cần cài đặt bất kỳ công cụ của bên thứ ba nào không? Có thể là một kịch bản hoặc một cái gì đó?
rraallvv

Câu trả lời:


49

Bạn có thể sử dụng rsync thay thế.

rsync --progress /copy/from /copy/to

1
Tốc độ, cái nào nhanh hơn, rsync hay cp?
daviesgeek

Nếu tất cả các tệp được sao chép không tồn tại ở đích tôi không nghĩ sẽ có sự khác biệt đáng chú ý. Nếu một số tệp tồn tại ở đích thì nó sẽ thay đổi vì rsync thực hiện một số kiểm tra. Rsync thường sẽ (nhưng không phải luôn luôn) sẽ nhanh hơn trong trường hợp đó.
bahamat

2
Việc sử dụng rsync -P /copy/from /copy/totương đương với việc rsync --partial --progress /copy/from /copy/tosẽ hiển thị tiến trình sao chép, cũng như tiếp tục chuyển nếu bị ngắt kết nối.
gh0st

Và cũng giống như cp, nó cần -rcờ để làm cho nó không bỏ qua các thư mục
Alexander - Tái lập Monica

21

Trong khi cp, CtrlThiển thị tỷ lệ phần trăm hiện tại (ít nhất là trên macOS)


thật tuyệt vời
felix021

1
Lý do điều này hoạt động là vì Ctrl-tgửi SIGINFOtín hiệu theo cùng một cách Ctrl-cgửi SIGINTtín hiệu. Ví dụ, bạn có thể sử dụng một vòng lặp trong một vỏ khác để lặp lại kill -INFOquá trình trong câu hỏi nếu bạn không muốn tiếp tục nhấn các phím. Bởi vì đó là tín hiệu, nó cũng hoạt động với các tiện ích khác, vd dd. Ctrl-tSIGINFOđược kế thừa từ BSD.
HTNW

1

Nếu bạn đang sao chép các tệp hoặc thư mục lớn bằng cp, bạn có thể mở 'Trình giám sát hoạt động', chuyển đến tab 'Đĩa' và tìm quy trình 'cp'. Tại đây bạn có thể theo dõi xem có bao nhiêu byte đã được viết kể từ lần khởi động cuối cùng, cho bạn ý tưởng sơ bộ về tiến trình. (HĐH X 10.10).

Mong rằng sẽ giúp!


0
#!/bin/sh
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0

Nó không hoàn hảo, nhưng nó hoạt động ... thả nó trong một đường dẫn thư mục và đặt tên nó là một cái gì đó tương tự ..


Đợi ... làm thế nào để tôi chạy nó ???
daviesgeek

2
Tôi không nhớ liệu OS X có stracelệnh tại thời điểm câu trả lời này được viết hay không (tháng 7 năm 2011), nhưng chắc chắn là không có ngày hôm nay.
Tim Ruddick

Bất kỳ ý tưởng làm thế nào để chạy này trên macOS?
rraallvv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.