Bash
Korzystanie z kota
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.