Para que é utilizado o 'gato'?

13

Eu vi o comando cat aparecer em algumas coisas on-line e fiquei curioso sobre o que catfez e para que serve no contexto de alguém que está apenas fazendo algumas coisas simples na linha de comando.

cosmoflop12
fonte

Respostas:

12

cat's principal objetivo é con gato arquivos Enate. cat file1 file2 ...mostrará o conteúdo de file, file2e os outros um após o outro, como se o conteúdo estivesse em um único arquivo. Veja a página de manual :

NAME
       cat - concatenate and print files

Destina-se ao uso onde:

  • um comando de destino não pode ler dos arquivos e você precisa passar vários arquivos para ele. Um exemplo é o trutilitário. Normalmente, com um arquivo, você faria:

    tr < file
    

    Mas com vários arquivos, o redirecionamento não pode ser usado, então você deve fazer:

    cat file1 file2 ... | tr
    
  • um comando de destino pode ler de vários arquivos, mas seu comportamento pode mudar quando receber vários arquivos. Um exemplo é o wcque imprime as contagens de cada arquivo, junto com os nomes dos arquivos, nos quais você pode querer apenas o total, sem um nome de arquivo.

Lembre-se que a maioria dos comandos que você encontrar ( grep, sed, awk, sort, ...) pode ler arquivos perfeitamente bem.

Se você deseja visualizar o conteúdo de um arquivo, use um pager - lesse moreambos são eminentemente capazes de apresentar arquivos para visualização e são muito mais convenientes de usar.

muru
fonte
O redirecionamento pode muito bem ser usado com vários arquivos, pois você pode combiná-lo com a substituição de processos e comandos: < <(cat file[12]) trassim como <<<$(cat file[12]) tras duas maneiras perfeitamente válidas de redirecionar vários arquivos. Claro que você também precisa catdisso, apenas que a tubulação não é a única maneira.
dessert
@dessert se você for pedante, esse redirecionamento ainda usa apenas um único arquivo - o arquivo que representa o stdout do comando (ou stdin, caso contrário). O Bash não suporta o redirecionamento de vários arquivos, como o zsh.
Muru
9

caté um dos comandos mais frequentemente usados ​​em sistemas operacionais semelhantes ao Unix. Possui três funções relacionadas a arquivos de texto:

  1. exibindo-os
  2. combinando cópias deles
  3. criando novos.
  4. Copiar arquivos

A sintaxe geral do gato é:

cat [options] [filenames] [-] [filenames]

Lendo arquivos

O uso mais comum do gato é ler o conteúdo dos arquivos, e o gato geralmente é o programa mais conveniente para esse fim. Tudo o que é necessário para abrir um arquivo de texto para visualização no monitor é digitar a palavra gato seguida de um espaço e o nome do arquivo e, em seguida, pressionar a tecla ENTER. Por exemplo, o seguinte exibirá o conteúdo de um arquivo chamado file1:

cat file1

Concatenação

O segundo papel do gato é a concatenação. (Esta é a fonte do nome curioso do gato.) Não há efeito nos arquivos originais.

Por exemplo, o comando a seguir concatenará cópias do conteúdo dos três arquivos file1, file2 e file3:

cat file1 file2 file3

O conteúdo de cada arquivo será exibido na tela do monitor. Essa saída poderia ser facilmente redirecionada usando o operador de redirecionamento de saída para outro arquivo, como file4, usando o seguinte:

cat file1 file2 file3 > file4

Criação de arquivo

Graças ao comentário do @muru : cat é capaz de criar novos arquivos, dependendo do recurso de redirecionamento de shell e não ele próprio

Para arquivos pequenos, isso geralmente é mais fácil do que usar o vi, gedit ou outros editores de texto. Isso é feito digitando cat, seguido pelo operador de redirecionamento de saída e o nome do arquivo a ser criado, pressionando ENTERe finalmente pressionando simultaneamente as teclas Ctrl& d.

Por exemplo, um novo arquivo chamado file1 pode ser criado digitando

cat > file1

depois pressione ENTERe simultaneamente pressione as teclas Ctrle d.

PS1: se um arquivo chamado file1 já existir, ele será substituído

PS2: você pode anexar ao arquivo encerrado usando o >>exemplo de operador acréscimo cat >> file1

Copiar arquivos

O comando cat também pode ser usado ( dependendo do recurso de redirecionamento de shell) para criar um novo arquivo e transferir para ele os dados de um arquivo existente. Exemplo: faça uma cópia do arquivo oldfile.txt:

cat oldfile.txt > newfile.txt

Referências:

Maythux
fonte
1
Re 3: catnão está criando esses arquivos - o shell é quando você usa o redirecionamento. Você pode ter feito bem echo foo > file1.
Muru
@muru Você está totalmente certo, mas ainda um uso de comando cat
Maythux
1
Não é não. Você está atribuindo o catque realmente está sendo feito por outra coisa. Por exemplo, fazer less file1 > file2(ou grep '.*' file1 > fileou awk 1 file1 > file2ou ...) tem o mesmo efeito. O mesmo vale para 4. Estes são apenas mau uso.
Muru
Eu sei que eu poderia usá-lo apenas > filee dar o mesmo resultado, mas não posso considerar válido fazer isso com gato ?!
Maythux
1
Você pode, se você especificar que catnão está criando o arquivo. Dizer catcria ou copia o arquivo é simplesmente falso.
muru
1

Pode ser usado para mostrar o conteúdo de um arquivo. Por exemplo: cat "my file.txt". Você também pode fazer man catpara mostrar os detalhes sobre o que catpode ser usado.

Puneet Gill
fonte
0

Aqui está outra maneira de criar arquivos usando o redirecionamento de shell (ou canalização) e cat:

cat << EOF > foo.sh
#!/bin/sh
echo 'Hello World!'
EOF

cat << EOFproduzirá as seguintes linhas até que a sequência EOFseja encontrada novamente. Então >( >>) redirecionará a saída para o arquivo foo.sh. Como alternativa, se você precisar criar um arquivo como root, poderá canalizar a saída para o comando tee( tee -a), executado pelo comando sudo:

cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
  • O exemplo acima tornará o arquivo executável ( chmod +x) se ele for criado com sucesso ( &&).
  • O significado especial de alguns caracteres (as $) deve ser escapado (com \) na saída de cat.
pa4080
fonte