คำตอบที่เหลือค่อนข้างดี แต่แค่ต้องการเพิ่มข้อมูลเพิ่มเติมในกรณีที่มีคนมาที่นี่เพื่อหาวิธีแก้ไข / อัปเดตเสียงสะท้อนหลายสาย
ผมจึงอยากจะแบ่งปันตัวอย่างให้ทุกท่าน สคริปต์ต่อไปนี้ได้รับการทดลองบนระบบ CentOS และใช้คำสั่ง "timedatectl" ซึ่งโดยทั่วไปจะพิมพ์ข้อมูลเวลาโดยละเอียดของระบบของคุณ
ฉันตัดสินใจใช้คำสั่งนั้นเนื่องจากผลลัพธ์มีหลายบรรทัดและทำงานได้อย่างสมบูรณ์แบบสำหรับตัวอย่างด้านล่าง:
#!/bin/bash
while true; do
COMMAND=$(timedatectl) #Save command result in a var.
echo "$COMMAND" #Print command result, including new lines.
sleep 3 #Keep above's output on screen during 3 seconds before clearing it
#Following code clears previously printed lines
LINES=$(echo "$COMMAND" | wc -l) #Calculate number of lines for the output previously printed
for (( i=1; i <= $(($LINES)); i++ ));do #For each line printed as a result of "timedatectl"
tput cuu1 #Move cursor up by one line
tput el #Clear the line
done
done
ข้างต้นจะพิมพ์ผลลัพธ์เป็น " timedatectl
" ตลอดไปและจะแทนที่เสียงสะท้อนก่อนหน้าด้วยผลลัพธ์ที่อัปเดต
ฉันต้องพูดถึงว่ารหัสนี้เป็นเพียงตัวอย่างเท่านั้น แต่อาจไม่ใช่ทางออกที่ดีที่สุดสำหรับคุณทั้งนี้ขึ้นอยู่กับความต้องการของคุณ คำสั่งที่คล้ายกันซึ่งเกือบจะเหมือนกัน (อย่างน้อยก็เป็นภาพ) คือ " watch -n 3 timedatectl
"
แต่นั่นเป็นเรื่องที่แตกต่าง :)
หวังว่าจะช่วยได้!