Shell

列印後覆蓋unix shell中的行

  • August 28, 2013

在unix shell中列印後如何修改一行。我們可以刪除該行並使用\r如下所示再次寫入,但是如何覆蓋現有行而不完全刪除它並獲得如下預期輸出中的輸出。

命令:

printf "12345";printf "\r67";

輸出:

67

預期產出

67345

正如評論中所討論的,問題出在您離開游標的位置。例如:

goldilocks@home> echo -n 1234; echo -ne "\r56"
56goldilocks@home>

發生的事情是第一個echo寫“1234”,然後第二個回顯回到行首並列印“56”並退出。游標在 6 之後仍然存在,接下來發生的事情是 shell 列印了命令提示符,覆蓋了“34”。如果您在第二個 echo 中包含換行符(或刪除了-n開關,以便 echo 將自動列印換行符),您將得到:

goldilocks@home> echo -n 1234; echo -e "\r56"
5634
goldilocks@home>

游標向下移動了一行,留下了“34”。

引用自:https://unix.stackexchange.com/questions/88551