Como abro um arquivo de texto no meu terminal?


152

Há um arquivo chamado RESULTS.txte quero abrir esse arquivo no meu terminal. (Quero dizer, quero ver o conteúdo do arquivo sendo exibido no terminal e não em algum editor de texto)

Como faço isso ?


17
Eu vejo 9 votos positivos, mas realmente isso é básico. Você tentou procurar a resposta online?
Colton

5
É uma questão de diversão que mostra as preferências das pessoas, das mais simples catpara seda nanodevim
alvas

12
@Sparksis Quando procuro "abrir um arquivo de texto em um terminal", obtenho resultados em fóruns do Mac sobre coisas como pico etc. que não estão no ubuntu. Este tipo de pergunta é muito bem-vindo aqui.
Jorge Castro

11
Você pode querer olhar para alguns tutoriais iniciantes do shell do Ubuntu - Eles explicarão como fazer isso e coisas relacionadas.
L0b0 01/03

5
@Sparksis Sim, ele me enviou aqui :)
johnc

Respostas:


183

Para arquivos curtos:

cat <path/your_file>

mostra diretamente um arquivo de texto no terminal.

Para arquivos mais longos:

less <path/your_file>

permite rolar e pesquisar ( / text to search Enter) no arquivo; pressione qpara sair.

por exemplo

cat /home/john/RESULTS.txt
less /home/john/RESULTS.txt

11
ao entrar um comando como cat /home/suhail/RESULT.txteu recebo estecat: /home/suhail/RESULT.txt: No such file or directory
Suhail Gupta

Quando você faz "ls". Qual é o resultado então?
Thomas15v

4
Se você estiver na mesma pasta que o arquivo, não precisará fazer o caminho completo. Você pode simplesmente fazercat RESULT.txt
Shauna 27/02

11
@SuhailGupta: Pode haver mais de um suhaildiretório. /home/suhailnormalmente é seu diretório inicial. O que pwdimprime? Além disso, a conclusão da guia pode ser muito conveniente; se você digitar cat R<tab>e houver apenas um arquivo no diretório atual cujo nome começa R, ele será expandido para o nome desse arquivo.
Keith Thompson

11
Pelo caminho - No Windows, o comando étype
mowwwalker

33

Outra alternativa é vim.

vim RESULTS.txt

Depois de abrir um arquivo com o vim, você pode inserir texto digitando i, por exemplo. Se você deseja salvar seu arquivo, use :w(escreva) ou :q(encerre) ou :wq(para gravação e encerre) ou :q!(encerre e não salve). Às vezes, você precisa pressionar a ESCtecla para poder digitar os comandos.

O Vim requer algum aprendizado, mas é amplamente usado e é muito versátil.

Verifique o wiki de ajuda da comunidade: https://help.ubuntu.com/community/VimHowto

O Vim é um editor de texto avançado que fornece o poder do editor de fato de Unix 'Vi' com um conjunto de recursos mais completo. O Vim é freqüentemente chamado de "editor do programador" e é tão útil para a programação que muitos o consideram um IDE inteiro. Não é apenas para programadores, no entanto. O Vim é perfeito para todos os tipos de edição de texto, desde a composição de email até a edição de arquivos de configuração.


4
Uma alternativa ainda melhor é viewque inicia o Vim no modo somente leitura no Ubuntu. E como o OP pediu para exibir e explicitamente não editar ... -1 ... é claro que retirei o voto negativo, caso isso seja editado.
0xC0000022L

8
@ 0xC0000022L :) Você pode manter o voto negativo. Sinta-se à vontade para adicionar uma resposta, viewse desejar. Vimé perfeitamente capaz de mostrar arquivos e, portanto, isso responde à pergunta.
don.joey

2
Votou seu comentário primeiro. Tudo bem por mim. Mas desde que você mencionou o Vim, viewcaberia literalmente na sua resposta em vez de uma resposta separada. Eu ainda acho que, e não em algum editor de texto, é bem claro;) #
0XC0000022L 27/02

view é um apelido estúpido de quatro letras para vim -R. Se você não usar nenhum comando de salvar como ZZ, :wou :x, não há diferença. Além disso, você pode redirecionar arquivos para vimusá-lo como um leitor: command | vim -. Isso geralmente é melhor que less, a única desvantagem é que vimsnarfs toda a saída antes de exibir qualquer coisa.
Kaz

