it-swarm.com.de

Welche Linux / Unix-Befehle sind veraltet und bieten leistungsstarke Alternativen?

Heute habe ich herausgefunden, dass Sie weniger wie Schwanz -f handeln können.

weniger Dateiname , drücken Sie dann Umschalt-F, um den Verfolgungsmodus zu starten.

Genau wie tail, aber Sie haben alle zusätzlichen Funktionen von less - wie Scrollen, Suchen und Hervorheben von Suchtreffern.

Ich beobachte seit Jahren Logdateien mit Schwanz.

Das hat mich nur zum Nachdenken gebracht: Gibt es andere Befehle, die veraltet sind und leistungsfähige Alternativen haben?

Bitte teilen Sie die Glückseligkeit - ein einziger Befehl pro Post.

154

Ich zeige gerne auf mein Ack, eine Alternative zu Grep für Programmierer.

http://betterthangrep.com/

Ich bin überrascht, dass Menschen (einschließlich mir) so lange mit zusammengeschusterten Aliasnamen und Shell-Skripten mit find & xargs gelebt haben.

57
Andy Lester

Versuchen Sie htop - top bei Steroiden.

Versuchen Sie Multitail - tail auf Steroiden.

35
Arkady

Der offensichtlichste:

weniger ist mehr.

31
William

Nicht gerade Ersatz für irgendetwas, aber moreutils ist eine Sammlung kleiner Unixy-Werkzeuge, die im Grunde genommen dazu gedacht sind, Löcher in der * nix-Toolbox zu füllen.

Da Sie nur einen Befehl pro Post wollten, muss ich wohl einen Schwamm auswählen, mit dem Sie die Ausgabe einer Pfeife in einem speichern können der als Eingabe verwendeten Dateien. Mit IOW können Sie Dateien direkt ändern, ohne sich um temporäre Dateien kümmern zu müssen.

Zum Beispiel, wenn Sie:

grep 'something' somefile.txt > somefile.txt

somefile.txt wird leer enden. Sie könnten also einen Schwamm verwenden:

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

Rsync ersetzt/ergänzt die meisten Dateiübertragungsmethoden (scp, rcp, Piped Tar-Befehle usw. und in vielen Fällen sogar cp) auf effiziente und leistungsstarke Weise.

Aufgrund seiner Vielseitigkeit hat es viele Möglichkeiten. Aber ich empfehle wirklich, zumindest die Grundlagen von Rsync zu lernen.

26
matli

mtr ist ein Traceroute Ersatz (es ist eine Kombination aus Ping und Traceroute).

Im Gegensatz zu traceroute findet es die Route fast sofort (da es nicht auf eine Antwort wartet, bevor es zum nächsten Hop wechselt).

Die Befehlszeilenversion wird standardmäßig in Debian installiert (Paket mtr-tiny).

21
Udi Meiri

Kontextsensitive Autovervollständigung.

Nun, ich weiß, es ist kein Befehl und es ist unwahrscheinlich, dass er auf vielen Unices gefunden wird, aber auf Linux. In meinem Ubuntu Hardy, bash_completion ist bereits sehr gut konfiguriert, und das bedeutet nicht nur für Dateien und Verzeichnisse! Zum Beispiel, wenn ich tippe

svn pr<TAB><TAB>

Ich bekomme:

praise    propdel   propedit  propget   proplist  propset

Und sogar

svn propget svn:k<TAB>

Ich bekomme automatisch

svn propget svn:keywords

Es funktioniert auch für ant und make, die automatisch die Standarddateien oder die in der Befehlszeile angegebenen lesen! Das spart echt Zeit!

16
Davide

Die Frage und Tags sind widersprüchlich. Linux ist nicht Unix (dumme Open Group), und die meisten "echten" Unix-Boxen haben keine Nähe zu der Software, die Linux macht. Beispiel für eine relativ einfache Installation von AIX 5.3pl6:

 $ less 
 ksh: less: not found. 

Ja, ich verwalte diese Systeme, aber wir haben vereinbart, in den meisten Fällen keine Nicht-Core-Komponenten zu laden, da wir sie benötigen, um sie an die im Feld implementierten Systeme anzupassen.

Es ist großartig, die neueren Tools in Ihrer Toolbox zu haben, aber wenn Sie die "alte Schule" nicht kennen, werden Sie in eine Welt der Verletzungen geraten, wenn Sie jemals mit AIX/Solaris/HP-UX arbeiten/etc System, das nicht die neueren Werkzeuge hat (und möglicherweise nicht einmal Bash hat).

Beachten Sie, dass bei unserer Entwicklung VM Ich habe so viele moderne Tools installiert, wie ich finden kann, einfach weil ich in einer einfacheren Umgebung arbeiten kann, aber das bedeutet nicht, dass es mir Spaß macht. Und ich arbeite so viel wie möglich auf unserem Linux-System (CentOS 5), einfach weil die Tools noch neuer sind als alles, was ich für AIX finden kann (Solaris ist etwas besser; HP-UX ist unendlich schlechter).

15
Zathrus

rsh/rexec/rcp/etc. wurden ersetzt durch ssh/scp/etc.

