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?
Resposta
Usando cat
Como seu arquivo é curto, você pode usar cat
.
cat filename
Usando less
Se você tiver que ver o conteúdo de um arquivo mais longo, você pode usar um pager como less
.
less filename
Você pode fazer com que less
se comporte como cat
quando invocado em arquivos pequenos e se comporte normalmente de outra forma passando -F
e -X
sinalizadores.
less -FX filename
Tenho um alias para less -FX
. Você pode criar um assim:
alias aliasname="less -FX"
Se você adicionar o alias à sua configuração de shell , você pode usá-lo para sempre.
Usando od
Se o seu arquivo contém caracteres estranhos ou não imprimíveis, você pode usar od
para 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
Comentários
Resposta
Mesmo que todos usem cat filename
para imprimir o texto de um arquivo na saída padrão, a primeira finalidade é con cat enating. Da página de manual do cat:
cat – concatenar arquivos e imprimir na saída padrão
Agora, cat é adequado para imprimir arquivos, mas existem alternativas:
echo "$(<filename)" or printf "%s" "$(<filename)"
O retorno ( )
o valor de uma expressão, neste caso o conteúdo de nome do arquivo que é expandido por $
para echo
ou printf
.
Atualização:
< 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 mais lendo:
BashPitfalls – arquivo cat | sed s / foo / bar /> arquivo
Referência Bash – Redirecionando
Comentários
- Sua atualização: ”
< filename
é exatamente o que quando você quiser, … ” é enganoso. No geral, embora esta seja uma discussão interessante sobre alternativas, acho quecat
é mais simples. - Bare
< filename
não exibe o conteúdo do arquivo, mascat filename
o faz. - Você também pode usar
tee < filename
. - +1 para o
echo "$(<filename)"
bashismo. Não é o suficiente aqui. - Essa ‘ é uma ótima ideia para usar o Comando interno do Linux com echo
"$(<filename)"
. Obrigado …
Resposta
As ferramentas para lidar com arquivos de texto no Unix são comandos básicos do dia a dia:
Em Unix e Linux para imprimir todo o conteúdo do arquivo
cat filename.txt
ou
more filename.txt
ou
less filename.txt
Para as últimas linhas
tail filename.txt
Para primeiras linhas
head filename.txt
Resposta
Você pode usar o seguinte comando para exibir o conteúdo de um arquivo de texto.
cat filename
Comentários
- Para obter mais informações sobre
cat
, executeman cat
.
Resposta
Uma opção é usar more
, por exemplomore file.txt
No entanto, não possui todos os recursos adicionados por less
.
Um exemplo simples é que você não pode “rolar para cima na saída. Geralmente foi superado por menos – que foi nomeado de brincadeira porque
menos é mais
Comentários
- Bela explicação sobre por que menos era o nome
Resposta
Eu sempre uso $ less "your file here"
, pois é muito simples, fornece um grep
comando e oferece 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)
Comentários
-
less
é a versão exagerada demore
(compareman less
comman more
) e, para mim, tem dois recursos irritantes: 1) ele muda para o buffer de tela alternativo, quando less termina, o arquivo que você estava visualizando desaparece 2) no EOF, você deve digitar explicitamenteq
(eu sei, existe ‘ s uma opção para isso). Portanto, uma das minhas primeiras ações em um novo ambiente é definirexport PAGER=/bin/more
em meu perfil e usarmore
o tempo todo. - @ ott–: 1) Experimente o sinalizador
-X
. 2) Experimente o sinalizador-E
.less
tem um modo de emulaçãomore
. Você pode ativá-lo definindo a variável de ambienteLESS_IS_MORE
. Você pode rolar para cima nomore
modo de emulação. - Veja também: unix.stackexchange.com/questions / 81129 / …
- Embora, em geral, eu concorde que
less
é excessivamente complicado. Sua capacidade de executar comandos externos é um exemplo perfeito de sua complexidade excessiva. - @EvanTeitelman I ‘ Eu sempre achei a funcionalidade grep extremamente útil, eu mesmo, @ott – Acho que por causa disso ‘ s emulação de
more
e ‘ s muitos recursos adicionais, faz o trabalho muito bem.
Resposta
Se for um arquivo grande, você deseja pesquisar alguma parte específica, você pode usar
cat filename | grep text_to_search -ni
Além disso, você pode usar um editor Vim mais interativo (ou 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, tem muitos recursos que irá ajudá-lo a navegar pelo arquivo.
Comentários
- Mais curto para
vim -R
éview
. Mas tenha em mente que ele não gosta de redirecionamentos, conforme discutido em xargs e vi – “A entrada não é de um terminal” . - obrigado @manatwork para o alerta! Recentemente comecei a usar o Vim e gosto dele por causa de seus vários recursos. Em relação aos redirecionamentos, esqueci-me disso, obrigado pelo lembrete. No momento, 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, que ‘ s por que enfatizei o Vim aqui.
Resposta
Use o comando cat para exibir o conteúdo do nome do arquivo. cat filename
Use o comando vim para editar o arquivo. nome do arquivo vim
sed -n l file
pode ser útil.less
tem alguma vantagem clara sobre outros programas de pager comopg
, ou simplesmente se resume à preferência pessoal?less
tem mais recursos do quepg
. Dê uma olhada emless(1)
epg(1)
páginas de manual. 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 à preferência pessoal.more
emost
!