Comment puis-je afficher le contenu d'un fichier texte sur la ligne de commande?

132

Je voudrais afficher le contenu d'un fichier texte sur la ligne de commande. Le fichier ne contient que 5-6 caractères. Y a-t-il un moyen facile de faire ceci?

Sam Weinberg
la source

Réponses:

195

En utilisant cat

Depuis votre fichier est court, vous pouvez utiliser cat.

cat filename

En utilisant less

Si vous devez afficher le contenu d'un fichier plus long, vous pouvez utiliser un pageur tel que less.

less filename

Vous pouvez vous lesscomporter comme catsi vous étiez invoqué dans de petits fichiers et vous comporter normalement sinon en lui passant les indicateurs -Fet -X.

less -FX filename

J'ai un alias pour less -FX. Vous pouvez en faire un comme vous-même:

alias aliasname='less -FX'

Si vous ajoutez l'alias à votre configuration shell , vous pouvez l'utiliser indéfiniment.

En utilisant od

Si votre fichier contient des caractères étranges ou non imprimables, vous pouvez utiliser odpour examiner les caractères. Par exemple,

$ cat file
(ÐZ4 ?o=÷jï
$ od -c test
0000000 202 233   ( 320   K   j 357 024   J 017   h   Z   4 240   ?   o
0000020   = 367  \n
0000023

la source
+1, sed -n l filepourrait également être utile.
enzotib
1
A-t less- il des avantages évidents par rapport aux autres programmes de téléavertisseurs pg, ou est-ce que cela se résume à vos préférences personnelles?
Sam Weinberg
@SamWeinberg: lessa plus de fonctionnalités que pg. Jetez un oeil à la less(1)et pg(1)manpages. Il y a aussi d'autres téléavertisseurs. Jetez un coup d’œil à unix.stackexchange.com/questions/81129/… . lessest probablement le téléavertisseur le plus utilisé, mais celui que vous utilisez dépend de vos préférences personnelles.
n'oublie pas moreet most!
Rudolf Olah
29

Même si tout le monde utilise cat filenamepour imprimer un fichier texte à la sortie standard premier but est con cat enating. De la page de manuel du chat:

cat - concaténer des fichiers et imprimer sur la sortie standard

Maintenant, cat est bien pour imprimer des fichiers, mais il existe des alternatives:

  echo "$(<filename)"
or
  printf "%s" "$(<filename)"

Le ( )retourne la valeur d'une expression, dans ce cas le contenu du nom de fichier qui est ensuite développé par $pour echoou printf.

Mise à jour:

< filename

Cela fait exactement ce que vous voulez et est facile à retenir.

Voici un exemple qui vous permet de sélectionner un fichier dans un menu, puis de l’imprimer.

#!/bin/bash

select fname in *;
do
# Don't forget the "" around the second part, else newlines won't be printed
  printf "%s" "$(<$fname)"
  break
done

Pour en savoir plus:
BashPitfalls - Fichier cat | fichier sed s / foo / bar /> fichier
Bash Reference - Redirecting

crunk
la source
Votre mise à jour: " < filenameest exactement ce que vous voulez, ..." est trompeuse. Dans l’ensemble, bien qu’il s’agisse d’une discussion intéressante sur les solutions de rechange, je pense que catc’est plus simple.
X Tian
Bare < filenamen'affiche pas le contenu du fichier, mais le cat filenamefait.
jarno
Vous pouvez utiliser tee < filenameaussi.
jarno
2
+1 pour le echo "$(<filename)"bashisme. Pas assez de ça ici.
Yokai
C'est une excellente idée d'utiliser Linux Internal Command avec echo "$(<filename)". Merci ...
Reza Harasani
9

Vous pouvez utiliser la commande suivante pour afficher le contenu d'un fichier texte.

nom du fichier chat 
forvaidya
la source
Pour plus d'informations sur cat, exécutez man cat.
9

Les outils de gestion de fichiers texte sous Unix sont des commandes de base de tous les jours:

Sous Unix et Linux pour imprimer tout le contenu du fichier

cat filename.txt

ou

more filename.txt

ou

less filename.txt

Pour les dernières lignes

tail filename.txt

Pour les premières lignes

head filename.txt
Abhishek
la source
4

Une option consiste à utiliser more

par exemple more file.txt

Cependant, il n'a pas toutes les fonctionnalités ajoutées par less.
Un exemple simple est que vous ne pouvez pas revenir en arrière dans la sortie. Généralement, il a été surpassé par less - nommé en plaisanterie parce que

moins est plus

Michael Durrant
la source
3

J'utilise toujours $ less "your file here", car c'est très simple, une grepcommande interactive intégrée et une interface facile à utiliser que vous pouvez faire défiler à l'aide des touches fléchées.

(Il est également inclus sur presque tous les systèmes * nix)

SG60
la source
lessest la version overkill de more(comparer man lessavec man more), et pour moi il a deux fonctionnalités gênantes: 1) il bascule vers le tampon d’écran alternatif, quand moins de temps se termine, le fichier que vous venez de regarder disparaît 2) à EOF vous devez taper explicitement q(Je sais, il y a une option pour cela). Une de mes premières actions dans un nouvel environnement est donc de définir export PAGER=/bin/moreet d’utiliser moretout mon temps dans mon profil .
ott--
@ ott--: 1) Essayez le -Xdrapeau. 2) Essayez le -Edrapeau. lessa un moremode d'émulation. Vous pouvez l'activer en définissant la LESS_IS_MOREvariable d'environnement. Vous pouvez faire défiler vers le haut en moremode émulation.
Bien que, en général, je conviens que lessc'est trop compliqué. Sa capacité à exécuter des commandes externes est un exemple parfait de sa complexité excessive.
@ EvanTeitelman J'ai toujours trouvé la fonctionnalité grep extrêmement utile moi-même, @ ott-- Je trouve qu'en raison de son émulation more, et de nombreuses fonctionnalités supplémentaires, elle fait très bien son travail.
SG60
2

Si le fichier est volumineux et que vous souhaitez rechercher une partie spécifique, vous pouvez utiliser

 cat filename | grep text_to_search -ni 

Vous pouvez aussi utiliser un éditeur Vim plus interactif (ou un éditeur vi si vous n’avez pas Vim):

 vim filename
Or
 vi filename

Vim / vi est un excellent éditeur, peut également être utilisé en tant que lecteur en "Mode normal" ou en utilisant l'option -R, il possède de nombreuses fonctionnalités qui vous aideront à parcourir le fichier.

Ne vous inquiétez pas enfant
la source
Shorter pour vim -Rest view. Mais gardez à l'esprit qu'il n'aime pas les redirections, comme indiqué dans xargs et vi - «L'entrée ne provient pas d'un terminal» .
manatwork
merci @ manatwork pour le heads up! J'ai récemment commencé à utiliser Vim et je l'aime bien en raison de ses nombreuses fonctionnalités. En ce qui concerne les redirections, j'ai oublié ça, merci de me le rappeler. À l'heure actuelle, je travaille sur une machine virtuelle distante, où j'utilise ssh sans interface graphique. Par conséquent, Vim est très utile, lorsqu'un autre éditeur d'interface graphique ne peut pas fonctionner, c'est pourquoi j'ai souligné Vim ici.
Ne vous inquiétez pas Enfant
1

Utilisez la commande cat pour afficher le contenu du nom de fichier. nom du fichier chat

Utilisez la commande vim pour éditer le fichier. vim filename

Edward Shen
la source