コマンドラインに印刷できない文字を入力してください。

コマンドラインに印刷できない文字を入力してください。

印刷できない文字が必要なプログラムがあります。0x0Fctrl+ o)はプログラムの意図した部分を実行するための入力です。

0       000     00              NUL     �          Null char 
1       001     01              SOH               Start of Heading
2       002     02              STX               Start of Text
3       003     03              ETX               End of Text
4       004     04              EOT               End of 

コマンドラインから実行されます。印刷できない文字をプログラム入力としてコマンドラインに挿入する方法を知っていますか?

ベストアンサー1

このprintfユーティリティは8進文字エスケープをサポートします。

  1. XBDファイル形式表記法(、、、、、、、、)'\\'に表示される'\a'エスケープシーケンスに加えて'\b''\f''\n''\r''\t''\v'"\ddd"ディディ8進数で指定された値でバイトを書き込む必要がある1桁、2桁、または3桁の8進数。

printf少なくともBashとZshの組み込み機能は、16進エスケープシーケンス\xHH$'...'同様の方法でエスケープシーケンスを挿入する引用符もサポートします。

したがって、特定のコマンドのコマンドライン引数にこれらの文字を使用するには、次の手順を実行します。

$ somecmd "arg_with_$(printf '\017')_xoff"

または、その文字を複数回使用する必要がある場合は、変数に入れてください。

$ xoff=$(printf '\017')
$ somecmd "many${xoff}odd${xoff}chars"

または、コメントに記載されているコマンドに2バイト0x0f 0x11(8進数)を送信します。017 021

$ printf "\x0f\x11" | somecmd...
$ printf "\017\021" | somecmd...

おすすめ記事