rangerはTUIファイラ。
pythonを実行して結果を確認したい
~/.config/ranger/rifle.confファイルを以下のように編集する。
| - | 設定 |
|---|---|
| before | ext py = python -- "$1" |
| after | ext py = python -- "$1" | "${PAGER}" |
実行コマンドの末尾に| "${PAGER}"を付与してやる。
他にもperl, rubyなどで同様の設定があるので同じように修正する。
やってみる
LxTerminalを起動する- rangerを起動する(設定ファイル編集後はranger再起動する)
!キー押下し:shell表示される- Pythonファイルを作成すべくコマンド入力する
echo 'print("Hello World!!")' > a.py - (上記コマンドをコピーしたらCtrl+Shift+Vでペースト)

<Enter>キー押下すると実行されファイルができる

a.pyを選択中にrキー押下する- コマンド一覧が出る
ext py = python -- "$1" | "${PAGER}"の番号を入力する

<Enter>キー押下する- 実行結果
Hello World!!が表示される

qキーでrangerに戻る
おまけ
${PAGER}の正体はless
${PAGER}は/usr/bin/pagerである。この実態はlessコマンド。
$ ls -l /usr/bin | grep 'pager' lrwxrwxrwx 1 root root 23 11月 13 21:58 pager -> /etc/alternatives/pager -rwxr-xr-x 1 root root 288 12月 20 2017 sensible-pager
/etc/alternativesというのがよくわからん。ここを参照。一言でいうとリンク。エイリアス(別名定義)。
$ pager Missing filename ("less --help" for help) $ sensible-pager Missing filename ("less --help" for help)
なので表示画面の操作方法はlessそのもの。
別名定義
/usr/bin/pagerという別名定義をする理由は抽象化できるから。具体的なアプリを変更しながらもpagerという名前は統一できる。
| 別名 | 候補 |
|---|---|
/usr/bin/pager |
less |
/usr/bin/archiver |
tar, unzip, unrar, ... |
/usr/bin/interpreter |
python, python3, ruby, node, csharp, ... |
/usr/bin/builder |
gcc, g++, javac, msbuild(C# MONO), dotnet(C# .NET Core) ... |
/usr/bin/maker |
make, ./autogen.sh(autotools), ... |
/usr/bin/installer |
apt, nix, pip, gem, ... |
/usr/bin/packager |
pip, gem, ... |
/usr/bin/viewer |
プロトコル次第。(テキスト、バイナリ、ファイルツリー、画像、HTML、動画、音声、……) |
/usr/bin/viewer-img |
ラスタ画像とベクタ画像のどちらも表示できるアプリ(見つからない) |
/usr/bin/viewer-html |
いわゆるブラウザ。HTML描画エンジン搭載ならなんでもOK(zenity --text-info --html等) |
/usr/bin/player |
プロトコル次第。(動画、音声、……) |
/usr/bin/browser |
プロトコル次第。(HTML、e-book、……) |
/usr/bin/downloader |
wget, curl, aria2。プロトコル次第(HTTP,FTP,WebDav,WebSocket,git,svn`, ...) |
/usr/bin/uploader |
curl。プロトコル次第(HTTP,FTP,WebDav,WebSocket,git,svn`, ...) |
たとえば以下のようにやってくれたら嬉しい。
$ interpreter a.py $ interpreter a.rb $ interpreter a.js
処理系はすべてpython3, ruby, nodeと別々。だがinterpreterがファイル拡張子ごとに分配してくれる感じ。
interpreterは長いからinterpがいいか。
特に圧縮・解凍(展開)は面倒。拡張子ごとに分配してくれたら楽。ディレクトリなら形式を選択する画面を出して欲しい。
$ archiver a.tar.bz $ archiver a.tar.gz $ archiver a.tar.zip $ archiver a.tar.rar $ archiver a.tar.7z $ archiver a/ 0:tar.bz::tar -a ... $ archiver tar.bz a/
このくらい標準装備して欲しい。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12
- python 2.7.13, pip 9.0.1
- python3 3.5.3, pip3 9.0.1
- ranger 1.9.2
$ uname -a Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux