You are here

Команда cat linux - разбираем от А до Я!

Команда cat в linux (полное описание) - это сокращение от concatenate. На самом деле это некая утилита, которая позволяет вам сцеплять, связывать файлы и т.д. Она может выводить содержимое файла, к примеру:

root@fantom-Lenovo:/home/jakudza# ls (ls - просмотр содержимого каталога)
test.txt (то что сейчас в каталоге, один файл test.txt)
root@fantom-Lenovo:/home/jakudza# cat test.txt (команда cat - читает файл test.txt)
Это написано внутри файла test.txt

Если содержимое файла очень большое, к примеру текст на 5000 символов. Может возникнуть проблема! Произойдёт быстрая прокрутка(мелькание) текста. В данном случае пишем вот так:

root@fantom-Lenovo:/home/jakudza# cat test.txt | less

От простого к сложному:

Формат команды:  cat filename1 [filename2... ]

Стандартно, команда cat может слить и вывести файл на стандартный вывод(т.е. на монитор). Или иначе говоря, данная команда просто выводит содержимое перечисленных файлов (filename, и т.д.) на стандартный вывод:

1. Команда ниже выведет на экран содержимое файла - «на стандартный вывод»:

cat filename1

2. Команда ниже "сливает" первые 2 файла, и перемещает их в третий filename3 (уточнение: команда взяла информацию из первого и второго файла. Появилась некая новая информация, состоящая из двух источников. И эту информацию мы передали не на "стандартный вывод", а в файл filename3, благодаря символу ">"):
 
cat filename1 filename2 > filename3


3. К примеру, если нам надо "соединить" 2 файла:

cat filename1 >> filename2 (Данной командой мы просто добавили содержимое первого файла ко второму)

* Как мы видим в данных примерах используется ">"(одинарный или двойной) - запоминайте что он делает! Зачастую в Университете или ином месте, задают вопросы: допустим команда ">" - делает то-то, а что делает ">>"? и т.д.

4. Примеры «>»:

команда  > имя_файла (для стандартного вывода)
команда  < имя_файла (для переназначения стандартного ввода)

5. Перенаправление стандартного вывода:

- Перенаправление означает, что система должна использовать файл или устройство, указанное пользователем, вместо "стандартного ввода" или "стандартного вывода".
- Чтобы перенаправить стандартный вывод, используйте символ «>», о котором мы говорили выше.
- Размещение «>» после команды cat (или после любой другой команды, которая выдает результаты своей работы на "стандартный вывод") перенаправит результат ее работы "в файл", указанный за символом «>».

Что будет если команда cat без аргументов, при этом мы вводим значения, после нажатия клавиши "Enter":

[user@localhost ~]$ cat
линукс номер один (мы ввели "линукс номер один")
линукс номер один (тут же на экран выходит данная фраза)
линукс первый (мы ввели "линукс первый")
линукс первый (тут же на экран выходит данная фраза)

* Что мы видим выше? Всё что мы вводили, ещё раз отображалось на экране.

А теперь попробуем перенаправить результат работы команды в файл:

[user@localhost ~]$ cat > filename1.txt
линукс номер один
линукс первый

*после ввода команды нажимаем Enter - это приведёт к появлению пустой строки, куда вводим строку текста, для перехода к следующей строке, нажимаем снова "Enter" и т.д. Выход - [Ctrl]+[D].

Той же командой cat читаем что получилось:

[user@localhost ~]$ cat filename1.txt (таже команда, без «>» - другой результат)
линукс номер один
линукс первый

*Данная команда показала что написано в файле, не путайте с верхним  вариантом команды cat > filename1.txt  где значения не отобразились благодаря команде, мы их вводили сами!


6. Попробуем "слить", см.пункт "2" и пункт "5":

В примере выше у нас создан файл: filename1.txt. Создадим ещё один файл filename2.txt:

[user@localhost ~]$ cat > filename2.txt 
линукс A
линукс B

Теперь у нас два файла filename1.txt и filename2.txt, с данными (разными). Затем при помощи команды cat добавим содержимое файла filename2.txt в конец файла filename1.txt и перенаправим результат в новый файл с названием filename3.txt:

[user@localhost ~]$ cat filename1.txt filename2.txt > filename3.txt

Теперь посмотрим что у нас в файле filename3.txt:

[user@localhost ~]$ cat filename3.txt
линукс номер один
линукс первый
линукс A
линукс B

* Надеюсь все эти чудеса у вас в голове сложились воедино)))
 
Теперь используя пункт "3", попробуем проделать вот что: возьмем два уже существующих файла (filename1.txt и filename2.txt) и объединим их, используя символ добавления. Чтобы добавить содержимое файла filename1.txt в файл filename2.txt, введите:

[user@localhost ~]$ cat filename1.txt >> filename2.txt
[user@localhost ~]$ cat filename2.txt
линукс номер один
линукс первый
линукс A
линукс B

А теперь сравним файлы filename2.txt и filename3.txt. Если вы всё делали как указано выше, то содержимое этих файлов окажется одинаковой, смотрим:

[user@localhost ~]$ cat filename1.txt; cat filename2.txt
линукс номер один
линукс первый
линукс A
линукс B
линукс номер один
линукс первый
линукс A
линукс B


7. Перенаправление стандартного ввода:

Когда вы используете символ перенаправления стандартного ввода «<», вы сообщаете оболочке, что входные данные для программы следует брать из указанного вами файла.

[user@localhost ~]$ cat < filename2.txt
линукс номер один
линукс первый
линукс A
линукс B

8. Опции команды cat:

Опция A показывает все невидимые символы.
Опция -E показывает символы конца строки.
Опция -e показывает непечатаемые символы плюс символ конца строки
Опция -T показывает символ табуляции
Опция -t показывает непечатаемые символы плюс символ табуляции
Опция -v показывает непечатаемые символы кроме табуляции и конца строки.

[user@localhost ~]$ cat -A newname.txt (в файле содержится: The most common use)
^IThe most common use$

*Где, ^I обозначает символ табуляции, $ - символ конца строки.
** С кириллическими символами все эти опции выводят какую-то абракадабру.

Опции -b и -n нумеруют строки вывода. Опция -b нумерует непустые строки, в отличии  -n (нумерует все строки):

[user@localhost ~]$ cat -b newname2.txt
1 текст по Линуксу
2 текст по команде cat
 
3 текст по Linux cat

[user@localhost ~]$ cat -n newname2.txt
1 текст по Линуксу
2 текст по команде cat
3
4 текст по Linux cat

Опция -s подавляет вывод повторяющихся пустых строк.
Опции --help и --version общеизвестны и не нуждаются в пояснении.

9. Некоторые наиболее употребительные команды:

pwd - получить имя текущей директории
cd - изменить текущую директорию
ls - распечатать информацию о файлах или директориях
cat - слить или вывести файлы-аргументы на стандартный вывод
cp - копировать файлы
mv - переместить (переименовать) файлы
ln - создать ссылку на файл
rm - удалить файлы
rmdir - удалить директорию
mkdir - создать директорию
echo - вывести аргументы командной строки на стандартный вывод
ps - распечатать информацию и номера выполняемых процессов
kill - "убить" выполняемый процес по его номеру
man - выдать справку об использовании и ключах команды

Если есть вопросы, пожелания или что-то ещё(поблагодарить и т.д.), пишем в Комментарии ниже!

Автор: AdminLS
Источникhttp://linuxsql.ru