Как добавить несколько строк в файл

Если Вы хотите, чтобы ОС полностью проигнорировала его, необходимо сделать использование дыры памяти"memmap." Посмотрите эту ссылку. Например, если Вы хотите 512M в барьере на 2 ГБ, можно поместить"memmap=512M$2G"на Вашей командной строке ядра.

Необходимо будет проверить Ваш dmesg чтобы найти, что непрерывная дыра крадет так Вас, не топают ни на каких устройствах; это характерно для Вашего motherboard+cards.

Это не рекомендуемый способ сделать, вещи - видят ответ Warren Young для того, как правильно сделать это (драйверы ядра + DMA). Я отвечаю на точный вопрос, который Вы задали. Если Вы запланируете создание этого для конечных пользователей, то они будут ненавидеть Вас, если Вы сделаете это им... доверяет мне, это - единственная причина, я знал этот ответ.


Править: При использовании неряшливого grub2 w/(например, CentOS 7), необходимо удостовериться, что вышли из $. Должен быть сингл \ прежде $. Пример:

$ sudo -v
$ sudo grubby --update-kernel=ALL --args=memmap='128M\\$0x57EF0000'
$ sudo grubby --info $(sudo grubby --default-kernel) | grep memmap
args="ro crashkernel=auto ... memmap=128M\$0x57EF0000"

329
14.04.2017, 17:04
9 ответов
# possibility 1:
echo "line 1" >> greetings.txt
echo "line 2" >> greetings.txt

# possibility 2:
echo "line 1
line 2" >> greetings.txt

# possibility 3:
cat <<EOT >> greetings.txt
line 1
line 2
EOT

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

# possibility 1:
echo "line 1" | sudo tee -a greetings.txt > /dev/null

# possibility 3:
sudo tee -a greetings.txt > /dev/null <<EOT
line 1
line 2
EOT
573
27.01.2020, 19:26
  • 1
    @TheLegend, Который называют "здесь документ". Взгляните на тот абзац в странице справочника. –  Hauke Laging 27.05.2013, 18:00
  • 2
    Еще одна возможность ( echo "line 1" ; echo "line 2" ) >>greetings.txt. –  ott-- 27.05.2013, 18:38
  • 3
    @ott - Вам не нужна реальная подоболочка (т.е. может сохранить один новый процесс), это достаточно: { echo "line 1" ; echo "line 2"; } >>greetings.txt –  Hauke Laging 27.05.2013, 19:10
  • 4
    whts различие между EOT и EOL? –  cikatomo 09.01.2016, 20:34
  • 5
    @cikatomo В cat <<EOT EOT просто случайная строка. Мог быть cat <<FOO, также. –  Hauke Laging 09.01.2016, 22:37
printf '%s\n    %s\n' 'Host localhost' 'ForwardAgent yes' >> file.txt

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

printf '%s\n\t%s\n' 'Host localhost' 'ForwardAgent yes' >> file.txt

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

63
27.01.2020, 19:26
echo -e "Hello \nWorld \n" >> greetings.txt
38
27.01.2020, 19:26

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

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


Источник: http://www.yourownlinux.com/2015/04/sed-command-in-linux-append-and -insert-lines-to-file.html

========== EDIT ============

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

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

===================================

6
27.01.2020, 19:26

Я использовал sed, потому что его можно использовать с sudo. Например:

sudo sed -i '$ a text to be inserted' fileName.file 

альтернатива очень уродлива, как :

sudo bash -c "echo a text to be inserted >> fileName.file"  

и еще более уродлива, когда делается с ssh.

1
27.01.2020, 19:26

Еще один вкладыш:

echo "Greetings 1" >> greetings.txt && echo "Greetings 2" >> greetings.txt

Я бы предпочел вариант -e, так как он дает больше контроля:

echo -e "Greeting 1\nGreetings 2\n" >> greetings.txt
2
27.01.2020, 19:26

Además de la respuesta principal, en caso de que el archivo necesite permisos de superusuario, simplemente agregar sudodelante de echono funcionará.

Esto se debe a que Shell rompe los comandos y aunque echose ejecutó como root, >>se ejecutó con privilegios normales.

Esto funcionará para superusuario :sudo su -c "echo 'Line 3' >> greetings.txt"

0
27.01.2020, 19:26

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

tee -a ~/.ssh/config << END
Host localhost
  ForwardAgent yes
END

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

The tee utility copies standard input to standard output, making a copy in zero or more files.

-a - Append the output to the files rather than overwriting them.

38
27.01.2020, 19:26

Вот пример добавления нескольких строк в файл:

{
        echo '  directory "/var/cache/bind";'
        echo '  listen-on { 127.0.0.1; };'
        echo '  listen-on-v6 { none; };'
        echo '  version "";'
        echo '  auth-nxdomain no;'
        echo '  forward only;'  
        echo '  forwarders { 8.8.8.8; 8.8.4.4; };'
        echo '  dnssec-enable no;'
        echo '  dnssec-validation no;'
} >> your_file.txt
23
27.01.2020, 19:26

Теги

Похожие вопросы