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
< filenamenão exibe o conteúdo do arquivo, mascat filenameo 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 lesscomman 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/moreem meu perfil e usarmoreo tempo todo. - @ ott–: 1) Experimente o sinalizador
-X. 2) Experimente o sinalizador-E.lesstem um modo de emulaçãomore. Você pode ativá-lo definindo a variável de ambienteLESS_IS_MORE. Você pode rolar para cima nomoremodo 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
moree ‘ 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 filepode ser útil.lesstem alguma vantagem clara sobre outros programas de pager comopg, ou simplesmente se resume à preferência pessoal?lesstem 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.moreemost!