Eu vi o comando cat aparecer em algumas coisas on-line e fiquei curioso sobre o que cat
fez e para que serve no contexto de alguém que está apenas fazendo algumas coisas simples na linha de comando.
Eu vi o comando cat aparecer em algumas coisas on-line e fiquei curioso sobre o que cat
fez e para que serve no contexto de alguém que está apenas fazendo algumas coisas simples na linha de comando.
Respostas:
cat
's principal objetivo é con gato arquivos Enate. cat file1 file2 ...
mostrará o conteúdo de file
, file2
e 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 tr
utilitá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
wc
que 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 - less
e more
ambos são eminentemente capazes de apresentar arquivos para visualização e são muito mais convenientes de usar.
cat
é um dos comandos mais frequentemente usados em sistemas operacionais semelhantes ao Unix. Possui três funções relacionadas a arquivos de texto:
A sintaxe geral do gato é:
cat [options] [filenames] [-] [filenames]
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
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
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
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:
cat
não está criando esses arquivos - o shell é quando você usa o redirecionamento. Você pode ter feito bem echo foo > file1
.
cat
que realmente está sendo feito por outra coisa. Por exemplo, fazer less file1 > file2
(ou grep '.*' file1 > file
ou awk 1 file1 > file2
ou ...) tem o mesmo efeito. O mesmo vale para 4. Estes são apenas mau uso.
> file
e dar o mesmo resultado, mas não posso considerar válido fazer isso com gato ?!
cat
não está criando o arquivo. Dizer cat
cria ou copia o arquivo é simplesmente falso.
Pode ser usado para mostrar o conteúdo de um arquivo. Por exemplo: cat "my file.txt"
. Você também pode fazer man cat
para mostrar os detalhes sobre o que cat
pode ser usado.
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 << EOF
produzirá as seguintes linhas até que a sequência EOF
seja 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
chmod +x
) se ele for criado com sucesso ( &&
).$
) deve ser escapado (com \
) na saída de cat
.
< <(cat file[12]) tr
assim como<<<$(cat file[12]) tr
as duas maneiras perfeitamente válidas de redirecionar vários arquivos. Claro que você também precisacat
disso, apenas que a tubulação não é a única maneira.