このスレッドのタイトルはほとんどすべてを教えてくれます。
私はこの問題を検索したときに私が望むことをするというプログラムに言及していましたが、untic
このプログラムは私のディストリビューションの公式パッケージにはないようです。
(コンパイルされた)terminfoからtermcapに移動する他の方法はありますか?
答え1
infotocap - terminfo記述をtermcap記述に変換する
注釈付き
ユーティリティは実際にリンクです。
tic
、走る-C
モデル。他のものを使用することができますtic
次のオプション-f
そして-x
。
これはソース対ソースです。コンパイルされたterminfoソース(terminfoまたはtermcap)の場合は、次のようにします。infocmp
:
生成の源
-C
オプションはtermcapエントリとして直接使用できますが、パラメータ化されたすべての文字列をtermcap形式に変更できるわけではありません。infocmp
ほとんどのパラメータ化された情報を変換しようとする試みが行われ、変換されていない情報は出力に明確に表示され、コメントアウトされます。これは手動で編集する必要があります。
infocmp
これを使用する方法はさまざまです。 termcapに変換するのはそのうちの1つです。
infocmp
バイナリ terminfo エントリを他の terminfo エントリと比較し、terminfo 記述を書き換えるために使用できます。use=
terminfoフィールドまたはさまざまな形式のバイナリファイル(用語)から用語情報の説明を印刷します。 すべての場合において、ブールフィールドが最初に印刷され、次に数値フィールド、最後に文字列フィールドが印刷されます。
tic および infocmp は、マニュアルページで処理される端末データベースの場所に関する情報を想定しています。TERMINFO
。ターミナルデータベースの一部ではない任意のファイル名の場合は、スクリプトを使用して既存のターミナルデータベースと同じディレクトリにコピーできます。
#!/bin/sh
mytemp=$(mktemp -d)
trap 'rm -rf "$mytemp"; exit 1' INT QUIT TERM HUP
trap 'rm -rf "$mytemp"; exit 0' EXIT
TERMINFO=$mytemp; export TERMINFO
TERMINFO_DIRS=$mytemp; export TERMINFO_DIRS
for name in "$@"
do
[ -f "$name" ] || continue
case $(file "$name") in
*Compiled\ *terminfo\ entry*)
actual=$(file "$name" | sed -E -e 's%^.*"([^"]+)".*$%\1%')
leader=$(echo "$actual" | sed -E -e 's%^(.).*%\1%')
part="$mytemp/$leader"
mkdir -p "$part"
cp "$name" "$part/$actual"
full="$part/$actual"
infocmp -C -T "$actual" | sed -e "s%$full%$name%"
;;
esac
done
それじゃない完全通常、ncursesを使用する一部のプラットフォームでは、次のような他の構造を使用しているためterm
マンページ。