学校では、ASCIIアートをターミナルウィンドウに印刷する必要があります。入力はフォーマットデータです[x_coordinate, y_coordinate, char_ascii_value]
(文字を印刷しない座標データはありません)。実際にこれを行うのに問題はありませんが、forループに入って文字データがないたびにスペースを印刷してから、端末の別の行に移動して同じ操作を実行するのはあまりにも怠惰です。ものなど
だからもっと簡単な方法があると思いました! POSIXのコマンドのみを使用できますが、端末の特定の位置にカーソルを移動できるコマンドはありますか?
tput
私は私が必要とするものを正確に実行するコマンドを見つけましたが、それがPOSIXにtput cup
あるかどうかはわかりません。tput cup
PS:これを一種の不正行為と見なさないでください。何も考えずにコーディングせずに私の人生をより簡単にする方法を探したいだけです。
ベストアンサー1
〜のようにマックサイフPOSIXが指定されていないことを説明しますtput cup
。確かに指定tput
しかし、最低限だけ。つまり、tput cup
幅広い支持を受けているということです!
カーソル位置を指定する標準化された方法は、次を使用することです。ANSIエスケープシーケンス。カーソルを配置するには、次のものを使用できます。
printf "\33[%d;%dH%s" "$Y" "$X" "$CHAR"
$CHAR
行$Y
と列に印刷されます$X
。より完全な解決策は
printf "\337\33[%d;%dH%s\338" "$Y" "$X" "$CHAR"
これによりカーソル位置が復元されます。