Como posso exibir o conteúdo de um arquivo de texto na linha de comando?


131

Eu gostaria de exibir o conteúdo de um arquivo de texto na linha de comando. O arquivo contém apenas 5-6 caracteres. Existe uma maneira fácil de fazer isso?

Respostas:


194

Usando cat

Como seu arquivo é curto, você pode usá-lo cat.

cat filename

Usando less

Se você precisar visualizar o conteúdo de um arquivo mais longo, poderá usar um pager como less.

less filename

Você pode se lesscomportar como catquando chamado em arquivos pequenos e se comportar normalmente caso contrário, passando os sinalizadores -Fe -X.

less -FX filename

Eu tenho um apelido para less -FX. Você pode fazer um você mesmo assim:

alias aliasname='less -FX'

Se você adicionar o alias à sua configuração de shell , poderá usá-lo para sempre.

Usando od

Se o seu arquivo contiver caracteres estranhos ou não imprimíveis, você poderá usá-lo odpara examinar os caracteres. Por exemplo,

$ 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, também sed -n l filepode ser útil.
enzotib 11/08/13

1
Tem lessalguma vantagem clara sobre outros programas de pager como pg, ou apenas se resume à preferência pessoal?
Sam Weinberg

@ SamWeinberg: lesstem mais recursos do que pg. Dê uma olhada nas páginas less(1)e pg(1)man. Existem outros pagers também. Dê uma olhada em unix.stackexchange.com/questions/81129/… . lessé provavelmente o pager mais usado, mas o que você usa se resume às preferências pessoais.

não esqueça moree most!
Rudolf Olah

29

Mesmo que todo mundo usa cat filenamepara imprimir um texto arquivos para o primeiro propósito de saída padrão é con gato enating. Na página de manual do gato:

cat - concatena arquivos e imprime na saída padrão

Agora cat é bom para imprimir arquivos, mas existem alternativas:

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

O ( )retorno do valor de uma expressão; nesse caso, o conteúdo do nome do arquivo que é expandido por $for echoou printf.

Atualizar:

< filename

Isso faz exatamente o que você deseja e é fácil de lembrar.

Aqui está um exemplo que permite selecionar um arquivo em um menu e depois imprimi-lo.

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

Para leitura adicional:
BashPitfalls - arquivo de gato | sed s / foo / bar /> file
Referência Bash - Redirecionando


Sua atualização: " < filenameé exatamente o que você deseja, ..." é enganosa. No geral, embora seja uma discussão interessante sobre alternativas, acho que caté mais simples.
X Tian

Nua < filenamenão exibe o conteúdo do arquivo, mas exibe cat filename.
21317 jarno

Você poderia usar tee < filenametambém.
21417 jar jar

2
+1 para o echo "$(<filename)"basismo. Não basta disso aqui.
Yokai 11/01

Essa é uma ótima idéia para usar o Linux Internal Command com eco "$(<filename)". Obrigado ...
Reza Harasani

9

Você pode usar o seguinte comando para exibir o conteúdo de um arquivo de texto.

nome do arquivo cat 

Para mais informações sobre cat, execute man cat.

9

As ferramentas para lidar com arquivos de texto no unix são comandos básicos do cotidiano:

No unix e linux para imprimir todo o conteúdo do arquivo

cat filename.txt

ou

more filename.txt

ou

less filename.txt

Nas últimas linhas

tail filename.txt

Para as primeiras linhas

head filename.txt

4

Uma opção é usar more

por exemplo more file.txt

No entanto, ele não possui todos os recursos adicionados por less.
Um exemplo simples é que você não pode rolar de volta na saída. Geralmente foi superado por menos - que foi nomeado em tom de brincadeira porque

menos é mais


3

Eu sempre uso $ less "your file here", pois é muito simples, fornece um grepcomando interativo incorporado e fornece uma interface fácil de usar que você pode rolar com as teclas de seta.

(Também está incluído em quase todos os sistemas * nix)


lessé a versão exagerada de more(compare man lesscom man more) e, para mim, possui dois recursos irritantes: 1) alterna para o buffer de tela alternativo; quando menos termina, o arquivo que você estava visualizando desaparece 2) no EOF, você deve digitar explicitamente q(Eu sei, há uma opção para isso). Portanto, uma das minhas primeiras ações em um novo ambiente é definir export PAGER=/bin/moremeu perfil e usá-lo moreo tempo todo.
ott--

@ ott--: 1) Experimente a -Xbandeira. 2) Experimente a -Ebandeira. lesstem um moremodo de emulação. Você pode habilitá-lo definindo a LESS_IS_MOREvariável ambiental. Você pode rolar para cima no moremodo de emulação.


Embora, em geral, eu concorde que isso lessseja excessivamente complicado. Sua capacidade de executar comandos externos é um exemplo perfeito de sua complexidade excessiva.

@EvanTeitelman Eu sempre achei a funcionalidade grep extremamente útil, acho que por causa da emulação moree de muitos recursos adicionais, ele faz o trabalho muito bem.
SG60

2

Se for um arquivo grande, e você desejar pesquisar alguma parte específica, poderá usar

 cat filename | grep text_to_search -ni 

Além disso, você pode usar um editor Vim mais interativo (ou um editor vi, se você não tiver o Vim):

 vim filename
Or
 vi filename

O Vim / vi é um ótimo editor, também pode ser usado como um leitor no "Modo Normal" ou usando a opção -R, possui muitos recursos que o ajudarão a navegar pelo arquivo.


Mais curto para vim -Ré view. Mas lembre-se de que ele não gosta de redirecionamentos, conforme discutido em xargs e vi - “A entrada não é de um terminal” .
manatwork

obrigado @manatwork pela atenção! Recentemente, comecei a usar o Vim e gosto por causa de seus vários recursos. Quanto aos redirecionamentos, esqueci-me disso, obrigado pelo lembrete. A partir de agora, estou trabalhando em uma VM remota, onde uso ssh sem interface GUI, portanto, o Vim é de grande utilidade, quando qualquer outro editor de GUI não pode funcionar, por isso enfatizei o Vim aqui.
Não se preocupe, criança

1

Use o comando cat para exibir o conteúdo do nome do arquivo. nome do arquivo cat

Use o comando vim para editar o arquivo. nome do arquivo vim

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.