やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

複数行テキストをエディタから入力する方法

 端末ではムリだったのでエディタを使う。

コード

方法1

file=/tmp/work/test.txt
editor "$file"

 editorselect-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+EnterOKEscCancel

 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"

所感

 まとめてインデントしたりするのが面倒。もっとツリーテキスト専用な感じのはないかな?

対象環境

$ uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux