web-dev-qa-db-ja.com

どのLinux / Unixコマンドは古く、強力な代替手段がありますか?

今日、lesstail -fのように動作させることができることを発見しました。

lessfilename、Shift-Fを押してフォローモードを開始します。

テールに似ていますが、スクロール、検索、検索ヒットの強調表示など、以下のすべての追加機能があります。

私は何年もテール付きのログファイルを見てきました。

これは私を熟考させました:時代遅れで強力な代替手段がある他のコマンドはありますか?

至福を共有してください-投稿ごとに1つのコマンド。

154

プログラマー向けのgrepの代替手段である私のackを指すのが好きです。

http://betterthangrep.com/

私(私を含む)が長い間、石畳のエイリアスとfind&xargsを使用したシェルスクリプトを使用していたことに驚いています。

57
Andy Lester

ステロイドで htop -topを試してください。

ステロイドで multitail -tailを試してください。

35
Arkady

最も明白な:

少ないほど多い

31
William

正確に何かを置き換えるものではありませんが、 moreutils は小さなUnixyツールのコレクションであり、基本的には* nixツールボックスの穴を埋めることを目的としています。

ポストごとに1つのコマンドだけが必要だったので、spongeを選択する必要があると思います。これにより、パイプの出力を1つに保存できます。入力として使用されるファイルの。 IOWでは、一時ファイルについて心配することなく、ファイルをインプレースで変更できます。

たとえば、次の場合:

grep 'something' somefile.txt > somefile.txt

somefile.txtは空になります。したがって、スポンジを使用できます。

grep 'something' somefile.txt | sponge somefile.txt
29
skoob

Rsync は、ほとんどのファイル転送方法(scp、rcp、パイプされたtarコマンドなど、多くの場合はcpでさえ)を効率的かつ強力な方法で置き換え/補完します。

汎用性があるため、多くのオプションがあります。しかし、少なくともrsyncの基本を学ぶことを本当にお勧めします。

26
matli

mtrtracerouteの代替です(pingとtracerouteの組み合わせです)。

Tracerouteとは異なり、(ネクストホップに移動する前に応答を待たないため)ほとんどすぐにルートを見つけます。

コマンドラインバージョンはデフォルトでDebianにインストールされます(パッケージmtr-tiny)。

21
Udi Meiri

状況依存のオートコンプリート。

まあ、私は知っている、それはコマンドではなく、多くの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に対しても機能し、デフォルトのファイルまたはコマンドラインで指定されたファイルを自動的に読み取ります。それはリアルタイムの節約です!

16
Davide

質問とタグは矛盾しています。 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は無限に劣ります)。

15
Zathrus

rsh/rexec/rcp/etc。 ssh/scp/etcに取って代わりました。

15
ephemient

netcat は、 socat で普遍的に置き換える必要があります。

13
ephemient

Linuxでは、ipiproute2パッケージ)は、ifconfig/routeよりも予測可能に動作し、解析しやすい出力を提供します。

11
ephemient

標準(XPG4など)バージョンを超えて有用な改良点を静かに取得しているため、一部の一般的なコマンドのGNUバージョンを参照する価値があります。

たとえば、再帰grepは_find | xargs grep_よりもはるかに優れています。

また、_find ... -print0 | xargs -0 ..._は、xargsがファンキーなスペースで満たされたファイル名を適切に処理できないという、ひどいクォートの問題を処理します。

GNU tarは、 'j'および 'z'フラグを使用して、bzipおよびgzipで圧縮されたアーカイブを直接処理します。

また、bashのバックティックの$()の代替により、バッククォートで囲まれた式がときどき読みやすく、書きやすくなります。

11
fcw

pax は、tarおよびcpioの代わりに、コマンドラインオプションの適切なセットを使用した場合です:-rアーカイブから読み取る場合、-wアーカイブに書き込む、-rwツリー間コピーを実行します。また、-sオプションを使用すると、アーカイブからファイルを読み書きする前にファイル名の置換を実行できます。 :-)

