サブロウ丸

Sabrou-mal サブロウ丸

主にプログラミングと数学

tacの実装

前回の記事(【Linux コマンド】文書の表示 - サブロウ)の最後に書いたtacの実装について書きます。
簡単に言うと、MacLinuxには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コマンドは自作できる。