X

cat в Linux – всё что нужно знать

90% книг написанных про Linux начинают знакомство с командной строкой с cat. По статистике (на которую все ссылаются, но которую ни кто не видел), cat является самой часто употребляемой командой в Linux. Так что же делает это чудо-команда?

cat образовано от английского concatenate (объединять), т.е. логично предположить команда предназначена для объединения чего то с чем, например нескольких файлов. Но чаще всего cat используют для создания файлов и для вывода содержимого файла непосредственно в консоль. Давайте разберем все возможности этой команды подробнее.

Создание нового файла с помощью cat

[hc@host ~]# cat > new_file
это
новый
файл

С помощью cat и символа > мы перенаправили стандартный вывод в файл new_file. Для завершения заполнения файла данными перейдите на новую строку и нажмите Ctrl+D.

Просмотр файлов с помощью cat в Linux

Для просмотра файла просто наберите:
#cat

[hc@host ~]# cat new_file
это
новый
файл

Можно вывести с номерами строк:

[hc@host ~]# cat -n new_file
     1  это
     2  новый
     3  файл

Можно просмотреть содержимое нескольких файлов.

[hc@host ~]# cat -n new_file old_file
     1  это
     2  новый
     3  файл
     4  Это старый файл

Обратите внимание, что содержимое выводится единым массивом данных, что хорошо видно по тому, что содержание второго файла вывелось строкой под номером 4 – нумерация не началась заново при выводе этого файла. Т.е. cat, как это и заложено в ее названии, склеила файлы.

Просмотр больших файлов с помощью cat

Типичная рекомендация – если файл не влезает в экран консоли использовать cat в сочетании с less или more:

[hc@host ~]# cat -n long_file | less
[hc@host ~]# cat -n long_file | more

Так вот, что я скажу – если вы уверены, что файл большой просто сразу используйте more, а лучше less.

[hc@host ~]# more long_file
[hc@host ~]# less long_file

Их для этого и делали, а у cat свои задачи.

Копирование, объединение и дополнение файлов с помощью cat в Linux

Давайте создадим несколько файлов:

[root@wbtu ~]# cat > file1
line1
line3
[hc@host ~]# cat > file2
line2
line4

Нумерацию я специально сделал не по порядку, это нам еще понадобится.

Объединим файлы и посмотрим на результат:

[hc@host ~]# cat file1 file2 > file3
[hc@host ~]# cat file3
line1
line3
line2
line4

Как видите file3 содержит информацию из обоих файлов.
Теперь скопируем содержимое file3 в другой файл:

[hc@host ~]# cat file3 > copy_of_file3
[hc@host ~]# cat copy_of_file3
line1
line3
line2
line4

А теперь допишем в file3 еще несколько строк:

[hc@host ~]# cat >> file3
line6
line5
[hc@host ~]# cat file3
line1
line3
line2
line4
line6
line5

Точно так же можно дописать один файл в конец другого:

[hc@host ~]# cat new_file >> file3

Несколько полезных примеров

Сортировка

Возьмем наш file3 с неправильным порядком строк и приведем в порядок:

[hc@host ~]# cat file3 | sort > sort_file

или так:

[hc@host ~]# cat file1 file2 | sort > sort_file

У cat есть антипод tac. Вся разница, что вывод происходит в обратном порядке:

[hc@host~]# tac sort_file
line4
line3
line2
line1

Отображение непечатаемых символов

Если что-то работает не так, как планировалось или совсем не работает – бывает полезно поглядеть не затесался ли какой вредный символ.
Например, отредактировали конфиг через ftp под Win редактором (ни когда так не делайте), а он расставил, как в Win принято, в конце строк CRLF. И ни чего не работает.

[hc@host ~]# cat -v test_file
hi there^M

^M – вот он виновник.

Пропуск пустых строк

Еще один полезный ключ -s. При его использовании будут пропускаться все дублированные пустые строки:

[hc@host ~]# cat > blank_lines


q




a

z
[hc@host ~]# cat -s blank_lines

q

a

z

На этом пожалуй достаточно о cat в Linux. Остались вопросы – пишите в комментах.

Categories: Ликбез
Tags: основы
hc: