web-dev-qa-db-fra.com

Quelles commandes Linux / Unix sont obsolètes et ont des alternatives puissantes?

Aujourd'hui, j'ai découvert que vous pouvez faire moins agir comme tail -f.

moins nom de fichier , puis appuyez sur Shift-F pour démarrer le mode suivi.

Tout comme la queue, mais vous avez toutes les fonctionnalités supplémentaires de moins - comme le défilement, la recherche et la mise en évidence des résultats de recherche.

Je regarde les fichiers journaux avec queue depuis des années.

Cela m'a fait réfléchir: existe-t-il d'autres commandes obsolètes et dotées d'alternatives puissantes?

Veuillez partager le bonheur - une seule commande par poste.

154
chickeninabiscuit

J'aime pointer mon ack, une alternative à grep pour les programmeurs.

http://betterthangrep.com/

Je suis surpris que les gens (y compris moi) vivent depuis si longtemps avec des alias pavés et des scripts Shell avec find & xargs.

57
Andy Lester

Essayez htop - top sur les stéroïdes.

Essayez multitail - tail sur les stéroïdes.

35
Arkady

Le plus évident:

moins c'est plus.

31
William

Pas exactement des remplacements pour quoi que ce soit, mais moreutils est une collection de petits outils Unixy, qui sont essentiellement destinés à combler les trous dans la boîte à outils * nix.

Depuis, vous ne vouliez qu'une seule commande par poste, je suppose que je devrai choisir une éponge , ce qui vous permet d'enregistrer la sortie d'un tuyau sur un des fichiers utilisés en entrée. IOW, il vous permet de modifier des fichiers sur place, sans avoir à vous soucier des fichiers temporaires.

Par exemple, si vous le faites:

grep 'something' somefile.txt > somefile.txt

somefile.txt finira vide. Donc, vous pouvez utiliser une éponge:

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

Rsync remplace/complète la plupart des méthodes de transfert de fichiers (scp, rcp, commandes tar canalisées, etc., et même cp dans de nombreux cas) de manière efficace et puissante.

En raison de sa polyvalence, il a beaucoup d'options. Mais je recommande vraiment d'apprendre au moins les bases de rsync.

26
matli

