複数行テキストをエディタから入力する方法
端末ではムリだったのでエディタを使う。
コード
方法1
file=/tmp/work/test.txt editor "$file"
editor
はselect-editor
コマンドで選んだエディタになる。エディタを直接指定したくば以下。
vim "$file"
なんならもうGUIエディタでもいいんでない? だってCUIエディタってアレだし。
mousepad "$file"
書き込み保存したあと、そのファイルを読み込めばいい。
RAMディスク
メモリ上に書きたいなら、RAMディスク先に保存すればいい。etc/fstab
を、たとえば以下のように設定する。
/etc/fstab
tmpfs /tmp tmpfs defaults,size=2048m,noatime,mode=1777 0 0
再起動すれば反映されている。
reboot
ファイル読込
cat "$file"
一行ずつ読むなら以下。
cat "$file" | while read line; do echo -e "$line" done
方法2
CUIエディタを諦めた。
file=/tmp/work/test.txt zenity --text-info --editable --filename="$file"
Ctrl+Enter
でOK
、Esc
でCancel
。
OK
すれば標準出力に入力値が出る。これを変数で受け取るには以下。
file=/tmp/work/test.txt input="$(zenity --text-info --editable --filename="$file")" echo -e "$input"
これでいちいちファイルを読み込まなくてもOK。
だったらファイル必要ないじゃん? てことで以下で十分OK。
input="$(zenity --text-info --editable)" echo -e "$input"
所感
まとめてインデントしたりするのが面倒。もっとツリーテキスト専用な感じのはないかな?
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux