Do czego służy „kot”?

13

Widziałem polecenie cat pojawiające się w niektórych rzeczach online i byłem ciekawy, co się stało cati do czego służy w kontekście kogoś, kto po prostu robi proste rzeczy z linii poleceń.

cosmoflop12
źródło

Odpowiedzi:

12

cat„s głównym celem jest con cat pliki enate. cat file1 file2 ...pokaże zawartość file, file2a pozostałe jeden po drugim, tak jakby zawartość była w jednym pliku. Zobacz manpage :

NAME
       cat - concatenate and print files

Jest przeznaczony do użycia, gdy:

  • polecenie docelowe nie może odczytać z plików i musisz przekazać do niego wiele plików. Przykładem jest trnarzędzie. Zwykle za pomocą jednego pliku można wykonać:

    tr < file
    

    Ale w przypadku wielu plików nie można użyć przekierowania, więc musisz wykonać następujące czynności:

    cat file1 file2 ... | tr
    
  • polecenie docelowe może czytać z wielu plików, ale jego zachowanie może się zmienić, gdy otrzyma wiele plików. Przykładem jest wcwydrukowanie zliczeń dla każdego pliku wraz z nazwami plików, w których mógłbyś chcieć tylko sumy, bez nazwy pliku.

Pamiętaj, że większość komend napotkania ( grep, sed, awk, sort, ...) można odczytać pliki perfekcyjnie.

Jeśli chcesz zobaczyć zawartość pliku, użyć pagera - lessi moreto zarówno wybitnie zdolna do prezentowania plików do oglądania, a są o wiele bardziej wygodne w użyciu.

muru
źródło
Przekierowania można bardzo dobrze używać z wieloma plikami, ponieważ można je łączyć z zastępowaniem procesów i poleceń: < <(cat file[12]) tra także <<<$(cat file[12]) troba są doskonale poprawnymi sposobami przekierowywania wielu plików. Oczywiście, że tego potrzebujesz cat, tylko to, że orurowanie nie jest jedynym sposobem.
deser
@dessert, jeśli musisz być pedantyczny, to przekierowanie nadal używa tylko jednego pliku - pliku reprezentującego standardowe wyjście polecenia (lub standardowe wejście, jeśli odwrotnie). Bash nie obsługuje prawdziwego przekierowywania wielu plików, podobnie jak Zsh.
muru
9

catjest jednym z najczęściej używanych poleceń w systemach operacyjnych typu Unix. Ma trzy powiązane funkcje w odniesieniu do plików tekstowych:

  1. wyświetlanie ich
  2. łączenie ich kopii
  3. tworzenie nowych.
  4. Skopiuj pliki

ogólna składnia kota to:

cat [options] [filenames] [-] [filenames]

Odczytywanie plików

Najczęstszym zastosowaniem cat jest czytanie zawartości plików, a cat jest często najwygodniejszym programem do tego celu. Aby otworzyć plik tekstowy do wyświetlenia na monitorze wyświetlacza, wystarczy wpisać słowo cat, spację i nazwę pliku, a następnie nacisnąć klawisz ENTER. Na przykład następujące polecenie wyświetli zawartość pliku o nazwie plik1:

cat file1

Powiązanie

Drugą rolą kota jest konkatenacja. (To jest źródło ciekawej nazwy kota.) Nie ma wpływu na oryginalne pliki.

Na przykład następujące polecenie połączy kopie zawartości trzech plików file1, file2 i file3:

cat file1 file2 file3

Zawartość każdego pliku zostanie wyświetlona na ekranie monitora. Dane wyjściowe można równie łatwo przekierować za pomocą operatora przekierowania danych wyjściowych do innego pliku, na przykład file4, przy użyciu:

cat file1 file2 file3 > file4

Tworzenie pliku

Dzięki komentarzowi @muru : cat jest w stanie tworzyć nowe pliki w zależności od funkcji przekierowania powłoki, a nie od siebie

W przypadku małych plików jest to często łatwiejsze niż korzystanie z vi, gedit lub innych edytorów tekstu. Dokonuje się tego poprzez wpisanie cat, po którym następuje operator przekierowania wyjścia i nazwa tworzonego pliku, a następnie naciśnięcie ENTERi wreszcie jednoczesne naciśnięcie klawiszy Ctrl& d.

Na przykład można utworzyć nowy plik o nazwie plik1, wpisując

cat > file1

następnie naciśnij ENTERi jednocześnie naciśnij klawisze Ctrl& d.

PS1: Jeśli plik o nazwie plik1 już istnieje, zostanie zastąpiony

PS2: możesz dołączyć do wychodzącego pliku za pomocą operatora dołączającego >>przykład cat >> plik1

Kopiuj pliki

Polecenia cat można także użyć (w zależności od funkcji przekierowania powłoki) do utworzenia nowego pliku i przesłania do niego danych z istniejącego pliku. Przykład: wykonaj kopię pliku oldfile.txt:

cat oldfile.txt > newfile.txt

Bibliografia:

Maythux
źródło
1
Re 3: catnie tworzy tych plików - powłoka jest, gdy używasz przekierowania. Równie dobrze mógłbyś to zrobić echo foo > file1.
muru
@muru Masz całkowitą rację, ale nadal używasz komendy cat
Maythux
1
Nie, nie jest. Przypisujesz się do cattego, co faktycznie robi coś innego. Na przykład, robi less file1 > file2(albo grep '.*' file1 > filealbo awk 1 file1 > file2albo ...) ma ten sam efekt. To samo dotyczy 4. To tylko niewłaściwe użycie.
muru
Wiem, że mógłbym go użyć > filei dać taki sam wynik, ale czy nie mogę uznać za zasadne zrobić to z kotem ?!
Maythux,
1
Możesz, jeśli określisz, że catnie tworzy pliku. Powiedzenie cattworzy lub kopiuje plik jest po prostu fałszem.
muru
1

Można go użyć do wyświetlenia zawartości pliku. Np cat "my file.txt". : Możesz także zrobić, man cataby wyświetlić szczegółowe informacje o tym, do czego catmożna użyć.

Puneet Gill
źródło
0

Oto inny sposób tworzenia plików przy użyciu przekierowania powłoki (lub potokowania) i cat:

cat << EOF > foo.sh
#!/bin/sh
echo 'Hello World!'
EOF

cat << EOFwyświetli następujące wiersze, aż łańcuch EOFzostanie ponownie napotkany. Następnie >( >>) przekieruje dane wyjściowe do pliku foo.sh. Alternatywnie, jeśli chcesz utworzyć plik jako root, możesz przesłać dane wyjściowe do polecenia tee( tee -a), wykonanego przez polecenie sudo:

cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
  • Powyższe spowoduje, że plik będzie wykonywalny ( chmod +x), jeśli zostanie pomyślnie utworzony ( &&).
  • Specjalne znaczenie niektórych znaków (as $) powinno być poprzedzone znakiem (z \) w danych wyjściowych cat.
pa4080
źródło