Shell
列印後覆蓋unix shell中的行
在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”。