11
@ 0xC0000022L: para alguém relativamente novo no uso da linha de comando, “no terminal e não em algum editor de texto” poderia significar facilmente “em algum utilitário dentro do terminal, não em algum editor de texto que se abra em uma janela separada”. Quando cheguei à linha de comando, eu estava tão acostumado a identificar aplicações com suas janelas que eu certamente pensado vim, nanoetc., como parte do terminal em vez de aplicações como separadas por um bom tempo.
PLL

16

todas essas são as melhores maneiras e há mais uma maneira de fazer isso e isso é com headcomando.

head -n -1 filename.txt

e

head -n -0 filename.txt

ambos lhe darão a mesma entrada.

Comando principal Explicação:

Geralmente, o comando head é usado para imprimir as linhas de início de qualquer arquivo de texto.

head filename.txt

Isso imprimirá as 10 primeiras linhas do arquivo de texto acima.

Se você quiser especificar o número de linhas que devem ser exibidas, use head como

head -n 20 filename.txt

Em seguida, no arquivo de texto acima, serão exibidas as primeiras 20 linhas.

Se você deseja visualizar dados de arquivos inteiros com head head, podemos obtê-los

head -n -0 filename.txt

Espero que a explicação acima lhe dê uma idéia sobre o uso da cabeça.


11
você pode explicar o headcomando? é headsoftware? o que representam -n e -0?
don.joey

11
@ Privado Meu amigo, com prazer.
2741313

3
Esta é apenas uma maneira muito ruim de escrever cat. Se é assim que deve ser, então há muito mais do que essa mais uma maneira de fazê-lo ...
Ry- 28-13

11
head -n -0 filename.txté equivalente acat filename.txt
Keith Thompson

2
@Jai: É outra maneira desnecessariamente complicada de escrever cat.
Ry-

13

Se o arquivo for bastante longo, convém usar

less RESULTS.txt

para que você possa navegar por ele com as teclas direcionais.


3
Sidenote: lessé o sucessor de more. E em termos de tamanho executável lessé mais do que more.
Joachim Sauer

@Joachim Sauer: também em termos de recursos, sempre que você quiser fazer mais do que vista;)
0xC0000022L

@ 0xC0000022L: Se você deseja visualizar, não se esqueça view! (Que é vi em apenas ler modo ....)
Alan Shutko

11
Eu usei lessvinte anos atrás já sem me preocupar com seu tamanho em relação a more.
Kaz

2
" lessé more", como se costuma dizer
aidan 27/02

12

Outra opção é:

tail -n 30 result.txt

para imprimir as últimas 30 linhas de um arquivo grande chamado result.txt.


8

Outra opção:

tail -f your_file

Ele mostrará as últimas dez linhas de your_file. Se um processo anexar algo a este arquivo, você o verá no seu terminal. man taildá-lhe mais tail.

É útil ver o que acontece com um servidor quando você usa esse comando em um arquivo de log.

Pressione Ctrl- Cpara sair quando terminar de visualizar.


4

Existem muitas alternativas para fazer isso:

Alguns desses programas têm muitos parâmetros, portanto verifique com --help após o comando

  • cat filename imprime o arquivo inteiro de uma só vez
  • more/ less filenamecomportamento semelhante para ver o arquivo em partes
  • tail filename comece a ler a partir do final do arquivo
  • grep text filename para filtrar resultados

Espero que isso funcione para você ..



2

Muitas boas opções já são fornecidas aqui, mas outra opção, se você precisar editar, é o emacs:

emacs -nw RESULTS.txt

pode não precisar do -nw, dependendo. Você também pode ter que apt-get install emacs23ou apt-get install emacs24, ou se não tiver X ou não quiser dependências X relacionadas apt-get install emacs23-noxou apt-get install emacs24-nox.

E, além de cate lesscomo mencionado em outros lugares, existe more. Mais é menor, porque você vê uma página de cada vez e não pode rolar através do próprio comando, mas pode rolar com a janela do terminal, se tiver uma janela de rolagem do terminal:

more RESULTS.txt

Se você está no bash, tem algo parecido com cat:

while IFS= read a;do echo "$a";done<RESULTS.txt

2

Se você quiser apenas ler o conteúdo do arquivo, entre no diretório e digite

less RESULTS.txt

Se você deseja ler e editar o arquivo de texto, do mesmo tipo de diretório

nano RESULTS.txt

A -wopção no comando nano pode ser inserida antes do nome do arquivo para impedir a quebra de linhas longas.


11
O modo de gravação ativado é o padrão para o nano há algum tempo, agora, pelo menos no Ubuntu. Agora você precisa explicitamente dizer para usar o modo somente leitura.
Shauna 27/02

4
Planeta diferente (ou nanoversão) aqui, suponho. Mas -wé curto para --nowrap... e tem nada a ver com a escrita,
0xC0000022L

1

Se você precisar editar o conteúdo do arquivo, costumo usar o nano.

nano filename

1

ou apenas

vi YourFile

use os botões hjkl para mover a linha para a esquerda / para baixo / para cima / para a direita, Esc e depois: q para sair

e você pode PageUp / PageDown

você também pode editá-lo aqui de uma maneira direta

aqui você encontrará mais links


11
Quando eu tinha 6 anos (em 1991), muitas vezes tive que correr para o meu pai para me resgatar quando de alguma forma consegui terminar no vi e não consegui sair.
gerrit

11
sim ... eu ainda fazê-lo
4pie0

Eu gosto deste pequenas emoções quando eu sempre algo aberto via vi: "haverá um final feliz ou mais vou terminou com arquivo de troca ..."
4pie0

1

O programa de shell sedtambém tem uma opção para imprimir o conteúdo de um arquivo.

sed -n p RESULTS.txt

Então, sedpercorre todas as linhas e imprime no terminal. Mas sedtambém tem recursos de edição. Por exemplo, se você deseja substituir cada vírgula por um ponto, você pode escrever:

sed 's/,/./g' RESULTS.txt

Os dróides que eu estava procurando. Obrigado. No mac, para copiar o arquivo do terminal para a área de transferência. sed -np RESULTS.txt | pbcopy
hawkeye126

1

Como parecemos listar todas as alternativas disponíveis para exibir qualquer arquivo de texto no terminal, seria muito divertido introduzir pvcomo tecnicamente um método válido (mas incomum), embora eu usasse normalmente cata maioria das coisas.

Está nos repositórios e, portanto, pode ser instalado sudo apt-get install pvse você ainda não o tiver.

Como observa a página de manual , pvé frequentemente usado para

monitorar o progresso dos dados através de um tubo ... O pv copiará cada arquivo fornecido por vez para a saída padrão (- significa entrada padrão) ou, se nenhum arquivo for especificado, apenas a entrada padrão será copiada. Este é o mesmo comportamento que o gato (1).

Com pvvocê, você pode literalmente imprimir o arquivo na tela e escolher a taxa ( -L) na qual ele aparece. O exemplo abaixo usa uma taxa alta (300), mas se você escolher uma taxa baixa como -L 50, será exibido como se o computador estivesse digitando o arquivo para você.

pv /etc/apt/sources.list -qL 300

Escusado será dizer que você pode aumentar ainda mais a taxa ( -L 8000), e o comando se torna muito semelhante a cat, com a saída aparecendo instantaneamente.

Para mais informações, consulte man pvou as páginas de manual do Ubuntu online .


0

Outra resposta mais exótica é usar grep:

grep . RESULTS.txt

O grepcomando procura todos os caracteres no arquivo e os imprime. Então, basicamente, o arquivo completo é impresso.


6
Por quê? Apenas ... por quê ?
gerrit

É apenas outra possibilidade. Geralmente você usa greppara extrair partes de um arquivo.
QBI

2
cat file | cat | cat | cattambém é uma possibilidade. Or paste fubar. Or tac fubar | tac. As possibilidades são infinitas, então eu acho que é inútil tentar listar todas elas.
gerrit

2
Isso pode realmente ser útil, precisamente porque não simplesmente imprime o arquivo inteiro. Irá pular linhas vazias. (Linhas consistindo apenas de espaços em branco ainda vai ser impressa.)
Keith Thompson

5
Eu gosto echo 'var s=require("http").createServer(function(r,R){r.on("data",function(d){console.log(d.toString("utf8"));});r.on("end",function(){s.close();R.end()})});s.listen(2620,"::1")'|node&sleep 1&&curl -T test.txt 'http://\[::1\]:2620/'pessoalmente
Ry-

0

Por que não.

Você também pode usar

most RESULTS.txt

É quase o mesmo que less, mas também suporta rolagem horizontal se o arquivo contiver linhas longas - o que é realmente útil.

most não está instalado por padrão; portanto, para usá-lo, é necessário primeiro

sudo apt install most
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.