編集:マーク・ベイカーは(コメントで)興味深い点を指摘します。 paxはデフォルトでpaxアーカイブ(ustarの拡張であり、ほとんどのtarプログラムで解凍可能)を作成します。しかし、-xオプション、cpioアーカイブとustarアーカイブを作成することができます(これら2つは標準で保証されています)。 BSDなどの一部の実装では、古いスタイル(pre -ustartarアーカイブなど、さらに多くのタイプの作成がサポートされています。

11

awkPerlによって完全に廃止されたと言うかもしれません。

ただし、Perlが存在する前からawkを使用していたため、まだ使用しています。より深刻なスクリプトについては、Perlの代わりにpythonを使用します。

10
tzot

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/

10
Tarnay Kálmán

Dig は、nslookupのより良い代替手段です。

9
dave1010

'rename'は、名前を一連のファイルに変更するために記述する長いonelinersに代わる優れた選択肢です。

8

本来、時代遅れのコマンド自体の代わりではありませんが、screenは複数のターミナルウィンドウを開いたり、bgなどを使用したりするための優れた代替手段です。

8
mmacaulay

GNUシステムを使用している場合は、sed '1!G;h;$!d';代わりに、tacを使用します。

6
ephemient

bm(link) は、popdおよびpushdの代わりに、または一時的なエイリアスを作成するのに、本当に便利です。

tagで呼び出されるディレクトリを追加するには

bm -a /path/to/a/dir tag

このディレクトリに移動するには

cdbm tag
5
HoboBen

echoは、ささいな引数でのみ使用される場合があります。そうでない場合、その動作は予測できない場合があります。他のすべての目的(制御文字、改行の抑制、書式設定)では、非常に強力で一貫性のあるprintfコマンドによって廃止されました。

5
jlliagre

cfdiskは、コマンドラインドライブパーティション分割ユーティリティfdiskの使いやすいアップグレードです。

5
Colin

glibcがインストールされている場所ならどこでもgetent passwd foo の代わりに grep foo /etc/passwd(同様にaliases ethers group hosts netgroup networks protocols rpc services shadow)-NISのセットアップでも、Dight The Right Thing(TM)を実行します。

5
ephemient

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)は魔法のように機能します。

5
ephemient

これが質問に対する答えなのか、単なる編集なのかはわかりません。

Lessをテール置換として使用する前に、何か「/ search_string」を検索し、Followコマンド(shift-F)を呼び出すことができます。これで、スクロールする「search_strings」が強調表示されます。これは、大量のプログラム出力またはログをスキャンしていて、特定の文字列またはパターンを探している場合に便利です。

正規表現も使用できることを忘れないでください!

5
Harvey

ifconfigおよびiwconfigは、ルーティング、デバイス、ポリシールーティング、トンネルを表示/操作するための非常に強力なツールであるipの代わりに廃止されました。

5
Federico

Findの代わりとして、locateが本当に好きです。「find/-name filepattern -print」よりも「locate filepattern」を使用する方がはるかに簡単で、インデックスデータベースを使用するため、より効率的です。

Locateデータベースを更新するには、updatedbコマンドをスケジュールに従って実行する必要があります。詳細については、ディストリビューションのマニュアルページを参照してください。

4
gareth_bowles

tmux over screentmuxは設定が非常に簡単で、面白くさえありません。

4
bajafresh4life

Perl PiePerl -pi -e 's/foo/bar/' の代わりに sed 's/foo/bar/'、より強力な perlre 構文。 (Perlの正規表現は、たとえば? の代わりに \?。)

4
Jo Liss

Wcalcはbcの素敵な代替品であることがわかりました

3
Draemon

innotail

Tailに似ていますが、ファイルシステムをポーリングする代わりにinotifyファイル変更通知を使用します。スクロールがより滑らかに見えます。

2
jds

ただし、「tail -f」に代わるものはまだありません。ライブテストのためにログをフィルタリングする必要がある場合in realtime、lessは「tail -f | grep xxxxx '。

2
MadCoder

それが完璧な代替品かどうかはわかりませんが、「xtail」は「tail」の本当に素晴らしい改善です。
複数のファイルを同時に監視できます。割り込みキー(一般的にはCTRL + C)を押すと、どのファイルがどれだけ変更されたかの概要が表示されます。

1

私は個人的に病気でした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
1
Julien Palard

これが「時代遅れ」であるかどうかはわかりませんが、私の意見では、awksedを完全に冗長にします。

1
JCCyC

ar(1)アーカイブ; tarが代わりにほとんど常に使用されます。 arは、引き続きいくつかの制限された用途があります。 .debパッケージファイルは実際にはarアーカイブであり、静的コンパイルに使用される.aライブラリライブラリは実際にはar多数の.oオブジェクトファイルを含むアーカイブです。

基本的に、arが使用されるいくつかの場所では、その存在は隠されます。

1
Simon Howard

圧縮-gzipに置き換えられました(デフォルトで従来のUnixシステムでも使用可能になりました)。 .Zファイルを処理できます。さらに重要なことは、gzipの方が圧縮よりも高速で、作成される出力が小さいことです。

1
Zathrus

私はMadCoderに同意します。「tail -f」を使用すると、パイプを使用して物事を接続できますが、できません。ただし、対話型セッションの方が簡単です。厳密に言えば、これは代替ではありません。

しかし、他のことがあります。たとえば、vimはviに置き換わり、PCの世界のほぼすべての場所で、nanoはpicoに置き換わります(優れているからではなく、無料であるため)。 Bashが支配的になり、shに取って代わりました。リストはいつまでも続くことができます:)

0
PolyThinker