Добавить строку в файл linux

Обновлено: 04.07.2024

Я пишу bash-скрипт для поиска файла, если он не существует, затем создайте его и добавьте к нему:

Так что "line then new line 'tab' then text" я думаю, что это чувствительный формат. Я знаю, что вы можете сделать это:

Но это кажется странным, так как его две строки. Есть ли способ добавить это в этом формате:

Если для записи в файл необходимы sudo (другие привилегии пользователя), используйте это:

@TheLegend Это называется «документ здесь». Посмотрите на этот абзац на странице руководства. Еще одна возможность ( echo "line 1" ; echo "line 2" ) >>greetings.txt . @ ott-- Вам не нужен настоящий подоболочек (то есть, вы можете сохранить один новый процесс), этого достаточно: < echo "line 1" ; echo "line 2"; >>>greetings.txt @cikatomo В просто случайная строка. Может быть тоже. cat <<EOT EOT cat <<FOO

Или, если вам нужна буквальная вкладка (а не четыре пробела в вашем вопросе):

Вы можете достичь того же эффекта с echo , но точно, как варьируется от реализации к реализации, в то время как printf является постоянным.

Другой подход заключается в использовании tee

Несколько строк выбора со tee страницы руководства пользователя:

Утилита tee копирует стандартный ввод в стандартный вывод, делая копию в ноль или более файлов.

-a - Добавляет вывод к файлам, а не перезаписывает их.

SED может добавить строку в конец файла следующим образом:

sed -i '$ a text to be inserted' fileName.file
$ выбирает конец файла, a сообщает ему добавить, и после этого следует текст, который нужно вставить. Тогда конечно имя файла.

Есть ли у этого подхода какие-либо дополнительные преимущества по сравнению с другими решениями?
Да, этот подход имеет дополнительное преимущество, заключающееся в добавлении любых файлов, возвращаемых при поиске, например: find . -name "*.html" -exec sed -i '$ a </html>' <> \;

Я использовал приведенный выше пример, чтобы вставить конечный HTML-тег, который отсутствовал на каждой HTML-странице в нескольких каталогах.

В Bash есть несколько способов добавить текст в файл. Эта статья объясняет некоторые из них.

Добавить в файл с помощью оператора перенаправления ( >> )

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

Существует ряд команд, которые вы можете использовать для вывода текста на стандартный вывод и перенаправления его в файл, причем наиболее часто используются команды echo и printf .

Чтобы добавить текст в файл, укажите имя файла после оператора перенаправления:

При использовании с параметром -e команда echo интерпретирует экранированные символы обратной косой черты, такие как новая строка n :

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

Например, вы можете передать содержимое команде cat и добавить его в файл:

Вы можете добавить вывод любой команды в файл. Вот пример с командой date :

При добавлении к файлу с использованием перенаправления будьте осторожны, чтобы не использовать оператор > для перезаписи важного существующего файла.

Добавить в файл с помощью команды tee

По умолчанию команда tee перезаписывает указанный файл. Чтобы добавить вывод в файл, используйте tee с параметром -a ( --append ):

Если вы не хотите, чтобы tee выводил данные на стандартный вывод, перенаправьте его на /dev/null :

Преимущество использования команды tee перед оператором >> заключается в том, что tee позволяет добавлять текст сразу в несколько файлов и записывать в файлы, принадлежащие другим пользователям, вместе с sudo .

Чтобы добавить текст в файл, в который у вас нет прав на запись, добавьте sudo перед tee как показано ниже:

tee получает вывод команды echo , повышает разрешения sudo и записывает в файл.

Чтобы добавить текст в несколько файлов, укажите файлы в качестве аргументов команды tee :

Выводы

В Linux для добавления текста в файл используйте оператор перенаправления >> или команду tee .

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

Favorite

Добавить в избранное

Как создать псевдонимы Bash

В Bash есть несколько способов добавить текст в файл. Эта статья объясняет некоторые из них.

Чтобы добавить текст в файл, вам необходимо иметь права на запись в него. В противном случае вы получите ошибку «permission denied».

Добавить в файл с помощью оператора перенаправления ( >>)

Перенаправление позволяет вам захватывать выходные данные из команды и отправлять их в качестве входных данных для другой команды или файла. Оператор перенаправления >> добавляет вывод к данному файлу.

Чтобы добавить текст в файл, укажите имя файла после оператора перенаправления:

При использовании с параметром -e команда echo интерпретирует символы с обратной косой чертой, такие как символ новой строки \n:

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

Например, вы можете передать содержимое команде cat и добавить его в файл:

cat « EOF » file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF

Вы можете добавить вывод любой команды в файл. Вот пример с командой date:

При добавлении в файл с помощью перенаправления будьте осторожны, чтобы не использовать оператор > для перезаписи существующего существующего файла.

Добавить в файл с помощью команды tee

Команда tee утилита командной строки в Linux, которая читает из стандартного ввода и записывает как в стандартный вывод, так и в один или несколько файлов одновременно.

Читать Использование команды SCP для безопасной передачи файлов в Linux

