やってみる

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

rangerの設定(Pythonファイルの実行と結果表示)

 rangerはTUIファイラ。

pythonを実行して結果を確認したい

 ~/.config/ranger/rifle.confファイルを以下のように編集する。

- 設定
before ext py = python -- "$1"
after ext py = python -- "$1" | "${PAGER}"

 実行コマンドの末尾に| "${PAGER}"を付与してやる。

 他にもperl, rubyなどで同様の設定があるので同じように修正する。

やってみる

  1. LxTerminalを起動する
  2. rangerを起動する(設定ファイル編集後はranger再起動する)
  3. !キー押下し:shell表示される
  4. Pythonファイルを作成すべくコマンド入力する echo 'print("Hello World!!")' > a.py
  5. (上記コマンドをコピーしたらCtrl+Shift+Vでペースト)
    f:id:ytyaru:20190325165134p:plain
  6. <Enter>キー押下すると実行されファイルができる
    f:id:ytyaru:20190325165340p:plain
  7. a.pyを選択中にrキー押下する
  8. コマンド一覧が出る
  9. ext py = python -- "$1" | "${PAGER}"の番号を入力する
    f:id:ytyaru:20190325165356p:plain
  10. <Enter>キー押下する
  11. 実行結果 Hello World!! が表示される
    f:id:ytyaru:20190325165432p:plain
  12. qキーでrangerに戻る

おまけ

${PAGER}の正体はless

 ${PAGER}/usr/bin/pagerである。この実態はlessコマンド。

$ ls -l /usr/bin | grep 'pager'
lrwxrwxrwx 1 root root          23 1113 21:58 pager -> /etc/alternatives/pager
-rwxr-xr-x 1 root root         288 1220  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