Bash
如何在帶有迴聲的bash中向前移動?
我正在嘗試讓我的 bash(或 tcl)腳本更新一行三列。回到行首後,我不知道如何繼續跳過一些字元。我想更新特定資訊,而不是整行。
我的腳本並行執行另一個腳本的多個實例,該腳本發送三種類型的消息(P1、P3 和 P7)中的一種。發送消息時,需要更新與該類型消息相關的列。
我想用 echo 列印這樣的東西:
發送的消息數是:
P1:2 P3:1 P7:5
第一行是靜態的,第二行是動態的(第二行中的數字需要不斷更新) 我可以使用 ‘\b’ 或 ‘\r’ 在行中向後移動而不覆蓋字元。但是我怎樣才能在不覆蓋之前的字元的情況下繼續前進呢?是否有某種“反向”“\b”?
(這是重擊)
printf "P1: 2 P3: 1 P7: 5\n" printf "\033[2A\033[4C3\033[2B\r"
將列印
P1: 2 P3: 1 P7: 5
然後將其更改為P1: 3 P3: 1 P7: 5
.列印終端轉義碼的一般方法是:
\033 值 [ 程式碼
,其中範常式式碼為:A - 游標向上、B - 游標向下和 C - 游標向前
tput(1)
可能適合此任務:#! /usr/bin/env bash trap 'printf "\nbe seeing you\n"; exit' INT clear printf "blah de blah\n" while [[ 1 ]]; do tput cup 1 0 x=$(( RANDOM % 42 )) y=$(( RANDOM / 42 )) z=$(( RANDOM * 42 )) printf "P1: %d P3: %d P7: %d\n" $x $y $z sleep 1 done