Для чого використовується «кішка»?


14

Я бачив, як команда кішки з'являється в деяких матеріалах в Інтернеті, і мені було цікаво, що робити catі для чого це стосується того, хто просто виконує прості речі з командного рядка.

Відповіді:


12

catОсновна мета - зведення файлів для отримання котів . cat file1 file2 ...покаже вміст file, file2а інші - один за одним, як би вміст знаходився в одному файлі. Дивіться довідкову сторінку :

NAME
       cat - concatenate and print files

Він призначений для використання там, де:

  • цільова команда не може читати з файлів, і вам потрібно передати їй кілька файлів. Приклад - trутиліта. Зазвичай, з одним файлом ви зробите:

    tr < file
    

    Але з декількома файлами переадресацію використовувати не можна, тому потрібно зробити:

    cat file1 file2 ... | tr
    
  • цільова команда може читати з декількох файлів, але її поведінка може змінюватися, коли їй надано кілька файлів. Прикладом може бути те wc, що друкується підрахунок для кожного файлу, а також імена файлів, де ви, можливо, хотіли б просто загального без назви файла.

Пам'ятайте , що більшість команд ви стикаєтеся ( grep, sed, awk, sort, ...) може читати файли прекрасно.

Якщо ви хочете переглянути вміст файлу, скористайтеся пейджером - lessі moreвони одночасно можуть представити файли для перегляду, і вони набагато зручніші для використання.


Перенаправлення дуже добре можна використовувати з декількома файлами, оскільки ви можете комбінувати його із заміною процесів та команд: < <(cat file[12]) trа також <<<$(cat file[12]) trобидва цілком коректні способи перенаправлення кількох файлів. Звичайно, і catдля цього вам потрібно , тільки цей трубопровід - не єдиний спосіб.
десерт

@dessert, якщо вам потрібно бути педантичним, для перенаправлення все ще використовується лише один файл - файл, що представляє stdout команди (або stdin, якщо навпаки). Bash не підтримує справжнє перенаправлення кількох файлів, як це робить zsh.
муру

9

catє однією з найбільш часто використовуваних команд в операційних системах, схожих на Unix. Він має три пов'язані функції щодо текстових файлів:

  1. їх відображення
  2. поєднання їх копій
  3. створення нових.
  4. Скопіюйте файли

загальний синтаксис кота:

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

Читання файлів

Найбільш поширене використання кота - це читання вмісту файлів, а кішка часто є найбільш зручною програмою для цієї мети. Все, що потрібно для відкриття текстового файлу для перегляду на моніторі дисплея, - це ввести слово cat, а потім пробіл та назву файла, а потім натиснути клавішу ENTER. Наприклад, нижче буде відображено вміст файлу з назвою file1:

cat file1

Сполучення

Друга роль кота - конкатенація. (Це джерело цікавого імені кота.) На оригінальні файли немає ефекту.

Наприклад, наступна команда об'єднає копії вмісту трьох файлів file1, file2 та file3:

cat file1 file2 file3

Вміст кожного файлу відображатиметься на екрані монітора. Цей вихід може так само легко бути перенаправлений за допомогою оператора переадресації виводу на інший файл, наприклад file4, використовуючи наступне:

cat file1 file2 file3 > file4

Створення файлів

Завдяки коментарю @muru : cat здатний створювати нові файли залежно від функції перенаправлення оболонки, а не від себе

Для невеликих файлів це часто простіше, ніж використання редакторів vi, gedit або інших текстів. Це виконується шляхом введення кота з подальшим оператором переадресації виводу та іменем файла, який потрібно створити, а потім натисканням ENTERі, нарешті, одночасним натисканням клавіш Ctrl& d.

Наприклад, новий файл з назвою file1 можна створити, ввівши

cat > file1

потім натисніть ENTERі одночасно натисніть клавіші Ctrl& d.

PS1: Якщо файл з ім'ям file1 вже існує, він буде перезаписаний

PS2: ви можете додати до вийшов файл за допомогою >>прикладу оператора додавання cat >> file1

Скопіюйте файли

Команда cat також може бути використана ( залежно від функції перенаправлення оболонки) для створення нового файлу та передачі до нього даних із наявного файлу. Приклад: зробіть копію файлу oldfile.txt:

cat oldfile.txt > newfile.txt

Список літератури:


1
Re 3: catне створює цих файлів - оболонка, коли ви використовували переадресацію. Можливо, ви так само добре зробили echo foo > file1.
муру

@muru Ви абсолютно праві, але це все-таки використання котячої команди
Maythux

1
Ні, це не так. Ви приписуєте catте, що насправді робиться чимось іншим. Наприклад, виконання less file1 > file2(або grep '.*' file1 > fileабо awk 1 file1 > file2або ...) має той же ефект. Діто для 4. Це просто зловживання.
муру

Я знаю, що я міг би скористатися ним просто > fileі давати такий же результат, але чи не можу я вважати, що це дійсно робити з кішкою ?!
Maythux

1
Ви можете, якщо вказати, що catфайл не створюється. Скажіть, що catстворюється або копіюється файл, це просто помилка.
муру

1

З його допомогою можна показати вміст файлу. Наприклад: cat "my file.txt". Ви також можете зробити, man catщоб показати вам подробиці про те, для чого catможна використовувати.


0

Ось ще один спосіб створення файлів за допомогою перенаправлення оболонки (або трубопроводів) та cat:

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

cat << EOFбуде виводити наступні рядки, поки рядок EOFне зустрінеться знову. Тоді >( >>) перенаправить вихідний файл у файл foo.sh. Крім того, якщо вам потрібно створити файл як корінь, ви можете передавати висновок команді tee( tee -a), виконаній командою sudo:

cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
  • Вищенаведене зробить файл виконуваним ( chmod +x), якщо він успішно створений ( &&).
  • Спеціальне значення деяких символів (як $) слід уникати (з \) у межах виводу cat.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.