เทอร์มินัลจะแสดงแถบความคืบหน้าเมื่อฉันคัดลอกด้วย“ cp” หรือไม่


33

เป็นไปได้ไหมที่จะแสดงแถบความคืบหน้าเมื่อทำการคัดลอกไฟล์ใน Terminal โดยใช้ cp?


2
... คุณสามารถลองใช้rsyncแทน
Asmus

มีวิธีทำเช่นนี้กับแถบความคืบหน้าโดยรวมโดยไม่ต้องติดตั้งเครื่องมือของบุคคลที่สามหรือไม่? อาจเป็นสคริปต์หรืออะไรบางอย่าง?
rraallvv

คำตอบ:


49

คุณสามารถใช้ rsync แทน

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

1
Speedwise ซึ่งเร็วกว่า rsync หรือ cp
daviesgeek

หากไฟล์ทั้งหมดที่ถูกคัดลอกไม่มีอยู่ในปลายทางฉันไม่คิดว่าจะมีความแตกต่างที่เห็นได้ชัดเจน หากไฟล์บางไฟล์มีอยู่ในปลายทางมันจะแตกต่างกันไปเนื่องจาก rsync ทำการตรวจสอบบางอย่าง ในกรณีนั้น Rsync จะเร็วขึ้น (แต่ไม่เสมอไป)
bahamat

2
การใช้rsync -P /copy/from /copy/toจะเทียบเท่ากับการrsync --partial --progress /copy/from /copy/toที่จะแสดงความคืบหน้าของการคัดลอกรวมทั้งทำการถ่ายโอนต่อหากถูกตัดการเชื่อมต่อ
gh0st

และเช่นเดียวกับ cp มันต้องการ-rธงเพื่อไม่ข้ามไดเรกทอรี
Alexander - Reinstate Monica

21

ในช่วงวันที่cp, CtrlTการแสดงเปอร์เซ็นต์ปัจจุบัน (บน MacOS อย่างน้อย)


ที่น่ากลัว!
felix021

1
เหตุผลที่งานนี้เป็นเพราะCtrl-tส่งSIGINFOสัญญาณในลักษณะเดียวกับที่Ctrl-cส่งSIGINTสัญญาณ คุณสามารถใช้วงวนในเชลล์อื่นเพื่อทำซ้ำkill -INFOกระบวนการหากคุณไม่ต้องการกดปุ่มต่อไป เนื่องจากเป็นสัญญาณจึงสามารถทำงานร่วมกับยูทิลิตี้อื่น ๆ ได้เช่นddกัน Ctrl-tและSIGINFOสืบทอดมาจาก BSD
HTNW

1

หากคุณกำลังคัดลอกไฟล์หรือไดเรกทอรีขนาดใหญ่โดยใช้ cp คุณสามารถเปิด 'การตรวจสอบกิจกรรม' ไปที่แท็บ 'ดิสก์' และค้นหากระบวนการ 'cp' ที่นี่คุณสามารถติดตามจำนวนไบต์ที่ถูกเขียนนับตั้งแต่การบู๊ตครั้งล่าสุดทำให้คุณทราบถึงความคืบหน้าอย่างคร่าวๆ (OS X 10.10)

หวังว่าจะช่วย!


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

มันไม่สมบูรณ์แบบ แต่ใช้งานได้ ... วางสิ่งนั้นไว้ในเส้นทางไดเรกทอรีและตั้งชื่อให้คล้ายกัน ..


เดี๋ยวก่อน ... ฉันจะให้มันทำงานยังไง ???
daviesgeek

2
ฉันจำไม่ได้ว่า OS X มีstraceคำสั่งในขณะที่คำตอบนี้ถูกเขียน (กรกฎาคม 2011) หรือไม่ แต่วันนี้ไม่แน่นอน
ทิม Ruddick

แนวคิดใดบ้างที่จะเรียกใช้บน macOS
rraallvv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.