見出し画像

究極、スケルトンライナー

シェルコマンドを日常的に使用する界隈では、シェルコマンドをパイプ(|)でつなげて1行で処理を完了させるプログラムのことをワンライナー、1行プログラムなどと言われています。このワンライナーは、使い捨て感覚で必要なときにその場で入力して実行して終わり、という使われ方が通常です。

ワンライナーの良いところは、Ctrl+rでコマンド履歴からすぐに呼び出せるところと、少し修正すれば実行できるので入力の手間が省けるところです。さらにターミナル上でプログラムがどのように書かれているか目で見てわかるところもファイルとしてのプログラムよりも優れているところです。

Pythonは、ターミナルで対話的に実行することができるのですが、ターミナルでシェルコマンドのワンライナーのようにコマンドラインに入力、実行することも可能です。最初に必要なモジュールを読み込む必要だったり、個々のコマンド(モジュール、関数)名も文字数が多いものがあったり、文字数は多くなります。それでも、対話モードで改行のところを(;)に替えればプログラムを1行にすることが可能になります。シェルコマンドともパイプ(|)で繋げて使えます。画面上の1行には収まりませんが、それでも、いちいち、ターミナルでpython、エンターして対話モード(>>>)に入ってプログラムを入力、実行してから、ターミナルに戻るよりも格段に作業効率が上がるので、日常的に使用できるように手を動かし、勝手に手が動くようにしましょう。

シェルコマンドの1行プログラムをワンライナーと呼ぶことに対して、それよりも長くなるpythonの1行プログラムは、 「スケルトンライナー」 と命名します。ファイルの中身が見え見えなところを強調してます。

ここで、使用上のTipsです。

pythonの対話モードでも、ターミナルでもCtrl+rでコマンド履歴から呼び出せますが、いつも使うモジュールや関数の名前は同じになるので、目的のスケルトンライナーまで履歴をたどることは骨の折れる作業です。

いちいち骨の折れることをしたくがないため、手抜き技を編み出しました。

pythonプログラムであれば、ファイル名が付けられます。でもプログラムの内容がよくわかるような長いファイル名はあまり見たことはありません。そうなんです。プログラムファイルになったとたんにブラックボックスとなってしまうんです。たまに使うものは、そのファイル名から何をするのか連想できない場合も多々あります。そんなこんなで、あとから使うときになにをするプログラム、スケルトンライナーなのかが連想できるようにするTipsです。

たったこれだけ。

このpythonのスケルトンライナーの後ろにライナー名として「 #コメント__」として追加しておくことで、コマンド履歴からも対話モードからでも格段に呼び出しやすくなります。

「 #」は、シェルコマンド、pythonともにこの後に続く文字列はプログラムとして実行されないため、覚え書きやなにをするコマンドかの説明を書き留めておくことができます。

「__」は、同じような実行内容のスケルトンライナーから目的のものを絞り込むために付けています。

もうひとつ

いつも読み込むモジュールや自作関数をスケルトンライナーに書くのも大変です。.bashrc、.zshrcに変数として設定しておきます。

imt='from ファイル名 import *'
(ファイル名は、インポートするモジュールと自作関数を記述してあるファイルの拡張子を除いた名前です)

スケルトンライナーのテンプレートはこうなります。
python3 -c "$imt;pythonプログラムを書きます" #スケルトンライナーの名前__

ちなみに、.bashrc、.zshrcに次のエイリアスを設定しておくと更に入力文字数が少なくなります。
alias pn='/usr/bin/python3'


いいなと思ったら応援しよう!