Admin Linux - Comando cat
o catcomando é usado para concatenar arquivos e imprimir na saída padrão. Anteriormente, demonstramos usos e abusos com o comando cat. servidores cat para as seguintes finalidades distintas -
Mostrar o conteúdo dos arquivos
Grava o conteúdo de um arquivo em outro arquivo
Combine vários arquivos em um único arquivo
Suporte a recursos especiais: adição de números de linha, exibição de caracteres especiais, eliminação de linhas em branco
Interruptor | Açao |
---|---|
-b | Número de linhas não vazias |
-E | Mostrar finais de linha |
-T | Mostrar abas |
-s | Aperte em branco, suprima linhas vazias repetidas |
Conforme observado anteriormente, ao usar utilitários como grep , sort e uniq , queremos evitar o piping de saída de cat, se possível. Fizemos isso para uma demonstração simples dos comandos de tubulação anteriormente. No entanto, saber quando realizar uma operação com um utilitário como o grep é o que separa os administradores Linux dos usuários finais do Linux.
Mau hábito
[[email protected] centos]# cat /etc/passwd | sort -t: -k1 | grep ":0"
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[[email protected] centos]#
Bom hábito
[[email protected] centos]# grep ":0" /etc/passwd | sort -t: -k 1
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[[email protected] centos]#
Note - direcionar cat para comandos secundários como sort ou grep só deve ser feito quando for necessário.
Um uso comum de cat é ao lidar com quebras de linha formatadas do Windows. Linux e Windows por design interno, usam um código de controle diferente para representar o fim da linha (EOL) -
* Linux line break is always a Line Feed: LF or depicted as "\n".
* Windows is Carriage Return followed by a Line Feed: CR LF or depicted as "\r\n".
* Macintosh, in all moderne releases of OS X and now macOS, has adopted the Linux/Unix
standard of LF or "\n"
Então, digamos que abrimos nosso arquivo em um editor de texto GUI como o gedit ou estamos enfrentando problemas aleatórios ao aplicar comandos de filtragem. O texto aparece em uma única linha ou os comandos de filtragem não funcionam conforme o esperado.
Especialmente, quando o arquivo de texto foi baixado da Internet, queremos verificar as quebras de linha. A seguir está um exemplo de saída de cat mostrando caracteres EOL.
[[email protected] centos]# cat -E ./Desktop/WinNames.txt
$ed:Daniel:101
$enny:Colon:608
$ana:Maxwell:602
$arian:Little:903
$obbie:Chapman:403
$icolas:Singleton:203
$ale:Barton:901
Observe o anterior "$"em cada linha? O Linux está lendo o CR" \ n ", quebrando o arquivo. Em seguida, traduz um retorno de carro sobre o primeiro caractere de cada arquivo.
Quando visualizado sem a opção -E, o arquivo parece bom -
[[email protected] centos]# cat ./Desktop/WinNames.txt
Ted:Daniel:101
Jenny:Colon:608
Dana:Maxwell:602
Marian:Little:903
Bobbie:Chapman:403
Nicolas:Singleton:203
Dale:Barton:901
Felizmente, com os comandos de filtragem do Linux, essa é uma solução fácil -
[[email protected] centos]# sed -i 's/\r$//g' ./Desktop/WinNames.txt
[[email protected] centos]# cat -E ./Desktop/WinNames.txt
Ted:Daniel:101$
Jenny:Colon:608$
Dana:Maxwell:602$
Note - Quando visualizado com a opção -E, todas as quebras de linha do Linux terminarão em $.
cat também pode ser usado para combinar vários arquivos em um único arquivo.
[[email protected] centos]# cat linux.txt
CentOS
Ubuntu
Red Hat
Suse
Debian
[[email protected] centos]# cat windwos.txt
NT 3.5
NT 4.0
Server 2000
Server 2003
Server 2008
Server 2012
Server 2016
[[email protected] centos]#
Agora vamos usar cat para combinar os dois arquivos.
[[email protected] centos]# cat windwos.txt linux.txt > server_class_operating_sytems.txt
[[email protected] centos]# cat server_class_operating_sytems.txt
NT 3.5
NT 4.0
Server 2000
Server 2003
Server 2008
Server 2012
Server 2016
CentOS
Ubuntu
Red Hat
Suse
Debian
[[email protected] centos]#
Finalmente, podemos usar o -nmude para numerar cada linha de saída. Isso nos dará um total de linhas.
[[email protected] centos]# cat -n ./server_class_operating_sytems.txt
1 NT 3.5
2 NT 4.0
3 Server 2000
4 Server 2003
5 Server 2008
6 Server 2012
7 Server 2016
8 CentOS
9 Ubuntu
10 Red Hat
11 Suse
12 Debian [[email protected] centos]#