Запись в файлы с помощью команды cat в Linux
Команда cat представляет собой инструмент Unix, используемый для управления и отображения содержимого файлов. Команда получила свое название от слова «concatenate», потому что, помимо прочего, она может объединять файлы.
В этой статье мы рассмотрим несколько простых способов использования этой команды для записи текста в файл с примерами. Использование cat очень простое, поэтому для продолжения работы не требуется никакого предварительного программирования или опыта работы с Unix.
Основы команд cat
Начнем с того, что мы просто опишем основы команды cat , чтобы помочь вам, если вы никогда не использовали ее раньше или вам нужен краткий обзор.
Синтаксис
Синтаксис выглядит так:
cat [OPTION]. [FILE].
Чтобы быстро найти синтаксис или параметры команды, запустите cat с параметром справки:
cat --help
Или, вы можете использовать:
man cat
Эти команды должны отображать следующий список параметров:
-A, --show-all equivalent to -vET -b, --number-nonblank number nonempty output lines, overrides -n -e equivalent to -vE -E, --show-ends display $ at end of each line -n, --number number all output lines -s, --squeeze-blank suppress repeated empty output lines -t equivalent to -vT -T, --show-tabs display TAB characters as ^I -u (ignored) -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB --help display this help and exit --version output version information and exit
Отображение содержимого файла на стандартном выводе
Чтобы вывести содержимое файла на стандартный вывод, просто назовите файл, который хотите отобразить:
cat filename1
Если файл находится в другом каталоге, вам нужно указать его:
cat /dir1/dir2/filename1
Мы ожидаем увидеть содержимое этого файла, распечатанное на стандартный вывод, в данном случае — терминал:
Content of filename1!
Это наиболее распространенное использование команды cat, поскольку она позволяет легко просматривать содержимое файла, не открывая текстовый редактор.
Запись текста в файл с помощью cat
Чтобы перенаправить вывод команды cat из стандартного вывода в файл, мы можем использовать оператор перенаправления вывода > :
cat filename1 > filename2
Это приведет к замене содержимого filename2 на содержимое filename1 , поэтому убедитесь, что он не содержит ничего, что вы бы не хотели потерять. Теперь filename2 содержит:
Content of filename1!
Оператор перенаправления вывода перенаправит вывод любой вызываемой нами команды. Например, давайте попробуем это с помощью команды pwd , которая печатает имя текущего рабочего каталога:
pwd > testfile
Если мы посмотрим сейчас на testfile :
cat testfile
Он содержит путь к текущему рабочему каталогу:
/home/kristina
Если файл, на который вы перенаправляете, не существует, будет создан файл с таким именем:
cat filename1 > newfilename
Объединение файлов с помощью cat
Объединить несколько файлов с помощью cat очень просто — просто перечислите файлы в желаемом порядке:
cat filename1 filename2 > outputfile cat outputfile
Этот код берет файлы filename1 и filename2 , сцепляет их и выводит на новый outputfile :
Content of filename1! Content of filename2!
Стандартный ввод между файлами
Когда имя входного файла отсутствует в списке, cat начинает чтение со стандартного ввода до тех пор, пока не достигнет EOF (конца файла). Сигнал о конце файла отправляется ctrl+d в командной строке:
$ cat > outputfile Hello World $ cat outputfile
Hello World
Мы даже можем добавить текст из стандартного ввода между файлами, которые мы хотим объединить, используя — , чтобы указать, где мы ожидаем стандартный ввод. Если у нас есть такие файлы, как filename1 , filename2 и filename3 , и нам нужен текст из стандартного ввода между filename1 и filename2 , мы должны написать:
$ cat filename1 - filename2 filename3 > output Text from standard input! $ cat output
Проверив output , мы увидим что-то вроде:
Content of filename1! Text from standard input! Content of filename2! Content of filename3!
Добавление файлов с помощью cat
В предыдущих примерах использование оператора перенаправления отбрасывало предыдущее содержимое файла output . Что, если мы хотим добавить новый контент к старому? Для добавления файлов мы используем оператор >> :
cat filename1 filename2 >> output cat output
И это должно привести к:
Original output file contents. Content of filename1! Content of filename2!
Объединение содержимого всего каталога файлов с помощью cat
Чтобы объединить все содержимое всех файлов в каталоге, мы используем подстановочный знак * :
cat /dir1/dir2/* > output
Чтобы объединить все содержимое всех файлов в текущем рабочем каталоге, мы будем использовать:
cat * > output
* также можно использовать для объединения всех файлов с одинаковым расширением:
cat *.txt > output
Перечисление номеров строк
Перечисление всех строк вывода осуществляется с помощью опции -n :
cat -n filename1 filename2 filename3 > output cat output
Что бы написать что-то вроде:
1 Content of filename1! 2 Content of filename2! 3 Content of filename3!
Напишите $ в конце каждой строки
В опции -E знаменует конец каждой строки в файле с $ :
cat -E filename1 filename2 filename3 > output cat output
Сортировка строк составных файлов по конвейеру
Это немного обман. Команда cat не может сортировать, но для этого мы можем использовать конвейер. Команда канала ( | ) используется для превращения вывода одной команды во ввод другой. Чтобы отсортировать строки файла, мы будем использовать обе cat и еще одну команду sort :
cat filename2 filename3 filename1 | sort > output cat output
Content of filename1! Content of filename2! Content of filename3!
Вывод
Cat — это простой, но мощный инструмент Unix, который предустановлен в большинстве систем. Его можно использовать отдельно или в сочетании с другими командами с помощью каналов. Первоначально созданный Кеном Томпсоном и Деннисом Ритчи в 1971 году, cat простой в использовании и интуитивно понятный функционал выдерживает испытание временем.
В этой статье мы изучили некоторые возможности использования команды cat для записи текста в файлы, проверки содержимого, объединения и добавления файлов, а также для перечисления строк и их сортировки.
Источник:
Записать строку в конец файла linux
Как добавить строку в конец файла linux через командную строку ?
короткая ссылка на этот вопрос: close
спросил 9 лет назад
1 ответ
В консоли Linux записать строку в файл.
Для добавления строк в конец файла воспользоваться командай echo и знаком >> для перенаправления вывода в файл:
echo "this text will be added at the end off file info.txt" >> ~/Documents/info.txt
Другой пример bash добавления строки «nameserver 8.8.8.8» в файл /etc/resolf.conf:
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
Если же у вас не хватает прав для записи в файл:
-bash: /etc/resolv.conf: Permission denied
То можно выполнить запись строки в файл под sudo (root) с помощью команды sudo sh -c :
sudo sh -c "echo 'nameserver 8.8.8.8' >> /etc/resolv.conf"
Если вы хотите добавлять строку в файл не на bash, а на php, то как это сделать можно прочитать здесь.
Bash: добавить текст в файл
В Bash есть несколько способов добавить текст в файл. Эта статья объясняет некоторые из них.
Чтобы добавить текст в файл, у вас должны быть права на запись в него. В противном случае вы получите сообщение об ошибке в разрешении отказано.
Добавить в файл с помощью оператора перенаправления ( >> )
Перенаправление позволяет захватывать выходные данные команды и отправлять их в качестве входных данных в другую команду или файл. Оператор перенаправления >> добавляет вывод в указанный файл.
Существует ряд команд, которые вы можете использовать для вывода текста на стандартный вывод и перенаправления его в файл, причем наиболее часто используются команды echo и printf .
Чтобы добавить текст в файл, укажите имя файла после оператора перенаправления:
echo "this is a new line" >> file.txt
При использовании с параметром -e команда echo интерпретирует экранированные символы обратной косой черты, такие как новая строка n :
echo -e "this is a new line nthis is another new line" >> file.txt
Чтобы получить более сложный вывод, используйте команду printf которая позволяет вам указать форматирование вывода:
printf "Hello, I'm %s.n" $USER >> file.txt
Другой способ добавить текст в файл — использовать документ Here (Heredoc). Это тип перенаправления, который позволяет передавать команде несколько строк ввода.
Например, вы можете передать содержимое команде cat и добавить его в файл:
cat > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Вы можете добавить вывод любой команды в файл. Вот пример с командой date :
date +"Year: %Y, Month: %m, Day: %d" >> file.txt
При добавлении к файлу с использованием перенаправления будьте осторожны, чтобы не использовать оператор > для перезаписи важного существующего файла.
Добавить в файл с помощью команды tee
tee — это утилита командной строки в Linux, которая считывает из стандартного ввода и записывает как в стандартный вывод, так и в один или несколько файлов одновременно.
По умолчанию команда tee перезаписывает указанный файл. Чтобы добавить вывод в файл, используйте tee с параметром -a ( —append ):
echo "this is a new line" | tee -a file.txt
Если вы не хотите, чтобы tee выводил данные на стандартный вывод, перенаправьте его на /dev/null :
echo "this is a new line" | tee -a file.txt >/dev/null
Преимущество использования команды tee перед оператором >> заключается в том, что tee позволяет добавлять текст сразу в несколько файлов и записывать в файлы, принадлежащие другим пользователям, вместе с sudo .
Чтобы добавить текст в файл, в который у вас нет прав на запись, добавьте sudo перед tee как показано ниже:
echo "this is a new line" | sudo tee -a file.txt
tee получает вывод команды echo , повышает разрешения sudo и записывает в файл.
Чтобы добавить текст в несколько файлов, укажите файлы в качестве аргументов команды tee :
echo "this is a new line" | tee -a file1.txt file2.txt file3.txt
Выводы
В Linux для добавления текста в файл используйте оператор перенаправления >> или команду tee .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Вставить текст в файл в Unix/Linux

Существует довольно много способов как это сделать. Я не расскажу ничего нового, а соберу информацию в одну тему (статью) чтобы можно было новичкам, та и опытным пользователям можно быстро вспомнить.
Вставить текст в файл через утилиту cat в Unix/Linux
Утилита cat, позволяет записывать данные (текс) в файл. Приведу несколько примеров.
-=== ПРИМЕР 1 ===-
# cat > /etc/yum.repos.d/docker.repo
- TEXT HERE — произвольный текст, который нужно записать в файл.
- EOF — это команда для завершения записи в файл.
-=== ПРИМЕР 2 ===-
$ cat >> filename.txt TEXT HERE ^D
- TEXT HERE — произвольный текст, который нужно записать в файл.
- ^D — Сочетание клавиш «CTRL-D» для завершения записи в файл.
-=== ПРИМЕР 3 ===-
$ sudo sh -c 'cat > file_name TEXT HERE EOF'
Или можно использовать что-то типа:
$ cat > tmp.txt fdsfsdf > dsf > f > s > ff > sf > f > s > TXT
Т.е вхождение у меня — TXT. Начало и конец записи регулируется именно этими символами.
Вставить текст в файл через утилиту echo в Unix/Linux
Чтобы вставить какой-то текст в файл с помощью команды echo, можно так (данная команда затрет файл и вставит именно то, что передадите ей):
# echo "this is a test text" > /home/$USER/test.txt
Или, можно дописать в самый конец файла следующей командой:
# echo "this is a test text" >> /home/$USER/test.txt
Вставить текст в файл через утилиту printf в Unix/Linux
Чтобы вставить какой-то текст в файл с помощью команды printf, можно так (данная команда затрет файл и вставит именно то, что передадите ей):
$ printf "hello" > filename
Или, можно дописать в самый конец файла следующей командой:
# printf "this is a test text" >> /home/$USER/test.txt
Или много строчный текст:
$ printf "hello > fsdf > dsf > > fsfd > > dsff > " > file_name
Вставить текст в файл через утилиту tee в Unix/Linux
Например, сделать это можно следующим образом:
$ tee -a file_nameВставить текст в файл через python в Unix/Linux
Можно это сделать (создать файл и прописать в него):
with open("file_name.txt", "a") as file_name: myfile.write("TEXT HERE")Если появятся еще идеи как можно это сделать (SED — не всчет), дополню данную статью.
Вот и все, статья «Вставить текст в файл в Unix/Linux» завершена.