mtr est un remplacement traceroute (c'est une combinaison ping et traceroute).

Contrairement à traceroute, il trouve la route presque immédiatement (car il n'attend pas de réponse avant de passer au saut suivant).

La version en ligne de commande est installée par défaut dans Debian (package mtr-tiny).

21
Udi Meiri

Saisie semi-automatique contextuelle.

Eh bien, je sais, ce n'est pas une commande et il est peu probable qu'elle soit trouvée sur de nombreux Unices, mais Linux. Dans mon Ubuntu Hardy, bash_completion est déjà très bien configuré, ce qui signifie pas seulement pour les fichiers et les direcotires! Par exemple, si je tape

svn pr<TAB><TAB>

Je reçois:

praise    propdel   propedit  propget   proplist  propset

Et même

svn propget svn:k<TAB>

Je reçois automatiquement

svn propget svn:keywords

Il fonctionne également pour ant et make lisant automatiquement les fichiers par défaut ou ceux spécifiés sur la ligne de commande! C'est un véritable gain de temps!

16
Davide

La question et les balises sont contradictoires. Linux n'est pas Unix (stupide Open Group), et la plupart des "vraies" boîtes Unix n'ont rien à voir avec le logiciel que Linux possède. Par exemple, sur une installation AIX 5.3pl6 assez simple:

 $ moins 
 ksh: moins: introuvable. 

Et oui, j'administre ces systèmes, mais nous avons convenu de ne pas charger les composants non essentiels dans la plupart des cas, car nous en avons besoin pour correspondre aux systèmes déployés sur le terrain.

C'est génial d'avoir les nouveaux outils dans votre boîte à outils, mais si vous ne connaissez pas la méthode "old school" alors vous allez être dans un monde de mal si vous êtes sur AIX/Solaris/HP-UX/etc système qui n'a pas les nouveaux outils (et peut-être même pas bash).

Remarque, sur notre développement VM J'ai autant d'outils modernes installés que je peux en trouver, tout simplement parce que même si je peux travailler dans un environnement plus simple, cela ne signifie pas que j'en profite. Et je fais autant de travail que possible sur notre système Linux (CentOS 5), simplement parce que les outils qu'il contient sont encore plus récents que tout ce que je peux trouver facilement emballé pour AIX (Solaris est un peu mieux; HP-UX est infiniment pire).

15
Zathrus

rsh/rexec/rcp/etc. ont été supplantés par ssh/scp/etc.

15
ephemient

netcat devrait être universellement remplacé par socat .

13
ephemient

Sous Linux, ip (à partir du iproute2 package) se comporte de manière plus prévisible et donne une sortie plus facile à analyser que ifconfig/route.

11
ephemient

Cela vaut la peine de jeter un œil aux versions GNU de certaines commandes courantes, car elles ont tranquillement acquis des améliorations utiles au-delà des versions standard (XPG4, etc.).

Par exemple, grep récursif est beaucoup plus agréable que find | xargs grep.

En outre, find ... -print0 | xargs -0 ... Gère le problème de citation horrible de longue date qui empêche les xargs de gérer correctement les noms de fichiers remplis d'espace funky.

GNU tar prend les drapeaux "j" et "z" pour gérer directement les archives bzippées et gzippées.

Et l'alternative $() de bash aux raccourcis facilite la lecture et l'écriture des expressions imbriquées imbriquées.

11
fcw

pax est un remplacement de tar et cpio, avec un ensemble sain d'options de ligne de commande: -r pour lire à partir d'une archive, -w pour écrire dans une archive, -rw pour faire des copies d'arbre en arbre. Il fournit également un -s option pour vous permettre d'effectuer des substitutions sur les noms de fichiers avant de lire/écrire un fichier depuis/vers une archive. :-)

Edit: Mark Baker fait un point intéressant (dans les commentaires) que je devrais clarifier. pax crée des archives pax (qui sont une extension de ustar et peuvent être décompressées par la plupart des programmes tar) par défaut. Mais avec le -x option, il peut être fait pour créer des archives cpio et ustar (ces deux sont garantis par la norme). Certaines implémentations, comme celle de BSD, prennent en charge la création d'encore plus de types, tels que les archives à l'ancienne (pré - ustar) tar.

11
Chris Jester-Young

On pourrait dire que awk a été complètement obsolète par Perl.

Cependant, puisque j'utilisais awk depuis avant que Perl n'existe, je l'utilise toujours; quant aux scripts plus sérieux, j'utilise python au lieu de Perl.

10
tzot

atool : gestion des archives sans maux de tête

Quelques exemples:

  • aunpack archive.tgz Décompresse tous les fichiers de l'archive. Si l'auteur de l'archive était assez inconsidéré au point de placer plusieurs fichiers à la racine de l'archive, la commande crée automatiquement un répertoire et déplace les fichiers à l'intérieur.
  • aunpack -e archive1.tgz archive2.Zip Décompresse chaque archive.
  • apack archive.tar.bz2 * .txt Crée une nouvelle archive compressée contenant tous les fichiers texte dans le répertoire de travail actuel.
  • als archive.rar Affiche les noms des fichiers contenus dans l'archive.

Des exemples sont tirés de: http://debaday.debian.net/2008/12/28/atool-handling-archives-without-headaches/

10
Tarnay Kálmán

Dig est une meilleure alternative à nslookup.

9
dave1010

'renommer' est une bonne alternative aux longs oneliners que l'on écrit pour changer le nom en un tas de fichiers.

8

Pas vraiment un remplacement pour une commande obsolète en soi, mais l'écran est une excellente alternative à l'ouverture de plusieurs fenêtres de terminal et/ou à l'utilisation de bg, etc.

8
mmacaulay

Si vous utilisez un système GNU, n'utilisez pas sed '1!G;h;$!d'; utilisez plutôt tac.

6
ephemient

bm (link) , au lieu de popd et pushd ou de créer des alias temporaires, est vraiment utile.

Pour ajouter un répertoire à appeler avec la balise

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

Pour aller dans ce répertoire

cdbm tag
5
HoboBen

echo pourrait encore être utilisé uniquement avec des arguments triviaux sinon, son comportement pourrait être imprévisible. À toutes autres fins (caractères de contrôle, suppression de nouvelles lignes, formatage), il a été rendu obsolète par la commande printf, très puissante et cohérente.

5
jlliagre

cfdisk est une mise à niveau facile à utiliser de l'utilitaire de partitionnement de lecteur de ligne de commande fdisk.

5
Colin

Partout où glibc est installé, vous pouvez getent passwd foo au lieu de grep foo /etc/passwd (de même pour aliases ethers group hosts netgroup networks protocols rpc services shadow) - il fait même la bonne chose (TM) dans une configuration NIS.

5
ephemient

Pourquoi prendre la peine de taper gzip -dc foo.tar.gz | tar xf - Alors que tar xzf foo.tar.gz Fera apparaître le décompresseur pour vous?

Pour aller encore plus loin ... pourquoi s'embêter à taper tar xzf foo.tar.gz Ou tar xjf foo.tar.bz2 Alors que GNU tar détectera automatiquement la compression? tar xf foo.tar.(gz|bz2) fonctionne comme par magie.

5
ephemient

Je ne sais pas si cela devrait être une réponse ou simplement une modification de la question.

Avant d'utiliser less comme remplacement de queue, vous pouvez rechercher quelque chose "/ search_string" et ALORS invoquer la commande Follow (shift-F). Maintenant, toutes les "chaînes de recherche" qui défilent seront mises en évidence. Ceci est utile lorsque vous analysez un tas de sortie de programme ou de journaux et recherchez une chaîne ou un modèle particulier.

N'oubliez pas que vous pouvez également utiliser des expressions régulières!

5
Harvey

ifconfig et iwconfig sont déconseillés au profit de ip qui est un outil extrêmement puissant pour afficher/manipuler le routage, les périphériques, le routage des stratégies et les tunnels.

5
Federico

J'aime vraiment la localisation comme substitut de la recherche - beaucoup plus facile à utiliser "Locate Filepattern" que "find/-name filepattern -print", et plus efficace car il utilise une base de données d'index.

Vous devez exécuter la commande updatedb selon une planification pour mettre à jour la base de données de localisation; consultez la page de manuel de votre distribution pour plus de détails.

4
gareth_bowles

tmux sur screen. tmux est tellement plus facile à configurer, ce n'est même pas drôle.

4
bajafresh4life

Le Perl Pie : Perl -pi -e 's/foo/bar/' au lieu de sed 's/foo/bar/', avec la syntaxe beaucoup plus puissante perlre . (Ce n'est pas tout à fait un remplacement, car les expressions rationnelles Perl utilisent, par exemple, ? au lieu de \?.)

4
Jo Liss

Je trouve que wcalc est un bon remplacement pour bc

3
Draemon

innotail

Comme tail, mais utilise la notification de modification de fichier inotify au lieu d'interroger le système de fichiers. Cela rend le défilement plus fluide.

2
jds

Mais moins ne remplace toujours pas "queue -f". Si vous devez filtrer un journal en temps réel pour un test en direct, moins ne battra pas 'tail -f | grep xxxxx '.

2
MadCoder

Je ne sais pas si c'est un remplacement parfait, mais "xtail" est une très belle amélioration sur "tail".
Il peut surveiller plusieurs fichiers en même temps. Appuyer sur la touche d'interruption (généralement CTRL + C) vous donnera un résumé des fichiers modifiés de combien.

1
Daisuke Shimamoto

J'étais personnellement malade de taper tail -n 1000 ... | cut ... | sort | uniq -c | sort -gr | head pour obtenir un "top 10 de quelque chose" alors j'ai créé logtop, ça marche de la même façon, mais c'est en direct: tail -f ... | cut ... | logtop.

Exemple typique avec des journaux dont la 9ème colonne est le code de réponse 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

Je ne sais pas si cela peut être considéré comme "obsolète", mais à mon avis, awk rend sed totalement redondant.

1
JCCyC

ar (1) archives; tar est presque toujours utilisé à la place. ar continue d'avoir des utilisations limitées; Les fichiers de package .deb sont en fait des archives ar, par exemple, et les bibliothèques de bibliothèques .a utilisées pour la compilation statique sont en fait des archives ar contenant un tas de fichiers objets .o.

Essentiellement, dans les quelques endroits où ar est utilisé, son existence est cachée.

1
Simon Howard

compress - remplacé par gzip (même disponible par défaut sur les systèmes Unix traditionnels maintenant). Il peut gérer les fichiers .Z. Plus important encore, gzip est plus rapide et crée une sortie plus petite que compresser.

1
Zathrus

Je suis d'accord avec MadCoder que `tail -f 'vous permet de connecter des choses en utilisant un tuyau alors que moins ne peut pas. Mais moins est plus facile pour les sessions interactives, ce pour quoi il est conçu. Donc, à proprement parler, ce n'est pas un remplacement.

Mais d'autres choses peuvent l'être. Par exemple, vim a remplacé vi et ed pratiquement partout dans le monde PC, nano remplace pico (non pas parce que c'est mieux mais parce que c'est gratuit), mutt et pine ont essentiellement remplacé des choses comme `mail 'dans de nombreux endroits. Bash est maintenant dominant et a remplacé sh. La liste peut s'allonger indéfiniment :)

0
PolyThinker