最近、Bashを使う機会がありまして、そこでふと疑問に思ったので質問させていただきます。
bashにpecoと呼ばれるフィルタリングツールを導入して、bash_historyから入力したコマンドを表示するスクリプトというか関数を作ろうとしました。
ググるとかなりの数がbashやzshやfishでヒットするのですが、主にこんなコードです。
bash
1peoc_history(){ 2 local reverse_order 3 if which tac &> /dev/null; then 4 reverse_order='tac' 5 else 6 reverse_order='tail -r' 7 fi 8 local CMD=$(\history \ 9 | $reverse_order \ 10 | sed -re "s/^\s+[0-9]+\s+//" \ 11 | awk '!dictionaty[$0]++' \ 12 | peco --query "${READLINE_LINE}") 13 READLINE_LINE="${CMD}" # Input to terminal's readline 14 READLINE_POINT=${#CMD} # Set cursor 15}
どうやら、tail -rはGNU標準でのtailコマンドには存在しないようで、tacを持ってるか持ってないかを判断した方がいいみたいです。
tacを持ってないLinuxなんかがあればどうするんですかね、という疑問はあるものの
「それだったら、bashにビルトインされているsort -r使った方がよくない?
zshとかは知らないけど、bashならとりあえず動くでしょ」
と思います。
※sortがビルトインだと思ったのは、私の視力が悪かったからです。すいません。
しかし、調べども調べども出てくるのは「tac or tail -r」ばかり。
コマンドの内容を見ても何か問題があるようには思えません。
何か、**「いや、実はtacとtailとsortはこういう違いがあるんだよ」**と知っておられる方がいらっしゃっいましたらご教授願います。
**「いや、なんにも違わないよ。好きなの使えば?」**ということでも構いません。
※恐れながらも、私が持っていないMac OSでの情報とか頂けたらありがたいです。
※今はMacはFree BSDなんでしたっけ?あまり知りませんが……
どうぞ、よろしくお願い致します。
【私の使っている環境】
Ubuntu 16.04(x64)
Bash 4.3.46
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/20 16:26
2017/02/20 17:05
2017/03/05 16:54