Come posso visualizzare il contenuto di un file di testo sulla riga di comando?


132

Vorrei visualizzare il contenuto di un file di testo sulla riga di comando. Il file contiene solo 5-6 caratteri. C'è un modo semplice per farlo?

Risposte:


195

utilizzando cat

Poiché il tuo file è breve, puoi usarlo cat.

cat filename

utilizzando less

Se è necessario visualizzare il contenuto di un file più lungo, è possibile utilizzare un cercapersone come less.

less filename

Puoi farti lesscomportare come catse invocato su piccoli file e comportarti normalmente altrimenti passandogli i flag -Fe -X.

less -FX filename

Ho un alias per less -FX. Puoi crearne uno così:

alias aliasname='less -FX'

Se aggiungi l'alias alla configurazione della shell , puoi usarlo per sempre.

utilizzando od

Se il file contiene caratteri strani o non stampabili, è possibile utilizzare odper esaminare i caratteri. Per esempio,

$ 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

+1, sed -n l filepotrebbe anche essere utile.
enzotib,

1
Ha lessdei chiari vantaggi rispetto ad altri programmi cercapersone pgo si riduce alle preferenze personali?
Sam Weinberg,

@SamWeinberg: lessha più funzionalità di pg. Dai un'occhiata alle pagine man less(1)e pg(1). Ci sono anche altri cercapersone. Dai un'occhiata a unix.stackexchange.com/questions/81129/… . lessè probabilmente il cercapersone più utilizzato ma quale si utilizza dipende dalle preferenze personali.

non dimenticare moree most!
Rudolf Olah,

29

Anche se tutti usano cat filenameper stampare un file di testo per l'output primo scopo è di serie con il gatto enating. Dalla pagina man di cat:

cat - concatena i file e stampa sull'output standard

Ora cat va bene per la stampa di file ma ci sono alternative:

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

Il ( )ritorno del valore di un'espressione, in questo caso il contenuto di nome di file che poi viene espansa $per echoo printf.

Aggiornare:

< filename

Questo fa esattamente quello che vuoi ed è facile da ricordare.

Ecco un esempio che ti consente di selezionare un file in un menu e quindi stamparlo.

#!/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

Per ulteriori letture:
BashPitfalls - file cat | sed s / foo / bar /> file
Bash Reference - Reindirizzamento


Il tuo aggiornamento: " < filenameè esattamente quello che vuoi, ..." è fuorviante. Nel complesso, sebbene si tratti di una discussione interessante sulle alternative, penso che catsia più semplice.
X Tian,

Bare < filenamenon visualizza il contenuto del file, ma lo cat filenamefa.
jarno,

Puoi usare tee < filenameanche tu .
jarno,

2
+1 per il echo "$(<filename)"basismo. Non abbastanza di questo qui.
Yokai,

Questa è un'ottima idea per usare Linux Internal Command con echo "$(<filename)". Grazie ...
Reza Harasani il

9

È possibile utilizzare il comando seguente per visualizzare il contenuto di un file di testo.

nome file cat 

Per ulteriori informazioni su cat, eseguire man cat.

9

Gli strumenti per la gestione dei file di testo su unix sono comandi di base di tutti i giorni:

In unix e Linux per stampare l'intero contenuto nel file

cat filename.txt

o

more filename.txt

o

less filename.txt

Per le ultime righe

tail filename.txt

Per le prime righe

head filename.txt

4

Un'opzione è usare more

per esempio more file.txt

Tuttavia non ha tutte le funzionalità aggiunte da less.
Un semplice esempio è che non è possibile scorrere indietro nell'output. Generalmente è stato superato da meno - che è stato chiamato per scherzo perché

meno è meglio


3

Uso sempre $ less "your file here", poiché è molto semplice, fornisce un grepcomando interattivo integrato e ti dà un'interfaccia facile da usare che puoi scorrere con i tasti freccia.

(È anche incluso in quasi tutti i sistemi * nix)


lessè la versione overkill di more(confronta man lesscon man more), e per me ha due fastidiose funzionalità: 1) passa al buffer dello schermo alternativo, quando meno termina, il file che stavi visualizzando svanisce 2) su EOF devi digitare esplicitamente q(Lo so, c'è un'opzione per questo). Quindi una delle mie prime azioni in un nuovo ambiente è l'impostazione export PAGER=/bin/morenel mio profilo e l'utilizzo in moreogni momento.
ott--

@ ott--: 1) Prova la -Xbandiera. 2) Prova la -Ebandiera. lessha una moremodalità di emulazione. È possibile abilitarlo impostando la LESS_IS_MOREvariabile ambientale. È possibile scorrere verso l'alto nella moremodalità di emulazione.


Sebbene, in generale, concordo sul fatto che lesssia eccessivamente complicato. La sua capacità di eseguire comandi esterni è un esempio perfetto della sua eccessiva complessità.

@EvanTeitelman Ho sempre trovato la funzionalità grep estremamente utile, @ ott-- Trovo che a causa della sua emulazione more, e delle sue molte funzionalità aggiuntive, fa molto bene il lavoro.
SG60

2

Se si tratta di un file di grandi dimensioni e si desidera cercare una parte specifica, è possibile utilizzare

 cat filename | grep text_to_search -ni 

Inoltre puoi usare un editor Vim più interattivo (o un editor vi se non hai Vim):

 vim filename
Or
 vi filename

Vim / vi è un ottimo editor, può anche essere usato come lettore in "Modalità normale" o usando l'opzione -R, ha molte caratteristiche che ti aiuteranno a sfogliare il file.


Più corto per vim -Rè view. Ma tieni presente che non gli piacciono i reindirizzamenti, come discusso in xargs e vi - "L'input non proviene da un terminale" .
arte

grazie @manatwork per l'heads up! Di recente ho iniziato a utilizzare Vim e mi piace per le sue numerose funzionalità. Per quanto riguarda i reindirizzamenti, me ne sono dimenticato, grazie per il promemoria. A partire da ora, sto lavorando su una VM remota, dove uso ssh senza interfaccia GUI, quindi Vim è di grande utilità, quando nessun altro editor GUI non può funzionare, ecco perché ho sottolineato Vim qui.
Non preoccuparti bambino,

1

Utilizzare il comando cat per visualizzare il contenuto del nome file. nome file cat

Utilizzare il comando vim per modificare il file. nome file vim

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.