Как записать информацию в файл linux
Перейти к содержимому

Как записать информацию в файл linux

  • автор:

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

Запись в файлы с помощью команды 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 для записи текста в файлы, проверки содержимого, объединения и добавления файлов, а также для перечисления строк и их сортировки.

Источник:

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 .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Запись в начало файла

Как с помощью bash и gnu-утилит записать текст в начало файла, не затирая его?
Спасибо.

pashazz ★★★★
30.01.10 22:17:46 MSK

Если есть возможность поставить moreutils, то можно сделать так:

( echo 'New first line.'; cat file.txt ) | sponge file.txt 

Deleted
( 30.01.10 22:22:12 MSK )

скопировать файл, записать новый в хвост ему дописать старый, все равно в файловая система не позвоялет добавлять в начало вайла так что полюбому будет изврат

wfrr ★★☆
( 30.01.10 22:31:28 MSK )

можно поизвращаться с sedом и a\. у меня получилось вставить текст только после первой строки файла.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *