Командата 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, какво може да направи и нейната функционалност.