初歩のシェルスクリプトで遊ぶ[端末の256色カラーセレクタ(7)]
カラーパレットにカーソル表示する見えない数字
---- ${colorTableViewCode} ------------------------------------------- 1:0 12 2:1 12 3:2 12 4:3 12 5:4 12 6:5 12 7:6 12 8:7 12 9:0 -1 10:8 12 11:9 12 12:10 12 13:11 12 14:12 12 15:13 12 16:14 12 17:15 12 18:0 -1 19:232 8 20:233 8 21:234 8 22:235 8 23:236 8
デバッグモードで表示されるシェル変数の一つで、これがカラーパレット表示の設計図になってます。色の番号のみが並んだ、元の表形式データから、表の列数が変わっても画像の横幅を一定にする計算をして作ります。
インデックスカラー0番が12文字分の幅、同様に1番、2番と続き、9行目で改行。表示幅が負の数なら改行、というルールです。
ここから端末表示するための画像データを作るわけですが、問題はどうやって選択中の色を指し示すカーソルを重ねるか、ということ。
このシェル変数から画像データを作るときに、同時にカーソルも書き込んでしまうのがいちばん簡単で、それでもそこそこ動いてくれたんですが。
初歩のシェルスクリプトで遊ぶ[端末の256色カラーセレクタ(3)]
参考リンクと既知の不具合とかのメモ
ほぼ自分用。
初歩のシェルスクリプトで遊ぶ[sedのモヤモヤを整理したい(3)]
使いやすいコマンドに絞り、注意が必要なコマンドを避ける
sedのコマンドにも、よく使うコマンド、あまり使わないコマンド、があります。よく使うのはsコマンド、あまり使わないのはGNU拡張の「シェルでシステムのコマンドを実行するe」とか。
シェルスクリプトでsedを真似するときでも、思ったより簡単に真似できるものもあれば、意外とややっこしいものもある。
コマンドを大雑把に分けてみます。
- 「while read PATTERN_SPACE ; do~」で書き始めた場合に、比較的手軽に実装できるコマンドは実装する
- 基本の「while read」ループを書き換える必要がある、たとえば「while true ;do~」にしなければならないコマンドは、除外する
初歩のシェルスクリプトで遊ぶ[sedのモヤモヤを整理したい(2)]
今回はパターンスペースとホールドスペースを、シェルスクリプト製の簡易sedに実装します。
内容は「整理したい(1)」で書いた内容の再説明になってますが、繰り返して噛み砕きます。
「2p」は「2行目を出力」ではなく「行番号カウンターが2のとき、変数『パターンスペース』内の文字を全て出力」
# 2行目にマッチして出力? $ seq 1 3 | sed -e '2p' 1 2 2 3
# 2行目にマッチして削除? $ seq 1 3 | sed -e '2d' 1 3
前回「整理したい(1)」で例にした、2行目を重複出力する例と、定番の2行目を削除するスクリプト。
特に「指定した行を削除するには」という目的で使われたり紹介されたりする例ですが、「2」は「2行目を指定して」と説明されることがあるようです。これが誤解の元になる。