私の知る限り、echoのバックスペースシーケンスを使用してカーソルを左に移動することは可能です。しかし、エコーを使用してカーソルの垂直位置を変更する可能性はありますか?
質問する
24990 次
3 に答える
27
このセクションでは、ANSIエスケープシーケンスについて説明します。
例:
echo -en "\033[s\033[7B\033[1;34m 7 lines down violet \033[u\033[0m"
echo -en "\033[s\033[7A\033[1;32m 7 lines up green \033[u\033[0m"
そして、このセクションでは、tputユーティリティについて説明します。
デモについては、端末のフローティングクロックを参照してください。
http://www.cyberciti.biz/tips/spice-up-your-unix-linux-shell-scripts.htmlから抜粋したサンプルスクリプト:
#!/bin/bash
tput clear # clear the screen
tput cup 3 15 # Move cursor to screen location X,Y (top left is 0,0)
tput setaf 3 # Set a foreground colour using ANSI escape
echo "XYX Corp LTD."
tput sgr0
tput cup 5 17
tput rev # Set reverse video mode
echo "M A I N - M E N U"
tput sgr0
tput cup 7 15; echo "1. User Management"
tput cup 8 15; echo "2. Service Management"
tput cup 9 15; echo "3. Process Management"
tput cup 10 15; echo "4. Backup"
tput bold # Set bold mode
tput cup 12 15
read -p "Enter your choice [1-4] " choice
tput clear
tput sgr0
tput rc
于 2013-01-10T13:46:04.327 に答える
8
を使用echo
すると、特定の端末タイプに制限されます。を使用することをお勧めしますtput
。
tput cup 10 4; echo there
行10、列4にカーソルを置き、その位置に「そこ」を印刷します。
より基本的な動きをtput cub1
するには、左にtput cuf1
移動し、右tput cuu1
に移動し、上tput cud1
に移動し、カーソルを下に移動する必要があります。
于 2013-01-10T13:46:15.170 に答える
1
はい、mikuが指摘しているように、ANSIターミナルはエスケープするか、少しクリーンなものがtputであり、どのターミナルでも機能するはずです。
tput cuu 1 # move cursor up 1 position
nudgeup=`tput cuu 2` # save it for later
nudgeleft=`tput cub 2`
echo -n $nudgeup $nudgeleft
BASHプロンプトのハウツーのANSIセクションの後のいくつかのセクションを参照してください。
tputは、サポートされていないものがあるかどうかを通知する終了コードも返します。
于 2013-01-10T13:59:02.920 に答える