OS Xでtacコマンドを取得するにはどうすればよいですか?


59

tacの出力を逆にするのに使いたいですcat。ただし、Mavericksターミナルでは使用できません。MacPortsで見つけようとしましたが、再び利用できません。誰でも私に取得方法を教えてもらえますtacか?ログファイルの読み取りに非常に役立ちます。

回答:


66

はい:

  • Homebrewをインストールする
  • brew install coreutils
  • ln -s /usr/local/bin/gtac /usr/local/bin/tac 明らかに最新のHomebrewでは不要です。以下のRan Ever-Hadaniのコメントをご覧ください。

または、MacPortsを使用coreutilsして同様の方法でインストールします。


私はそれがどのように機能するのかわかりませんln -s /usr/local/bin/gtac /usr/local/bin/tac...そのコマンドはいくつかのファイルメモリブロックをリストするだけのものではありませんか?
ティモシースワン

1
シンボリックリンクは便宜上のものです。Homebrewは、元の名前の先頭に「g」を付けてcoreutilバイナリを/ usr / local / binにインストールします。lsとなりglsheadとなりgheadのように。したがって、tacはとしてインストールされgtac、この回答で提案されているシンボリックリンクは、tacその名前で利用可能にすることです。シンボリックリンクを省略しても、プログラムをとして実行できますgtac
グレブネケ

ああ。あなたは話してln -sいないls -sこれは今より理にかなっています。初めて正しく入力したに違いありません。
ティモシースワン

2
grebnekeの答えに追加:ソフトリンクはもう必要ありません。gサフィックスは、osxに既にその名前のコマンドがある場合にのみ追加されるため、tacはgtacではなくtacとしてインストールされます。
Ran Ever-Hadani

70

多くのシステム(BSD系、Solaris版、AIX、IRIX ...)のようなOS / Xでは、GNUの機能はtacで利用可能であるtail-r オプション。したがって、GNUをインストールする必要はありませんtac

tail -r the-file

11
だから、alias tac='tail -r'OPのトリックをします!
mkc 14

8
エイリアスはシェルスクリプトに転送されないため、実際にシェルエイリアスを使用すると失敗する場合があります。次のような関数を使用しますtac() { tail -r -- "$@"; }
-kojiro


0

一時的な解決策の1つは次のとおりです。

alias tac='perl -e "print reverse(<>)"'

1
これにより<>、STDINから読み取るだけでなく、オプションでから読み取ることもできました@ARGVstackoverflow.com/questions/29020883/…reverse行を逆順で出力する前にファイル全体をメモリにロードするかどうかはまだわかりません。それはひどいでしょう。
ブルーノブロノスキー

@BrunoBronosky、> ... STDIN、ただしオプションで@ ARGVから:はい、それは<>の目的です。> ...ファイル全体をメモリにロードします...:はい、できます!(ギガバイトのファイルでこれを行うことは避けてください)
JJoao
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.