Команда Cat у Linux - конкатенація, пояснена прикладами Bash

Cat в Linux розшифровується як об’єднання (об’єднання речей разом) і є однією з найбільш корисних та універсальних команд Linux. catКоманда Linux не настільки мила і приємна, як справжня кішка, але може використовуватися для підтримки ряду операцій із використанням рядків, файлів та виводу.

Команда cat має три основні цілі, що стосуються текстових файлів:

  • Створити
  • Читання / відображення
  • Оновити / змінити

Ми по черзі переглянемо кожну з них, щоб показати команди та параметри, пов’язані з кожною операцією.

Починаємо

Для початку давайте створимо пару файлів, які називаються foo.txt та spam.txt.

Почнемо із створення foo.txt з команди cat > foo.txtз командного рядка Linux.

Попередження: Якщо вже є файл з іменем foo.txt, catкоманда, що використовує оператор>, ЗАПИСЕ його.

Звідси підказка відобразить новий рядок, який дозволить нам ввести потрібний текст. Для цього прикладу ми використаємо:

FILE 1 foo bar baz 

Щоб повернутися до командного рядка і створити текстовий файл, ми використовуємо CTRL + D.

Тепер давайте створимо spam.txt за допомогою cat > spam.txtта додамо наступне:

FILE 2 spam ham eggs 

Якби ми хотіли додати або додати більше тексту до цих файлів, ми б використали cat >> FILENAMEта ввели текст, який ми хочемо використовувати.

Зверніть увагу, що оператор >> використовується для додавання на відміну від оператора>.

Замість того, щоб відкривати текстовий редактор, ми змогли створити швидкий і простий текстовий файл із командного рядка, заощадивши час та сили.

Ключовим виводом з цього розділу є те, що ми використовуємо cat > FILENAMEдля створення або перезапису файлу. Крім того, ми можемо використовувати cat >> FILENAMEдля додавання до файлу, який уже є. Потім після введення тексту, який ми хочемо, ми використовуємо CTRL + D для виходу з редактора, повернення до командного рядка та створення файлу.

Читання веселки

Тепер, коли ми щось створили, давайте подивимось, що ми зробили.

Зверніть увагу, як у нас немає оператора> або >> в наступній команді, лише cat та ім'я файлу.

Команда cat foo.txtвідобразить наступне:

FILE 1 foo bar baz 

Тож cat foo.txtдавайте прочитаємо файл, але давайте подивимося, що ще ми можемо зробити.

Скажімо, ми хотіли з’ясувати, скільки рядків був у файлі, над яким ми працювали. Для цього параметр -n стане в нагоді.

За допомогою команди cat -n foo.txtми можемо побачити, скільки часу триває наш файл:

 1 FILE 1 2 foo 3 bar 4 baz 

За допомогою -n ми можемо уявити, скільки рядків має файл, з яким ми працюємо. Це може стати в нагоді, коли ми перебираємо файл фіксованої довжини.

ConCATВідміна файлів

Гаразд, ми бачили, що кішка може створювати та відображати файли, але як щодо об’єднання (об’єднання) їх?

У цьому прикладі ми будемо використовувати файли foo.txt та spam.txt. Якщо ми хочемо пофантазувати, ми можемо одночасно поглянути на вміст обох файлів. Ми знову використаємо команду cat, цього разу використовуючи cat foo.txt spam.txt.

cat foo.txt spam.txt призводить до наступного:

FILE 1 foo bar baz FILE 2 spam ham eggs 

Зверніть увагу, що наведене вище ВІДКРИТЬ ці два файли. На даний момент ми ще не об’єднали їх у новий файл.

Щоб об'єднати файли в новий файл, який ми хочемо використовувати, cat foo.txt spam.txt > fooSpam.txtщо дає нам результат у новий файл fooSpam.txt.

За допомогою cat fooSpam.txtвиходів на термінал виводиться таке:

FILE 1 foo bar baz FILE 2 spam ham eggs 

Ця команда також корисна, коли ми хочемо об'єднати більше двох файлів у новий файл.

Тут можна взяти на винос кілька файлів за допомогою cat FILENAME1 FILENAME 2.

Крім того, ми можемо об'єднати кілька файлів в один файл за допомогою команди   cat FILENAME1 FILENAME 2 > FILENAME3.

Інші цікаві справи, пов’язані з котами

Скажімо, ми працюємо з файлом, і ми постійно отримуємо помилки з якихось причин до кінця файлу - і, схоже, він може мати більше рядків, ніж ми очікували.

Щоб дослідити файл трохи далі і, можливо, вирішити нашу проблему, ми можемо використовувати перемикач -A. Параметр -A покаже нам, де рядки закінчуються символом $, він покаже нам символи табуляції з символом ^ I, а також відображає інші недруковані символи.

Якби ми розглядали приклад текстового файлу, що не друкується, cat nonPrintExample.txtми могли б отримати щось подібне:

         

Це нормально, але може не розповісти нам повної історії про символ чи рядок, які можуть викликати у нас проблеми.

Тоді як cat -A nonPrintExample.txtможе дати нам більш корисний результат:

^I^I$ $ ^L$ $ ^G^H^H^H^Y^I^N^O^P^@$ ^@^@^[g^[f^[d^[g^[6^[5^[4^[6^[=$ $ $ ^X$ 

Тут ми отримуємо більш чітке уявлення про те, що може відбуватися між вкладками, стрічками, поверненнями та іншими символами.

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

Ця стаття повинна дати вам хороший огляд команди cat, що вона може робити та її функціональних можливостей.