追記:Takahito_Ogawaさんの回答を拝見しました。
こんなことができるんですね!
自分の回答は取り消します( ;
こうしたもののを調べたことがないので外してたらスミマセン
bashがコマンドを入力する際にはコマンド名の補完やコマンド引数のパス名の補完をやってくれますが、readでは行われない気がします。それはreadの目的が「コマンドやファイル名を入力するものではなく」「文字列を入力するためのもの」だからだと思います。つまり目的が違う機能なのだと思います。
bashのmanなどみるとreadはCのライブラリーであるRaedlineを使っているらしいことが伺えます。もしお望みのことをするコマンドがどこかにないとすると(あるのかも知れませんが、自分は知らないです)ttyのモードをcooked->rawにした上で1文字ずつ処理をプログラムが必要になると思います。
(1) sttyでttyモードを変更し、補完をshellやperlで書く
(2) linuxのtty設定用関数でttyモードを変更し、Cで補完処理を書く
(3) C以外の何かの言語を使って書く
(4) emacsなどに慣れているならemacsでスクリプト全体を書いてしまう
たしかemacsにはファイル名を補完してくれるemacs-lispの関数があった気がします。
といった方法が考えらえますが(2)(3)を想定し「linux tty 文字単位 入力」で検索して少し調べてみたところ以下のようなページがヒットしました。
C
http://www.darkhorse.mydns.jp/blog/getch_utf8
Ruby
https://qiita.com/ksss/items/9c8a237f452cd8aa7c11
自前で作るのは少々めんどうそうなのでどこかにファイル名補間をしてくれるようなコマンドがあればよいのですが、残念ながら自分は知りません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/18 14:04
2017/11/18 15:11
2017/11/18 15:17
2017/11/18 15:42