15
ephemient

netcat sollte allgemein durch socat ersetzt werden.

13
ephemient

Unter Linux ip (aus dem iproute2 package) verhält sich vorhersehbarer und bietet eine einfacher zu analysierende Ausgabe als ifconfig/route.

11
ephemient

Es lohnt sich, einen Blick auf die GNU) -Versionen einiger gängiger Befehle zu werfen, da sie im Hintergrund nützliche Verbesserungen erhalten haben, die über die Standardversionen (XPG4 usw.) hinausgehen.

Zum Beispiel ist rekursives grep viel schöner als find | xargs grep.

Außerdem behandelt find ... -print0 | xargs -0 ... Das seit langem bestehende schreckliche Anführungsproblem, das dazu führt, dass XARGs nicht ordnungsgemäß mit funky, mit Leerzeichen gefüllten Dateinamen umgehen können.

GNU tar verwendet die Flags 'j' und 'z', um bzipped und gzipped Archive direkt zu bearbeiten.

Und die $() -Alternative von bash zu Backticks erleichtert das Lesen und Schreiben des gelegentlich verschachtelten Ausdrucks in Anführungszeichen.

11
fcw

pax ist ein Ersatz für tar und cpio mit einer Reihe sinnvoller Befehlszeilenoptionen: -r um aus einem Archiv zu lesen, -w um in ein Archiv zu schreiben, -rw zum Kopieren von Baum zu Baum. Es bietet auch eine -s Option, mit der Sie Ersetzungen an Dateinamen vornehmen können, bevor Sie eine Datei aus einem Archiv lesen/in ein Archiv schreiben. :-)

Edit: Mark Baker macht einen interessanten Punkt (in Kommentaren), den ich klarstellen sollte. pax erstellt standardmäßig pax Archive (die eine Erweiterung von ustar sind und von den meisten tar Programmen entpackt werden können). Aber mit dem -x Option, es kann gemacht werden, um cpio Archive und ustar Archive zu erstellen (diese beiden sind durch den Standard garantiert). Einige Implementierungen, wie die BSD-Implementierung, unterstützen das Erstellen von noch mehr Typen, z. B. Archive im alten Stil (preustar) tar.

11

Man könnte sagen, dass awk durch Perl vollständig überholt wurde.

Da ich awk jedoch verwendet habe, bevor Perl existierte, verwende ich es immer noch. Bei ernsteren Skripten verwende ich python anstelle von Perl.

10
tzot

atool : Archive ohne Kopfschmerzen behandeln

Einige Beispiele:

  • aunpack archive.tgz Entpackt alle Dateien im Archiv. Wenn der Autor des Archivs so rücksichtslos war, dass mehrere Dateien im Stammverzeichnis des Archivs abgelegt wurden, erstellt der Befehl automatisch ein Verzeichnis und verschiebt die Dateien in dieses Verzeichnis.
  • aunpack -e archive1.tgz archive2.Zip Entpackt jedes Archiv.
  • apack archive.tar.bz2 * .txt Erstellt ein neues komprimiertes Archiv mit allen Textdateien im aktuellen Arbeitsverzeichnis.
  • als archive.rar Zeigt die Namen der im Archiv enthaltenen Dateien an.

Beispiele sind von: http://debaday.debian.net/2008/12/28/atool-handling-archives-without-headaches/

10
Tarnay Kálmán

Dig ist eine bessere Alternative zu nslookup.

9
dave1010

'Rename' ist eine gute Alternative zu den langen Onelinern, die man schreibt, um den Namen in eine Reihe von Dateien zu ändern.

8

Eigentlich kein Ersatz für einen veralteten Befehl, aber der Bildschirm ist eine großartige Alternative zum Öffnen mehrerer Terminalfenster und/oder zur Verwendung von BG usw.

8
mmacaulay

Wenn Sie auf einem GNU System arbeiten, verwenden Sie nicht sed '1!G;h;$!d'; Verwenden Sie stattdessen tac.

6
ephemient

bm (link) , anstatt popd und pushd oder temporäre Aliase zu erstellen, ist wirklich nützlich.

So fügen Sie ein Verzeichnis hinzu, das mit dem Tag aufgerufen werden soll

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

Um in dieses Verzeichnis zu gelangen

cdbm tag
5
HoboBen

echo wird möglicherweise nur mit einfachen Argumenten verwendet, da das Verhalten sonst möglicherweise nicht vorhersehbar ist. Für alle anderen Zwecke (Steuerzeichen, Unterdrückung neuer Zeilen, Formatierung) wurde es durch den sehr leistungsfähigen und konsistenten Befehl printf ersetzt.

5
jlliagre

cfdisk ist ein benutzerfreundliches Upgrade des Befehlszeilen-Partitionierungsdienstprogramms fdisk.

5
Colin

Wo immer glibc installiert ist, können Sie getent passwd foo Anstatt von grep foo /etc/passwd (ähnlich für aliases ethers group hosts netgroup networks protocols rpc services shadow) - in einem NIS-Setup wird sogar das Richtige getan.

5
ephemient

