cat (Unix) - cat (Unix)
Autor (es) original (is) |
Ken Thompson , Dennis Ritchie |
---|---|
Desenvolvedor (s) | AT&T Bell Laboratories |
lançamento inicial | 3 de novembro de 1971 |
Sistema operacional | Unix , semelhante ao Unix , Plan 9 , Inferno , ReactOS |
Plataforma | Plataforma cruzada |
Modelo | Comando |
Licença |
coreutils : GPLv3 + ReactOS: GPLv2 |
cat
é um utilitário Unix padrão que lê arquivos sequencialmente, gravando-os na saída padrão . O nome é derivado de sua função para con gato arquivos Enate. Ele foi portado para vários sistemas operacionais.
História
cat
fazia parte das primeiras versões do Unix , por exemplo, Versão 1 , e substituiu pr
, um utilitário PDP-7 e Multics para copiar um único arquivo para a tela. Foi escrito por Ken Thompson e Dennis Ritchie . A versão do cat
pacote GNU coreutils foi escrita por Torbjorn Granlund e Richard Stallman . A versão ReactOS foi escrita por David Welch, Semyon Novikov e Hermès Bélusca.
Uso
A Especificação Única do Unix define a operação de cat
leitura de arquivos na sequência fornecida em seus argumentos, gravando seu conteúdo na saída padrão na mesma sequência. A especificação exige o suporte de um sinalizador de opção, u para saída sem buffer, o que significa que cada byte é escrito após ter sido lido. Alguns sistemas operacionais, como os que usam GNU Core Utilities , fazem isso por padrão e ignoram o sinalizador.
Se um dos nomes de arquivo de entrada for especificado como um único hífen ( - ), será cat
lido da entrada padrão naquele ponto da sequência. Se nenhum arquivo for especificado, cat
lê apenas a entrada padrão.
A sintaxe do comando é:
cat [options] [file_names]
Opções
Exemplo de algumas cat
opções:
- -b(GNU :) --number-nonblank, número de linhas de saída não em branco
- -eimplica, -vmas também exibe caracteres de fim de linha como$(GNU apenas: -Eo mesmo, mas sem implicar -v)
- -n(GNU :) --number, numere todas as linhas de saída
- -s(GNU --squeeze-blank:), aperte várias linhas em branco adjacentes
- -timplica -v, mas também exibe guias como^ I(GNU: -To mesmo, mas sem implicar -v)
- -uuse E / S sem buffer para stdout. POSIX não especifica o comportamento sem esta opção.
- -v(GNU --show-nonprinting:), exibe caracteres não imprimíveis, exceto para guias e o caractere de fim de linha
Casos de uso
cat
pode ser usado para canalizar um arquivo para um programa que espera texto simples ou dados binários em seu fluxo de entrada. cat
não destrói bytes não textuais ao concatenar e gerar. Como tal, seus dois principais casos de uso são arquivos de texto e certos tipos de arquivos binários compatíveis com o formato.
A concatenação de texto é limitada a arquivos de texto que usam a mesma codificação legada, como ASCII . cat
não fornece uma maneira de concatenar arquivos de texto Unicode que possuem uma Marca de Ordem de Byte ou arquivos que usam codificações de texto diferentes entre si.
Para muitos conjuntos de dados binários estruturados, o arquivo combinado resultante pode não ser válido; por exemplo, se um arquivo tiver um cabeçalho ou rodapé exclusivo, o resultado os duplicará de forma espúria. No entanto, para alguns formatos de contêiner digital de multimídia , o arquivo resultante é válido e, portanto, cat
fornece um meio eficaz de anexar arquivos. Os fluxos de vídeo podem ser um exemplo significativo de arquivos que cat
podem ser concatenados sem problemas, por exemplo, os formatos de fluxo de programa MPEG (MPEG-1 e MPEG-2) e DV (Vídeo Digital), que são fluxos de pacotes fundamentalmente simples.
Exemplos
Command | Explicação |
---|---|
cat file1.txt | Exibir o conteúdo do arquivo |
cat file1.txt file2.txt | Concatene dois arquivos de texto e exiba o resultado no terminal |
cat file1.txt file2.txt > newcombinedfile.txt | Concatene dois arquivos de texto e grave-os em um novo arquivo |
cat >newfile.txt | Crie um arquivo chamado newfile.txt. Digite a entrada desejada e pressione CTRL + D para finalizar. O texto estará no arquivo newfile.txt. |
cat -n file1.txt file2.txt > newnumberedfile.txt | Algumas implementações de cat, com a opção -n, também podem numerar linhas |
cat file1.txt > file2.txt | Copie o conteúdo de file1.txt em file2.txt |
cat file1.txt >> file2.txt | Anexe o conteúdo de file1.txt a file2.txt |
cat file1.txt file2.txt file3.txt | sort > test4 | Concatene os arquivos, classifique o conjunto completo de linhas e grave a saída em um arquivo recém-criado |
cat file1.txt file2.txt | less | Execute o programa "menos" com a concatenação de arquivo1 e arquivo2 como sua entrada |
command | cat | Cancelar o comportamento especial de "comando" (por exemplo, paginação) quando ele grava diretamente no TTY (cf. UUOC abaixo) |
Cultura Unix
Definição de arquivo de jargão
O Jargon File versão 4.4.7 lista isso como a definição de cat
:
- Para vomitar um arquivo inteiro na tela ou algum outro coletor de saída sem pausa (syn. Blast).
- Por extensão, despejar grandes quantidades de dados em um destino despreparado ou sem intenção de navegar com cuidado. Uso: considerado bobo. Raro fora de sites Unix. Veja também dd, BLT .
Entre os fãs de Unix, cat(1)é considerado um excelente exemplo de design de interface de usuário , porque entrega o conteúdo do arquivo sem verbosidade como espaçamento ou cabeçalhos entre os arquivos e porque não exige que os arquivos consistam em linhas de texto, mas funciona com qualquer tipo de dados.
Entre os críticos do Unix, cat(1)é considerado o exemplo canônico de um design de interface de usuário ruim, devido ao seu nome lamentavelmente pouco óbvio. É muito mais usado para converter um único arquivo para a saída padrão do que para concatenar dois ou mais arquivos. O nome catpara a antiga operação é tão intuitiva quanto, digamos, LISP s' cdr.
Uso inútil de gato
O uso inútil de cat ( UUOC ) é um jargão Unix comum para construções de linha de comando que fornecem apenas uma função de conveniência para o usuário. Na computação, a palavra "abuso", no segundo sentido da definição, é usada para denegrir o uso excessivo ou desnecessário de uma construção de linguagem; assim, o abuso de cat
às vezes é chamado de "abuso de gato". Exemplo de um cat
abuso comum é dado no prêmio:
cat filename | command arg1 arg2 argn
Isso pode ser reescrito usando o redirecionamento de stdin , em uma das seguintes formas (a primeira é mais tradicional):
command arg1 arg2 argn < filename <filename command arg1 arg2 argn
Além de outros benefícios, os formulários de redirecionamento de entrada permitem que o comando execute acesso aleatório ao arquivo, enquanto os cat
exemplos não. Isso ocorre porque o formulário de redirecionamento abre o arquivo como o descritor de arquivo stdin, que o comando pode acessar totalmente, enquanto o cat
formulário simplesmente fornece os dados como um fluxo de bytes.
Outro caso comum em que cat
é desnecessário é quando um comando é padronizado para operar em stdin, mas lerá de um arquivo, se o nome do arquivo for fornecido como um argumento. Esse é o caso de muitos comandos comuns; os exemplos a seguir
cat "$file" | grep "$pattern" cat "$file" | less
em vez disso, pode ser escrito como
grep "$pattern" "$file" less "$file"
Um uso interativo comum de cat
um único arquivo é a saída do conteúdo de um arquivo para a saída padrão. No entanto, se a saída for canalizada ou redirecionada, cat
é desnecessário.
Um cat
escrito com UUOC ainda pode ser preferido por motivos de legibilidade, visto que ler um fluxo canalizado da esquerda para a direita pode ser mais fácil de conceituar. Além disso, um uso incorreto do símbolo de redirecionamento ">" em vez de "<" (geralmente adjacente em teclados) pode excluir permanentemente o conteúdo de um arquivo, em outras palavras , clobbering , e uma maneira de evitar isso é usar cat
tubos. Comparar:
command < in | command2 > out <in command | command2 > out
com:
cat in | command | command2 > out
tac
tac é um comando do Linux que permite a visualização de arquivos linha por linha, começando da última linha. (tac não inverte o conteúdo de cada linha individual, apenas a ordem em que as linhas são apresentadas.) É nomeado por analogia com cat
.
Uso:
Usage: tac [OPTION]... [FILE]... Write each FILE to standard output, last line first. With no FILE, or when FILE is -, read standard input. Mandatory arguments to long options are mandatory for short options too. -b, --before attach the separator before instead of after -r, --regex interpret the separator as a regular expression -s, --separator=STRING use STRING as the separator instead of newline --help display this help and exit --version output version information and exit
Veja também
- colar
- split , um comando que divide um arquivo em pedaços que o gato pode juntar novamente.
- zcat
- menos
Referências
links externos
- The Single UNIX Specification , Issue 7 from The Open Group : concatenar e imprimir arquivos - Referência de comandos e utilitários,
- Estilo UNIX ou cat -v Considered Harmful - Um artigo de Rob Pike sobre o design adequado de comandos Unix usando cat como exemplo.
- cat (1) página de manual original na primeira edição do Unix .
- GNU Coreutils : concatenar e gravar arquivos - referência
- Manual de Comandos Gerais do OpenBSD : concatenar e imprimir arquivos -
- Manual de Comandos Gerais do FreeBSD -
- Plano 9 , Volume 1 - Manual do programador do
- GNU Coreutils : concatenar e gravar arquivos ao contrário - referência do