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. Остались вопросы – пишите в комментах.