Szukaj…


Składnia

  • cat [OPCJE] ... [PLIK] ...

Parametry

Opcja Detale
-n Wydrukuj numery linii
-v Pokaż znaki niedrukowalne, używając notacji ^ i M, z wyjątkiem LFD i TAB
-T Pokaż znaki TAB jako ^ I
-MI Pokaż znaki wysuwu linii (LF) jako $
-mi Taki sam jak -vE
-b Liczba niepustych wierszy wyjściowych, zastępuje -n
-ZA odpowiednik -vET
-s pomija powtarzające się puste linie wyjściowe, s oznacza ściśnięcie

Uwagi

cat może czytać zarówno pliki, jak i standardowe dane wejściowe i konkatenuje je do standardowego wyjścia

Drukowanie zawartości pliku

cat file.txt

wydrukuje zawartość pliku.

Jeśli plik zawiera znaki spoza ASCII, możesz wyświetlić te znaki symbolicznie za pomocą cat -v . Może to być przydatne w sytuacjach, w których znaki kontrolne byłyby w przeciwnym razie niewidoczne.

cat -v unicode.txt

Bardzo często do celów interaktywnych lepiej jest używać interaktywnego pagera, takiego jak less lub more . ( less jest znacznie potężniejsze niż more i zaleca się stosowanie less niż more ).

less file.txt

Aby przekazać zawartość pliku jako dane wejściowe do polecenia. Podejście zwykle postrzegane jako lepsze ( UUOC ) polega na użyciu przekierowania.

tr A-Z a-z <file.txt   # as an alternative to cat file.txt | tr A-Z a-z

W przypadku, gdy zawartość musi być wyświetlana od końca od końca, można użyć polecenia tac :

tac file.txt

Jeśli chcesz wydrukować zawartość z numerami linii, użyj -n z cat :

cat -n file.txt

Aby wyświetlić zawartość pliku w całkowicie jednoznacznej formie bajt po bajcie, zrzut szesnastkowy jest standardowym rozwiązaniem. Jest to przydatne w przypadku bardzo krótkich fragmentów pliku, na przykład gdy nie znasz dokładnego kodowania. Standardowym narzędziem zrzutu heksadecymalnego jest od -cH , chociaż reprezentacja jest nieco kłopotliwa; typowe zamienniki obejmują xxd i hexdump .

$ printf 'Hëllö wörld' | xxd
0000000: 48c3 ab6c 6cc3 b620 77c3 b672 6c64       H..ll.. w..rld

Wyświetl numery linii z wyjściem

Użyj flagi --number aby wydrukować numery linii przed każdą linią. Alternatywnie -n robi to samo.

$ cat --number file

 1  line 1
 2  line 2
 3
 4  line 4
 5  line 5

Aby pominąć puste linie podczas liczenia linii, użyj --number-nonblank lub po prostu -b .

$ cat -b file

 1  line 1
 2  line 2

 3  line 4
 4  line 5

Odczyt ze standardowego wejścia

cat < file.txt

Dane wyjściowe są takie same jak cat file.txt , ale czyta zawartość pliku ze standardowego wejścia zamiast bezpośrednio z pliku.

printf "first line\nSecond line\n" | cat -n 

Polecenie echo przed | wyprowadza dwie linie. Polecenie cat działa na dane wyjściowe, aby dodać numery wierszy.

Połącz pliki

To jest główny cel cat .

cat file1 file2 file3 > file_all

cat może być również używany podobnie do łączenia plików w ramach potoku, np

cat file1 file2 file3 | grep foo

Napisz do pliku

cat >file

Pozwoli ci to napisać tekst na terminalu, który zostanie zapisany w pliku o nazwie file .

cat >>file

zrobi to samo, tyle że doda tekst na końcu pliku.

NB: Ctrl + D, aby zakończyć pisanie tekstu na terminalu (Linux)


Dokumentu tego można użyć do wstawienia zawartości pliku do wiersza poleceń lub skryptu:

cat <<END >file
Hello, World.
END

Token po symbolu przekierowania << jest dowolnym ciągiem, który musi występować sam w linii (bez początkowych lub końcowych białych znaków), aby wskazać koniec dokumentu tutaj. Możesz dodać cytowanie, aby zapobiec wykonywaniu przez powłokę podstawiania poleceń i interpolacji zmiennych:

cat <<'fnord'
Nothing in `here` will be $changed
fnord

(Bez cudzysłowów here zostanie wykonane jako polecenie, a $changed zostanie zastąpiony wartością zmiennej changed - lub nic, jeśli nie zostanie zdefiniowana).

Pokaż znaki niedrukowalne

Jest to przydatne, aby sprawdzić, czy są jakieś znaki niedrukowalne lub znaki spoza ASCII.

np. jeśli skopiowałeś kod z Internetu, możesz mieć cytaty takie jak zamiast standardowego " .

$ cat -v file.txt
$ cat -vE file.txt # Useful in detecting trailing spaces.

na przykład

$ echo '”     ' | cat -vE # echo | will be replaced by actual file.
M-bM-^@M-^]     $

Możesz także użyć cat -A (A for All), który jest równoważny cat -vET . Wyświetli znaki TAB (wyświetlane jako ^I ), znaki niedrukowalne i koniec każdego wiersza:

$ echo '” `' | cat -A
M-bM-^@M-^]^I`$

Połącz spakowane pliki

Pliki skompresowane przez gzip można bezpośrednio łączyć w większe pliki gzip.

cat file1.gz file2.gz file3.gz > combined.gz

Jest to właściwość gzip która jest mniej wydajna niż konkatenacja plików wejściowych i gzipowanie wyniku:

cat file1 file2 file3 | gzip > combined.gz

Pełna demonstracja:

echo 'Hello world!' > hello.txt
echo 'Howdy world!' > howdy.txt
gzip hello.txt 
gzip howdy.txt

cat hello.txt.gz howdy.txt.gz > greetings.txt.gz

gunzip greetings.txt.gz

cat greetings.txt

Co skutkuje w

Hello world!
Howdy world!

Zauważ, że greetings.txt.gz jest jednym plikiem i jest dekompresowany jako pojedynczy plik greeting.txt . tar -czf hello.txt howdy.txt > greetings.tar.gz to z tar -czf hello.txt howdy.txt > greetings.tar.gz , który utrzymuje oddzielne pliki wewnątrz tarballa.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow