今日、lessをtail -fのように動作させることができることを発見しました。
lessfilename、Shift-Fを押してフォローモードを開始します。
テールに似ていますが、スクロール、検索、検索ヒットの強調表示など、以下のすべての追加機能があります。
私は何年もテール付きのログファイルを見てきました。
これは私を熟考させました:時代遅れで強力な代替手段がある他のコマンドはありますか?
至福を共有してください-投稿ごとに1つのコマンド。
プログラマー向けのgrepの代替手段である私のackを指すのが好きです。
私(私を含む)が長い間、石畳のエイリアスとfind&xargsを使用したシェルスクリプトを使用していたことに驚いています。
最も明白な:
少ないほど多い
正確に何かを置き換えるものではありませんが、 moreutils は小さなUnixyツールのコレクションであり、基本的には* nixツールボックスの穴を埋めることを目的としています。
ポストごとに1つのコマンドだけが必要だったので、spongeを選択する必要があると思います。これにより、パイプの出力を1つに保存できます。入力として使用されるファイルの。 IOWでは、一時ファイルについて心配することなく、ファイルをインプレースで変更できます。
たとえば、次の場合:
grep 'something' somefile.txt > somefile.txt
somefile.txtは空になります。したがって、スポンジを使用できます。
grep 'something' somefile.txt | sponge somefile.txt
Rsync は、ほとんどのファイル転送方法(scp、rcp、パイプされたtarコマンドなど、多くの場合はcpでさえ)を効率的かつ強力な方法で置き換え/補完します。
汎用性があるため、多くのオプションがあります。しかし、少なくともrsyncの基本を学ぶことを本当にお勧めします。
mtrはtracerouteの代替です(pingとtracerouteの組み合わせです)。
Tracerouteとは異なり、(ネクストホップに移動する前に応答を待たないため)ほとんどすぐにルートを見つけます。
コマンドラインバージョンはデフォルトでDebianにインストールされます(パッケージmtr-tiny)。
状況依存のオートコンプリート。
まあ、私は知っている、それはコマンドではなく、多くのUnices、Linuxでは見られないだろう私のUbuntu Hardyでは、bash_completion
はすでに非常に適切に構成されています。つまり、ファイルとディレクトリについてだけでなくです。たとえば、次のように入力した場合
svn pr<TAB><TAB>
私は得る:
praise propdel propedit propget proplist propset
そして
svn propget svn:k<TAB>
自動的に取得します
svn propget svn:keywords
ant
およびmake
に対しても機能し、デフォルトのファイルまたはコマンドラインで指定されたファイルを自動的に読み取ります。それはリアルタイムの節約です!
質問とタグは矛盾しています。 LinuxはUnix(愚かなオープングループ)ではなく、ほとんどの「本物の」Unixボックスには、Linuxが行うソフトウェアに近いものはありません。例として、かなり単純なAIX 5.3pl6インストールの場合:
$ less ksh:less:not found。
そして、はい、これらのシステムを管理しますが、フィールドに展開されたシステムと一致させる必要があるため、ほとんどの場合、非コアコンポーネントをロードしないことに同意しました。
ツールボックスに新しいツールを含めることは素晴らしいことですが、「古い学校」の方法がわからない場合、AIX/Solaris/HP-UXを使用していると、怪我をする可能性があります。/etcシステムには新しいツールがありません(bashがない場合もあります)。
私たちの開発では、VM私は見つけることができる限り多くの最新のツールをインストールしています。単純な環境で作業できる一方で、それを楽しむという意味ではありません。そして、Linux(CentOS 5)システムで可能な限り多くの作業を行います。その理由は、AIX用にすぐにパッケージ化されているものよりもツールがまだ新しいためです(Solarisの方がいくらか優れています。HP-UXは無限に劣ります)。
rsh
/rexec
/rcp
/etc。 ssh
/scp
/etcに取って代わりました。
Linuxでは、ip
(iproute2
パッケージ)は、ifconfig
/route
よりも予測可能に動作し、解析しやすい出力を提供します。
標準(XPG4など)バージョンを超えて有用な改良点を静かに取得しているため、一部の一般的なコマンドのGNUバージョンを参照する価値があります。
たとえば、再帰grepは_find | xargs grep
_よりもはるかに優れています。
また、_find ... -print0 | xargs -0 ...
_は、xargsがファンキーなスペースで満たされたファイル名を適切に処理できないという、ひどいクォートの問題を処理します。
GNU tarは、 'j'および 'z'フラグを使用して、bzipおよびgzipで圧縮されたアーカイブを直接処理します。
また、bashのバックティックの$()
の代替により、バッククォートで囲まれた式がときどき読みやすく、書きやすくなります。
pax
は、tar
およびcpio
の代わりに、コマンドラインオプションの適切なセットを使用した場合です:-r
アーカイブから読み取る場合、-w
アーカイブに書き込む、-rw
ツリー間コピーを実行します。また、-s
オプションを使用すると、アーカイブからファイルを読み書きする前にファイル名の置換を実行できます。 :-)
編集:マーク・ベイカーは(コメントで)興味深い点を指摘します。 pax
はデフォルトでpax
アーカイブ(ustar
の拡張であり、ほとんどのtar
プログラムで解凍可能)を作成します。しかし、-x
オプション、cpio
アーカイブとustar
アーカイブを作成することができます(これら2つは標準で保証されています)。 BSDなどの一部の実装では、古いスタイル(pre -ustar
)tar
アーカイブなど、さらに多くのタイプの作成がサポートされています。
awk
はPerl
によって完全に廃止されたと言うかもしれません。
ただし、Perlが存在する前からawkを使用していたため、まだ使用しています。より深刻なスクリプトについては、Perlの代わりにpythonを使用します。
atool:頭痛のないアーカイブの処理
いくつかの例:
- aunpack archive.tgzアーカイブ内のすべてのファイルを解凍します。アーカイブの作成者が、アーカイブのルートに複数のファイルを配置するほど慎重でない場合、コマンドは自動的にディレクトリを作成し、ファイルを内部に移動します。
- aunpack -e archive1.tgz archive2.Zip各アーカイブを解凍します。
- apack archive.tar.bz2 * .txt現在の作業ディレクトリにすべてのテキストファイルを含む新しい圧縮アーカイブを作成します。
- als archive.rarアーカイブに含まれるファイルの名前を表示します。
例は次のとおりです。 http://debaday.debian.net/2008/12/28/atool-handling-archives-without-headaches/
Dig
は、nslookup
のより良い代替手段です。
'rename'は、名前を一連のファイルに変更するために記述する長いonelinersに代わる優れた選択肢です。
本来、時代遅れのコマンド自体の代わりではありませんが、screenは複数のターミナルウィンドウを開いたり、bgなどを使用したりするための優れた代替手段です。
GNUシステムを使用している場合は、sed '1!G;h;$!d'
;代わりに、tac
を使用します。
bm(link) は、popdおよびpushdの代わりに、または一時的なエイリアスを作成するのに、本当に便利です。
tagで呼び出されるディレクトリを追加するには
bm -a /path/to/a/dir tag
このディレクトリに移動するには
cdbm tag
echo
は、ささいな引数でのみ使用される場合があります。そうでない場合、その動作は予測できない場合があります。他のすべての目的(制御文字、改行の抑制、書式設定)では、非常に強力で一貫性のあるprintf
コマンドによって廃止されました。
cfdiskは、コマンドラインドライブパーティション分割ユーティリティfdiskの使いやすいアップグレードです。
glibc
がインストールされている場所ならどこでもgetent passwd foo
の代わりに grep foo /etc/passwd
(同様にaliases ethers group hosts netgroup networks protocols rpc services shadow
)-NISのセットアップでも、Dight The Right Thing(TM)を実行します。
gzip -dc foo.tar.gz | tar xf -
が解凍プログラムを生成するときにtar xzf foo.tar.gz
と入力するのはなぜですか?
さらに進むと... GNUtar
が自動的に圧縮を検出するときにtar xzf foo.tar.gz
またはtar xjf foo.tar.bz2
を入力するのはなぜですか? tar xf foo.tar.(gz|bz2)
は魔法のように機能します。
これが質問に対する答えなのか、単なる編集なのかはわかりません。
Lessをテール置換として使用する前に、何か「/ search_string」を検索し、Followコマンド(shift-F)を呼び出すことができます。これで、スクロールする「search_strings」が強調表示されます。これは、大量のプログラム出力またはログをスキャンしていて、特定の文字列またはパターンを探している場合に便利です。
正規表現も使用できることを忘れないでください!
ifconfigおよびiwconfigは、ルーティング、デバイス、ポリシールーティング、トンネルを表示/操作するための非常に強力なツールであるipの代わりに廃止されました。
Findの代わりとして、locateが本当に好きです。「find/-name filepattern -print」よりも「locate filepattern」を使用する方がはるかに簡単で、インデックスデータベースを使用するため、より効率的です。
Locateデータベースを更新するには、updatedbコマンドをスケジュールに従って実行する必要があります。詳細については、ディストリビューションのマニュアルページを参照してください。
tmux
over screen
。 tmux
は設定が非常に簡単で、面白くさえありません。
Wcalcはbcの素敵な代替品であることがわかりました
innotail
Tailに似ていますが、ファイルシステムをポーリングする代わりにinotifyファイル変更通知を使用します。スクロールがより滑らかに見えます。
ただし、「tail -f」に代わるものはまだありません。ライブテストのためにログをフィルタリングする必要がある場合in realtime、lessは「tail -f | grep xxxxx '。
それが完璧な代替品かどうかはわかりませんが、「xtail」は「tail」の本当に素晴らしい改善です。
複数のファイルを同時に監視できます。割り込みキー(一般的にはCTRL + C)を押すと、どのファイルがどれだけ変更されたかの概要が表示されます。
私は個人的に病気でしたtail -n 1000 ... | cut ... | sort | uniq -c | sort -gr | head
「何かのトップ10」を取得するためにlogtop
を作成しましたが、同じように機能しますが、ライブです:tail -f ... | cut ... | logtop
。
9番目の列がHTTP応答コードであるログの典型的な例:
$ tail -f /var/log/varnish/varnishncsa.log | awk '{print $9}' | logtop
4096 elements in 6 seconds (682.67 elements/s)
1 3914 652.33/s 200
2 74 12.33/s 304
3 38 6.33/s 301
4 36 6.00/s 204
5 15 2.50/s 206
6 7 1.17/s 302
7 6 1.00/s 404
8 5 0.83/s 403
9 1 0.17/s 401
これが「時代遅れ」であるかどうかはわかりませんが、私の意見では、awk
はsed
を完全に冗長にします。
ar(1)アーカイブ; tarが代わりにほとんど常に使用されます。 arは、引き続きいくつかの制限された用途があります。 .debパッケージファイルは実際にはarアーカイブであり、静的コンパイルに使用される.aライブラリライブラリは実際にはar多数の.oオブジェクトファイルを含むアーカイブです。
基本的に、arが使用されるいくつかの場所では、その存在は隠されます。
圧縮-gzipに置き換えられました(デフォルトで従来のUnixシステムでも使用可能になりました)。 .Zファイルを処理できます。さらに重要なことは、gzipの方が圧縮よりも高速で、作成される出力が小さいことです。
私はMadCoderに同意します。「tail -f」を使用すると、パイプを使用して物事を接続できますが、できません。ただし、対話型セッションの方が簡単です。厳密に言えば、これは代替ではありません。
しかし、他のことがあります。たとえば、vimはviに置き換わり、PCの世界のほぼすべての場所で、nanoはpicoに置き換わります(優れているからではなく、無料であるため)。 Bashが支配的になり、shに取って代わりました。リストはいつまでも続くことができます:)