termcap 関数の端末状態を取得します。

termcap 関数の端末状態を取得します。

smamなどの端末設定の状態をどのように検索できますかrmam

その理由はrmam私が設定したものです。

tput rmam

スクリプトからsmam出口設定に進みます。

tput smam

ただし、スクリプトの起動時に端末がすでに設定されている場合は、終了時に設定したくrmamありません。smam


これはどのように達成できますか?

ベストアンサー1

これをサポートする端末エミュレータでは、エスケープ(「DEC Personal Mode Request」)を使用して、\033[?7$pこのパラメータ(=>単語改行モード)を照会できます。7

decrqm()(
    exec </dev/tty
    t=$(stty -g)
    trap 'stty "$t"; return' EXIT QUIT INT TERM
    stty -icanon -echo time 1 min 0
    e=$(printf '\033')
    printf "${e}[$1\$p" >/dev/tty
    case $(dd count=1 2>/dev/null) in
    "${e}[$1;1\$y") echo on;;
    "${e}[$1;2\$y") echo off;;
    *) echo unknown;;
    esac
)

$ tput smam  # printf '\033[?7h'
$ decrqm '?7'
on
$ tput rmam  # printf '\033[?7l'
$ decrqm '?7'
off

より良い方法は救う\033[?7sスクリプトの使用と実行時に設定また覆う出るとき\033[?7r

save_am(){ printf '\033[?7s'; }
restore_am(){ printf '\033[?7r'; }

save_am
tput rmam
..
restore_am

screenしかし、多くの端末エミュレータ(特に、tmuxサポートしていない脱出した人々。少なくとも基本的ではありません。したがって、これはすべて純粋なクイズです。実際には何もできません;-)

おすすめ記事