Warum sich die Mühe machen, gzip -dc foo.tar.gz | tar xf - Einzugeben, wenn tar xzf foo.tar.gz Den Dekomprimierer für Sie erzeugt?

Gehen Sie noch weiter ... warum geben Sie tar xzf foo.tar.gz Oder tar xjf foo.tar.bz2 Ein, wenn GNU tar die Komprimierung automatisch erkennt? tar xf foo.tar.(gz|bz2) funktioniert einfach magisch.

5
ephemient

Ich bin mir nicht sicher, ob dies eine Antwort oder lediglich eine Bearbeitung der Frage sein soll.

Bevor Sie less als Tail-Ersatz verwenden, können Sie nach "/ search_string" suchen und DANN den Befehl Follow (Umschalt-F) aufrufen. Jetzt werden alle "search_strings", an denen gescrollt wird, hervorgehoben. Dies ist nützlich, wenn Sie eine Reihe von Programmausgaben oder Protokollen scannen und nach einer bestimmten Zeichenfolge oder einem bestimmten Muster suchen.

Vergessen Sie nicht, dass Sie auch reguläre Ausdrücke verwenden können!

5
Harvey

ifconfig und iwconfig sind veraltet zugunsten von ip, einem äußerst leistungsstarken Tool zum Anzeigen/Bearbeiten von Routing, Geräten, Richtlinienrouting und Tunneln.

5
Federico

Ich mag locate als Ersatz für find - viel einfacher zu verwenden als find/-name filepattern -print und effizienter, weil es eine Indexdatenbank verwendet.

Sie müssen den Befehl updatedb nach einem Zeitplan ausführen, um die Datenbank locate zu aktualisieren. Überprüfen Sie die Manpage Ihrer Distribution auf Details.

4
gareth_bowles

tmux über screen. tmux ist so viel einfacher zu konfigurieren, dass es nicht einmal lustig ist.

4
bajafresh4life

Die Perl Pie : Perl -pi -e 's/foo/bar/' Anstatt von sed 's/foo/bar/', mit der viel mächtigeren perlre Syntax. (Dies ist kein einfacher Ersatz, da reguläre Ausdrücke in Perl beispielsweise ? Anstatt von \?.)

4
Jo Liss

Ich finde, dass wcalc ein netter Ersatz für bc ist

3
Draemon

Innotail

Wie tail, verwendet jedoch die Benachrichtigung über inotify-Dateiänderungen, anstatt das Dateisystem abzufragen. Dadurch wird das Scrollen geschmeidiger.

2
jds

Aber less ist immer noch kein Ersatz für 'tail -f'. Wenn Sie ein Protokoll filtern müssen in Echtzeit für einen Live-Test, schlägt weniger nicht 'tail -f | grep xxxxx '.

2
MadCoder

Ich bin mir nicht sicher, ob es ein perfekter Ersatz ist, aber "xtail" ist eine wirklich schöne Verbesserung gegenüber "tail".
Es können mehrere Dateien gleichzeitig überwacht werden. Durch Drücken der Interrupt-Taste (normalerweise STRG + C) erhalten Sie eine Zusammenfassung, welche Dateien sich um wie viel geändert haben.

1

Ich war persönlich krank, tail -n 1000 ... | cut ... | sort | uniq -c | sort -gr | head um eine "Top 10 von etwas" zu bekommen, habe ich logtop erstellt, es funktioniert genauso, aber es ist live: tail -f ... | cut ... | logtop.

Typisches Beispiel für Protokolle mit der 9. Spalte als HTTP-Antwortcode:

$ 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

Ich weiß nicht, ob dies als "veraltet" qualifiziert ist, aber meiner Meinung nach macht awksed völlig überflüssig.

1
JCCyC

ar (1) Archive; tar wird fast immer stattdessen verwendet. ar hat weiterhin einige eingeschränkte Verwendungen; .deb-Paketdateien sind tatsächlich ar Archive, und die .a-Bibliotheksbibliotheken, die für die statische Kompilierung verwendet werden, sind tatsächlich ar Archive, die eine Reihe von .o-Objektdateien enthalten.

Im Wesentlichen ist an den wenigen Stellen, an denen ar verwendet wird, seine Existenz verborgen.

1
Simon Howard

compress - ersetzt durch gzip (jetzt auch auf herkömmlichen Unix-Systemen standardmäßig verfügbar). Es kann mit .Z-Dateien umgehen. Vor allem ist gzip schneller und erzeugt eine geringere Ausgabe als compress.

1
Zathrus

Ich stimme MadCoder zu, dass mit tail -f Dinge über eine Pipe verbunden werden können, während dies mit less nicht möglich ist. Für interaktive Sitzungen ist jedoch weniger einfacher. Dafür wurde es entwickelt. Genau genommen ist dies kein Ersatz.

Aber andere Dinge können sein. Zum Beispiel ersetzte vim vi und ed praktisch überall in der PC-Welt, nano ersetzt pico (nicht weil es besser ist, sondern weil es kostenlos ist), mutt und pine ersetzten im Grunde an vielen Stellen Dinge wie "mail". Bash ist jetzt dominant und ersetzt sh. Die Liste kann für immer weitergehen :)

0
PolyThinker