Příkaz Cat je jedním ze základních příkazů, které jste se naučili, když jste začínali ve světě Unix / Linux.
Už víte, že kočka zobrazuje obsah souboru. Co víc může tento příkaz udělat?
Tento tutoriál poskytuje 10 praktických příkladů použití příkazu cat. Pravděpodobně jen málo z těchto příkladů pro vás může být nových. Nebo to pro vás může být jen osvěžení, pokud jste tyto příklady již znali.
1. Zobrazit obsah souboru
Když předáte název souboru jako argument pro cat, zobrazí se obsah souboru, jak je znázorněno níže.
$ cat program.pl #!/usr/bin/perl if( 2 ge 3) { print "greater\n"; }else { print "lesser\n"; }
Můžete také zobrazit obsah více než jednoho souboru, jak je uvedeno níže.
$ cat program.pl program2.pl #!/usr/bin/perl if( 2 ge 3) { print "greater\n"; }else { print "lesser\n"; } #!/usr/bin/perl @arr = qw(1 2 3); $ref = \@arr; print ref $ref;
2. Vytvořit nový soubor
Pomocí příkazu cat lze řádky přijaté z stdin přesměrovat do nového souboru pomocí symbolů přesměrování.
Když napíšete jednoduše příkaz cat bez jakýchkoli argumentů, pouze přijme obsah stdin a zobrazí jej ve stdout. Takže po napsání řádku jednou, když stisknete Enter, se stejný řádek vytiskne na následující řádek, jak je vidět níže.
$ cat cat command for file oriented operations. cat command for file oriented operations. cp command for copy files or directories. cp command for copy files or directories.
Můžete také přesměrovat stdout do nového souboru, jak je ukázáno níže.
$ cat >cmd_usage.txt cat command for file oriented operations. cp command for copy files or directories. $ cat cmd_usage.txt cat command for file oriented operations. cp command for copy files or directories.
Někdy možná budete muset přidat obsah k souboru, použijte>> symbol přesměrování, jak je uvedeno níže.
$ cat >>cmd_usage.txt ls command to list out file and directory with its attributes. $ cat cmd_usage.txt cat command for file oriented operations. cp command for copy files or directories. ls command to list out file and directory with its attributes.
3. Kopírovat obsah souboru
Symboly přesměrování v unixu hrají důležitou roli při zpracování obsahu standardního deskriptoru souboru. Pomocí něj můžete zkopírovat obsah jednoho souboru do druhého, jak je znázorněno níže.
$ cat program.pl >backup_prgm.pl
Jak je vidět výše, protože jsme použili přesměrování výstupu, obsah zobrazený ve standardním výstupu je přesměrován do nového souboru s názvem backup_pgrm.pl. Zobrazit obsah backup_pgrm.pl:
$ cat backup_pgrm.pl #!/usr/bin/perl if( 2 ge 3) { print "greater\n"; }else { print "lesser\n"; }
4. Zřetězit obsah více souborů
Pomocí příkazu cat budete moci zřetězit obsah více než jednoho souboru do nového souboru.
Například kódy z program.pl a program2.pl se sloučí do nového souboru all_pgrm.pl.
$ cat program.pl program2.pl >all_pgrm.pl
Jak je vidět výše, stdout se přesměruje a nový soubor byl vytvořen s obsahem program.pl a program2.pl. Ověřte obsah all_pgrm.pl:
$ cat all_pgrm.pl #!/usr/bin/perl if( 2 ge 3) { print "greater\n"; }else { print "lesser\n"; } #!/usr/bin/perl @arr = qw(1 2 3); $ref = \@arr; print ref $ref;
5. Zobrazit čísla řádků
Chcete-li zobrazit obsah souboru s číslem řádku před každým řádkem, použijte volbu -n. Následující příklad vytiskne číslo řádku pro řádky z program.pl,
$ cat -n program.pl 1 #!/usr/bin/perl 2 3 4 if( 2 ge 3) { 5 print "greater\n"; 6 } else { 7 print "lesser\n"; 8 } 9 10
Jak jste si všimli výše, i prázdné řádky jsou očíslovány. V případě číslování pouze neprázdných řádků použijte volbu -b následovně,
$ cat -b program.pl 1 #!/usr/bin/perl 2 3 if( 2 ge 3) { 4 print "greater\n"; 5 } else { 6 print "lesser\n"; 7 }
Všimněte si, že řádky, které obsahují mezery, nejsou považovány za prázdné řádky a totéž platí pro řádek s číslem 2.
6. Spojte obsah souboru spolu se vstupem ze Stdin
Je zde možnost číst řádky ze stdin spolu se zřetězením dalších souborů. Uživatel tedy může zadat svůj vlastní obsah, kdykoli je to požadováno.
V následujícím příkladu můžete při kombinování souborů na začátek vložit několik řádků (ze stdin).
$ cat - program.pl program2.pl >all_pgrm.pl Contents from file : program.pl, program2.pl
Jak je vidět výše, – je místo, kde můžete číst ze stdin, proto byl 1 řádek ze stdin vložen na začátek nového souboru s názvem all_pgrm.pl s druhým obsahem ze souborů program.pl a program2.pl:
$ cat -n all_pgrm.pl 1 Contents from file : program.pl, program2.pl 2 #!/usr/bin/perl 3 4 5 if( 2 ge 3) { 6 print "greater\n"; 7 } else { 8 print "lesser\n"; 9 } 10 11 12 #!/usr/bin/perl 13 14 @arr = qw(1 2 3); 15 $ref = \@arr; 16 print ref $ref;
7. Nezobrazovat opakované prázdné výstupní řádky
Někdy by soubor obsahoval opakované prázdné řádky, které nechcete při vypisování zobrazovat ve stdout. Příkaz cat poskytuje volbu nazvanou -s, která potlačí po sobě jdoucí prázdné výstupní řádky do jednoho a zobrazí.
Jak jsme si všimli v prvním příkladu použití 5 (tj.:Zobrazení s číslem řádku před každým řádkem), v souboru program.pl jsou dva po sobě jdoucí prázdné výstupní řádky s čísly 9 a 10. Možná je nechcete zobrazovat opakované prázdné výstupní řádky. Toto lze potlačit, jak je ukázáno níže:
# cat -sn program.pl 1 #!/usr/bin/perl 2 3 4 if( 2 ge 3) { 5 print "greater\n"; 6 } else { 7 print "lesser\n"; 8 } 9
Řádek 9 a 10 se ve výše uvedeném výstupu potlačí do jednoho prázdného řádku (tj.:řádek 9).
8. Zobrazit konec řádku a znaky TAB
Můžete přimět kočku, aby na konci každého řádku zobrazovala znak $. Normálně při výpisu obsahu souboru uživatelé nemohou identifikovat mezery na konci každého řádku pomocí volby cat -e.
Například použijte volbu -e v souboru program.pl. Jak je ukázáno níže, třetí řádek tohoto souboru (tj.:program.pl) ve skutečnosti není prázdný řádek a stejně tak řádek 7 končí mezerami.
$ cat -ne program.pl 1 #!/usr/bin/perl$ 2 $ 3 $ 4 if( 2 ge 3) {$ 5 print "greater\n";$ 6 } else {$ 7 print "lesser\n"; $ 8 }$ 9 $ 10 $
Použijte volbu -T pro zobrazení znaků tabulátoru. Zobrazuje ^I pro znak TAB. Jak je uvedeno níže, řádek 5 a řádek 7 začínají znakem TAB.
$ cat -neT program.pl 1 #!/usr/bin/perl$ 2 $ 3 $ 4 if( 2 ge 3) {$ 5 ^Iprint "greater\n";$ 6 } else {$ 7 ^Iprint "lesser\n"; $ 8 }$ 9 $ 10 $
9. Číst obsah až do konkrétního vzoru
Dokument here lze použít spolu s příkazem cat. Například, když čtete ze stdin, můžete číst až do řádku, který obsahuje konkrétní vzor. V níže uvedeném příkladu jsou bloky řádků načteny z stdin (do EOF) a vytištěny na standardním výstupu.
$ cat <<EOF > mv command to move files and directories > top command to display linux tasks > EOF mv command to move files and directories top command to display linux tasks
10. Zobrazit obsah souboru obráceně
Tento příklad je podvodník. Toto opravdu není příklad kočičího příkazu, ale souvisí to.
tac je opakem kat. Jak si dokážete představit, tac pouze zobrazí obsah souboru v opačném pořadí (řádky zdola se zobrazí jako první). Pokud chcete pouze obrátit znaky v řádku, měli byste použít příkaz rev.
Například soubor program.pl se zobrazuje obráceně jako:
$ tac program.pl } print "lesser\n"; } else { print "greater\n"; if( 2 ge 3) { #!/usr/bin/perl