cat (Unix) - cat (Unix)

gato
Cpuinfo sobre Intel Celeron M 410.png
Autor (es) original (is) Ken Thompson ,
Dennis Ritchie
Desenvolvedor (s) AT&T Bell Laboratories
lançamento inicial 3 de novembro de 1971 ; 49 anos atrás ( 1971-11-03 )
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

catfazia 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 catpacote 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 catleitura 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á catlido da entrada padrão naquele ponto da sequência. Se nenhum arquivo for especificado, catlê apenas a entrada padrão.

A sintaxe do comando é:

cat [options] [file_names]

Opções

Exemplo de algumas catopçõ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

catpode ser usado para canalizar um arquivo para um programa que espera texto simples ou dados binários em seu fluxo de entrada. catnã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 . catnã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, catfornece um meio eficaz de anexar arquivos. Os fluxos de vídeo podem ser um exemplo significativo de arquivos que catpodem 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:

  1. Para vomitar um arquivo inteiro na tela ou algum outro coletor de saída sem pausa (syn. Blast).
  2. 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 catabuso 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 catexemplos 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 catformulá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 catum ú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 catescrito 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 cattubos. 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