J'avais l'habitude d'utiliser cat
pour afficher les fichiers. Ensuite, j'ai appris que less
est généralement mieux, et est un must si le fichier est plus long que quelques dizaines de lignes.
Ma question: Y a-t-il jamais une raison d'utiliser cat
au lieu de less
? Y a-t-il une situation où cat
est une meilleure solution?
Personnellement, je préfère view
pour le contenu statique ou tail -f
pour le contenu dynamique.
Cela ne répond cependant pas à votre question. Il y a un dicton "pourquoi utiliser plus si vous en avez moins" ;-)
Mais il y a des cas où je préfère le chat à moins: je travaille généralement avec des fenêtres X11. Ces fenêtres ont un tampon de défilement qui peut être réglé sur une centaine de lignes.
Faire un cat
pour - disons 200 lignes puis utiliser la souris avec la barre de défilement me semble plus confortable que d'utiliser less
dans ces cas.
Bien que les deux commandes vous permettent d'afficher le contenu d'un fichier, leurs objectifs d'origine sont assez différents.
less étend les capacités de plus . Ce dernier a été créé pour visualiser le contenu d'un fichier écran par écran. moins ajoute des fonctionnalités telles que les mouvements en arrière et une meilleure gestion de la mémoire (pas besoin de lire tout le fichier avant de pouvoir voir les premières lignes).
cat concatène les fichiers et imprime le résultat sur la sortie standard. Si vous ne fournissez qu'un seul fichier, vous verrez le contenu de ce fichier. Il devient "puissant" lorsque vous fournissez plusieurs fichiers. Un bon exemple est la combinaison de split et cat. La première commande divisera un gros fichier en petites portions. La seconde concaténera ensuite les petites portions en un seul fichier.
Revenons à votre question, cat serait préféré dans un script autonome nécessitant une lecture complète (ou concaténée) des fichiers sans interaction. En termes de visualisation de fichiers, je pense que c'est plus une question de goût.
J'utilise généralement cat
lorsque j'ai besoin de taper une commande basée sur quelque chose dans le fichier. cat
est plus pratique car vous pouvez voir le fichier (s'il est petit) pendant que vous avez accès à l'invite du shell. Il permet également de doubler les tuyaux.
Y a-t-il une situation où le chat est une meilleure solution?
Lorsque vous traitez plusieurs fichiers et que vous souhaitez les concaténer.
Depuis la page de manuel:
cat f - g
Output f's contents, then standard input, then g's contents.
Il y a des gens qui soutiennent violemment que le seul but de cat
est de con cat enate les fichiers. Pour toute autre utilisation, il y a more
(ou less
).
Mais cela ne prend pas en compte un fait assez important: cat
est un caractère de moins à taper. J'utilise ces commandes si souvent qu'un caractère de moins est une évidence.
ne autre raison est lorsque vous voulez créer un fichier. Je copie et colle souvent du texte du Web dans un fichier comme celui-ci (invite de commande montrée):
$ cat > filename
<Cmd-V>
<Ctrl-D>
$
Autrement dit, j'ouvre un fichier filename
pour l'accès en écriture, collez le contenu et fermez le flux en appuyant sur Ctrl-D. Ni less
ni more
ne peuvent le faire, et c'est plus rapide que d'ouvrir un éditeur.
Parfois, vous ne voulez pas la pagination que less
fait et vous voulez juste le fichier complet pour que vous utilisiez cat
.
J'utilise less -FX
, Ce qui fait que less
se comporte comme cat
lorsqu'un fichier peut être affiché sur un seul écran. A partir de la page de manuel less(1)
:
-F or --quit-if-one-screen
Causes less to automatically exit if the entire file can be dis-
played on the first screen.
-X or --no-init
Disables sending the termcap initialization and deinitialization
strings to the terminal. This is sometimes desirable if the
deinitialization string does something unnecessary, like clear-
ing the screen.
J'utilise cat
pour grep
(plusieurs) fichiers.
cat <filename1> [<filename2> <filename3>] | grep -i "string of interest"
Je sais que grep
prend en charge les noms de fichiers, mais si vous récupérez le même fichier pour des termes de recherche différents, il est plus facile de modifier une commande où le terme de recherche est la dernière chose sur la ligne que d'avoir à appuyer sur les touches Ctrl + flèche à travers la ligne.
cat
peut être utilisé pour concaténer plusieurs fichiers binaires en un seul:
cat data.001 data.002 data.003 > bigdata.dat
cat
reste à l'écran. Tout less
disparaît.
Clarifié par/pour Volker Siegel:
La sortie de cat
reste à l'écran. Tout ce qui est indiqué par less
disparaît après la fermeture.
Et less
n'est pas préinstallé sur toutes les distributions GNU/Linux. (par exemple. Gentoo) cat
est partout, probablement.
Je suppose qu'en raison de la rareté des variantes d'Unix maintenant, beaucoup de gens n'ont pas à administrer leurs systèmes (avec vengence). Lorsque les choses tournent mal, vous pourrez peut-être redémarrer et entrer dans votre système dans ce qu'on appelle un environnement restreint.
Vous obtenez une ligne de commande et accédez à un petit ensemble de commandes jugées utiles qui sont petites et généralement liées statiquement. Vous pouvez obtenir vi en tant qu'éditeur ou même le plus petit ed, mais pas emacs ni vim. Vous auriez du chat, mais pas moins. L'idée est de vous donner suffisamment d'outils pour réparer votre système sans prendre trop de ressources car ces ressources peuvent être mal configurées ou toutes utilisées. moins la maîtrise de ces circonstances est superflue.
Les deux sont différents. less
est un téléavertisseur non standard (more
est le standard), utilisé pour afficher du texte, tandis que cat
est un utilitaire standard, utilisé pour concaténer n'importe quel type et nombre de flux de données en un seul.
Ils peuvent sembler faire la même chose dans certaines circonstances, mais là encore, il en va de même pour d'autres utilitaires.
Il peut y avoir un problème avec l'escalade de privilèges, car dans 'moins' vous pouvez appuyer sur 'v' pour éditer un fichier ou '!' pour envoyer une commande Shell.
Vous souhaiterez peut-être autoriser certains utilisateurs à afficher un fichier qui ne peut être lu que par le superutilisateur, mais pas autoriser ces utilisateurs à modifier le fichier ou à utiliser les privilèges de superutilisateur en général. Vous pouvez le faire en éditant '/ etc/sudoers' pour leur permettre d'utiliser 'Sudo/bin/cat/etc/importantfile'. Vous ne voudriez pas autoriser 'Sudo/usr/bin/less/etc/importantfile', car ils pourraient utiliser 'v' pour éditer le fichier, ou utiliser '!' pour lancer un shell avec des privilèges de superutilisateur complets.
Bien sûr, les utilisateurs pourraient utiliser 'Sudo/bin/cat/etc/importantfile | moins 'et toujours utiliser' moins ', sans les risques de sécurité.
Piping cat via grep est utile:
cat <filename> | grep -i "string of interest"
Pour plus de commodité. chat a 3 caractères tandis que plus/moins ont 4 caractères. Et taper chat ne nécessite que votre main gauche.
Les deux 'moins' et 'plus' fonctionneront exactement comme 'cat' si la sortie n'est pas un terminal (tty), quant aux tuyaux et aux fichiers, ils reviendront tous les deux à aucune pagination.
Je pense qu'il est prudent de dire que "chat" est toujours présent sur n'importe quel système de type Unix que vous trouverez. La présence de "moins" et/ou "plus" sur n'importe quel système est moins prévisible.
Par conséquent, dans les scripts, si vous n'avez besoin que d'une opération de non-pagination, "cat" est sûr d'être présent partout où votre script est utilisé sur un système de type Unix.
En ce qui concerne la façon d'afficher les caractères à l'écran, less
peut faire ce que cat
peut faire; Et beaucoup plus.
Mais il y a une très bonne raison d'utiliser cat dans certains cas:less
est juste trop complexe pour le lancer sur des problèmes très simples. J'ai tellement d'options qu'il est difficile de trouver celles liées à cat
dans la page de manuel.
Vous voulez afficher les onglets dans un Makefile
?
Dans man cat
, la première option est -A
.
La description n'est pas utile: -vET
.
Mais le nom de l'option longue sonne juste: --show-all
.
Et cat -A Makefile
fait ce dont j'ai besoin.
Maintenant, allez trouver ça pour less
.