rangerの設定(Pythonファイルの実行と結果表示)
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