Если вы не хотите tee использовать в стандартном выводе, перенаправьте его на /dev/null:

Преимущество использования команды tee над оператором >> заключается в том, что tee вы можете добавлять текст в несколько файлов одновременно и записывать файлы, принадлежащие другим пользователям вместе с sudo.

Чтобы добавить текст в файл, на который вы не имеете права на запись, добавьте sudo до tee как показано ниже:

tee получает выходные данные команды echo, повышает разрешения sudo и записывает в файл.

Чтобы добавить текст в несколько файлов, укажите эти файлы в качестве аргументов команды tee:

Вывод

В Linux, чтобы добавить текст в файл, используйте оператор >> перенаправления или команду tee.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Команда cat представляет собой инструмент Unix, используемый для управления и отображения содержимого файлов. Команда получила свое название от слова «concatenate», потому что, помимо прочего, она может объединять файлы.

В этой статье мы рассмотрим несколько простых способов использования этой команды для записи текста в файл с примерами. Использование cat очень простое, поэтому для продолжения работы не требуется никакого предварительного программирования или опыта работы с Unix.

Основы команд&nbsp;cat

Начнем с того, что мы просто опишем основы команды cat , чтобы помочь вам, если вы никогда не использовали ее раньше или вам нужен краткий обзор.

Синтаксис

Синтаксис выглядит так:

Чтобы быстро найти синтаксис или параметры команды, запустите cat с параметром справки:

Или, вы можете использовать:

Эти команды должны отображать следующий список параметров:

Отображение содержимого файла на стандартном выводе

Чтобы вывести содержимое файла на стандартный вывод, просто назовите файл, который хотите отобразить:

Если файл находится в другом каталоге, вам нужно указать его:

Мы ожидаем увидеть содержимое этого файла, распечатанное на стандартный вывод, в данном случае - терминал:

Это наиболее распространенное использование команды cat, поскольку она позволяет легко просматривать содержимое файла, не открывая текстовый редактор.

Запись текста в файл с помощью&nbsp;cat

Это приведет к замене содержимого filename2 на содержимое filename1 , поэтому убедитесь, что он не содержит ничего, что вы бы не хотели потерять. Теперь filename2 содержит:

Оператор перенаправления вывода перенаправит вывод любой вызываемой нами команды. Например, давайте попробуем это с помощью команды pwd , которая печатает имя текущего рабочего каталога:

Если мы посмотрим сейчас на testfile :

Он содержит путь к текущему рабочему каталогу:

Если файл, на который вы перенаправляете, не существует, будет создан файл с таким именем:

Объединение файлов с помощью&nbsp;cat

Объединить несколько файлов с помощью cat очень просто - просто перечислите файлы в желаемом порядке:

Этот код берет файлы filename1 и filename2 , сцепляет их и выводит на новый outputfile :

Стандартный ввод между файлами

Когда имя входного файла отсутствует в списке, cat начинает чтение со стандартного ввода до тех пор, пока не достигнет EOF (конца файла). Сигнал о конце файла отправляется ctrl+d в командной строке:

Мы даже можем добавить текст из стандартного ввода между файлами, которые мы хотим объединить, используя - , чтобы указать, где мы ожидаем стандартный ввод. Если у нас есть такие файлы, как filename1 , filename2 и filename3 , и нам нужен текст из стандартного ввода между filename1 и filename2 , мы должны написать:

Проверив output , мы увидим что-то вроде:

Добавление файлов с помощью&nbsp;cat

В предыдущих примерах использование оператора перенаправления отбрасывало предыдущее содержимое файла output . Что, если мы хотим добавить новый контент к старому? Для добавления файлов мы используем оператор >> :

И это должно привести к:

Объединение содержимого всего каталога файлов с помощью&nbsp;cat

Чтобы объединить все содержимое всех файлов в каталоге, мы используем подстановочный знак * :

Чтобы объединить все содержимое всех файлов в текущем рабочем каталоге, мы будем использовать:

* также можно использовать для объединения всех файлов с одинаковым расширением:

Перечисление номеров строк

Перечисление всех строк вывода осуществляется с помощью опции -n :

Что бы написать что-то вроде:

Напишите $ в конце каждой строки

В опции -E знаменует конец каждой строки в файле с $ :

Сортировка строк составных файлов по конвейеру

Это немного обман. Команда cat не может сортировать, но для этого мы можем использовать конвейер. Команда канала ( | ) используется для превращения вывода одной команды во ввод другой. Чтобы отсортировать строки файла, мы будем использовать обе cat и еще одну команду sort :

Вывод

Cat - это простой, но мощный инструмент Unix, который предустановлен в большинстве систем. Его можно использовать отдельно или в сочетании с другими командами с помощью каналов. Первоначально созданный Кеном Томпсоном и Деннисом Ритчи в 1971 году, cat простой в использовании и интуитивно понятный функционал выдерживает испытание временем.

В этой статье мы изучили некоторые возможности использования команды cat для записи текста в файлы, проверки содержимого, объединения и добавления файлов, а также для перечисления строк и их сортировки.

Читайте также: