web-dev-qa-db-fra.com

Y a-t-il jamais une raison d'utiliser «chat» quand vous avez «moins»?

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?

63
Ram Rachum

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.

22
Nils

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.

95
nrolans

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.

23
Amir Rachum
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.
17
jasonwryan

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.

15
Konrad Rudolph

Parfois, vous ne voulez pas la pagination que less fait et vous voulez juste le fichier complet pour que vous utilisiez cat.

9
Mike Brentlinger

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.
4
user26112

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.

4
Fake Name

cat peut être utilisé pour concaténer plusieurs fichiers binaires en un seul:

cat data.001 data.002 data.003 > bigdata.dat
4
Michał Šrajer

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.

2
AWE

Et less n'est pas préinstallé sur toutes les distributions GNU/Linux. (par exemple. Gentoo) cat est partout, probablement.

2
xin

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.

2
Paddy3118

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.

1
Kusalananda

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é.

1
bgvaughan

Piping cat via grep est utile:

cat <filename> | grep -i "string of interest"
0
RobW

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.

0
lamwaiman1988

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.

0
user208007

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.

0
Volker Siegel