前回の記事(【Linux コマンド】文書の表示 - サブロウ)の最後に書いたtac
の実装について書きます。
簡単に言うと、MacのLinuxにはtac
がデフォルトで入ってなくて、brewでもインストールできないので、自分で作ろうという話です。
tac: 文書を一番下の行から逆順に表示
上記のようなコマンドを作っていきます。
まず下のスクリプトをreverse.py
として、ホームディレクトリに保存。
中身の説明をすると、
2行目のstdin.readlines()で標準入力を読み込んでいます。(ただし、その時に空白や\n
なども一緒に読み込むので、リストに格納する時にstrip()
でそれらを取り除いています)
標準入力をリストに格納したら、3, 4行目で、それを逆順にprintさせています。
次に、ホームディレクトリ上の.bashrc
を開いて
reverse() { python3 ~/reverse.py }
を追記して、保存します。
これでまず、reverse
というコマンドを作りました。
例えば
$ cat file cat dog elephant
というfileに対し、reverse
をパイプでつなげると、
$ cat file | reverse elephant dog cat
と、逆順に表示されます !
$ cat file | reverse | reverse cat dog elephant
2回reverse
させると元に戻ります。(当たり前)
なので、また.bashrc
を開いて
tac(){ cat "$1" | reverse }
を追記すれば、無事tac
コマンドを作成することができました! (ちなみに上の$1というのは1番目の引数を表します。cat file
なら、$1に、fileが入ります)
tac file
を実行して、tac
が正常に動いていることを確認してください。
以上、tac
コマンドを作ってきましたが、上記の手順を踏めばそれ以外のコマンドを自分で作ることができます。コマンドはpythonスクリプト(その他プログラミング言語)でかけるので、自分でいろんな操作をさせることが可能です。
(まとめ)
Linuxコマンドは自作できる。