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

Я хочу добавить этот текст:

<Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory>

к файлу /etc/apache2/apache2.conf

У меня есть доступ через SSH, но я не знаю, как использовать VIM. Я хотел бы сделать это с помощью команды.

6
задан 13 September 2011 в 03:54

45 ответов

Этот синтаксис называется «ЗДЕСЬ документы»:

sudo tee -a /tmp/file <<EOF <Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory> EOF

Это решение лучше, чем использование ctrl-d, поскольку оно может использоваться внутри скриптов оболочки.

13
ответ дан 4 August 2018 в 20:00
  • 1
    Я согласен с «для использования внутри сценариев оболочки, вы захотите использовать синтаксис документа HERE». – belacqua 9 February 2011 в 23:29
  • 2
    btw, иногда ctrl-d не работает. Мне когда-то пришлось вставить что-то в файл с консоли xen, на которой запущена оболочка initrd с неполной поддержкой терминала; ctrl-c, ctrl-d и т. д. не работало, поэтому мне пришлось прибегать к документу HERO также интерактивно. – ithkuil 10 February 2011 в 13:30
  • 3
    То, что cat совершенно бесполезно, достаточно tee. [F3]. – geirha 3 March 2011 в 11:47
  • 4
    да, cat часто злоупотребляют – ithkuil 3 March 2011 в 20:59

поскольку вы просили Вим, вот команда для запуска:

sudo vim -e +'$put = \"<Directory \\"/var/www/*\\">\n\tOrder allow,deny\n\tAllow from all\n\tAllowOverride All\n</Directory>\n\"' -cwq /etc/apache2/apache2.conf

если у вас нет vim, это эквивалентно либо vi -e или [F5].

альтернативные чище подход:

$ sudo ex +"r /dev/stdin" -cwq output.txt <<-EOF <Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory> EOF

просто выполнить первую строчку (без $), вставьте мульти текстовой строки, затем введите EOF до конца.

0
ответ дан 4 August 2018 в 20:00

Редактор nano более дружелюбен (sudo apt-get install nano, если он недоступен).

echo "<Directory \"/var/www/*\">" > out_file echo " Order allow,deny" >> out_file echo " Allow from all" >> out_file echo " AllowOverride All" >> out_file echo "</Directory>" >> out_file cat out_file | sudo tee -a /etc/apache2/apache2.conf
0
ответ дан 4 August 2018 в 20:00
  • 1
    Вы должны сначала сделайте резервную копию, когда слепо редактирования, такие как этот - это очень легко, чтобы что-то опечатку и в конечном итоге удалив весь файл. – dv3500ea 9 February 2011 в 22:05

Вот простой способ сделать это, используя cat.

% cat - >> testf one two three four

Вы завершаете ввод с помощью CTRL-D.

Для этого требуется интерактивный ввод из cat (т. е. все, что вы вводите), и добавляет его в существующий файл testf.

testf (с двумя исходными строками intact) теперь будет выглядеть так:

original line 1 original line 2 one two three four

Как показали другие ответы, для редактирования файлов, на которые у вас нет разрешения на запись, вам понадобится специальный синтаксис. Мне проще просто переключиться на пользователя root для этого, т. Е. [F7]. Но еще один простой способ - использовать tee с установленным флагом присоединения и вызвать с помощью sudo:

sudo tee -a >> config.conf

2
ответ дан 6 August 2018 в 04:02

Этот синтаксис называется «ЗДЕСЬ документы»:

sudo tee -a /tmp/file <<EOF <Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory> EOF

Это решение лучше, чем использование ctrl-d, поскольку оно может использоваться внутри скриптов оболочки.

13
ответ дан 6 August 2018 в 04:02
  • 1
    Я бы согласился с 'для использования внутри Shell-скрипты, вы хотите использовать синтаксис документа . – belacqua 9 February 2011 в 23:29
  • 2
    btw, иногда ctrl-d не работает. Мне когда-то пришлось вставить что-то в файл с консоли xen, на которой запущена оболочка initrd с неполной поддержкой терминала; ctrl-c, ctrl-d и т. д. не работало, поэтому мне пришлось прибегать к документу HERO также интерактивно. – ithkuil 10 February 2011 в 13:30
  • 3
    То, что cat совершенно бесполезно, достаточно tee. [F3]. – geirha 3 March 2011 в 11:47
  • 4
    да, cat часто злоупотребляют – ithkuil 3 March 2011 в 20:59

Поскольку вы попросили Vim, вот команда для запуска:

sudo vim -e +'$put = \"<Directory \\"/var/www/*\\">\n\tOrder allow,deny\n\tAllow from all\n\tAllowOverride All\n</Directory>\n\"' -cwq /etc/apache2/apache2.conf

Если у вас нет vim, это также эквивалентно либо vi -e, либо ex .

Альтернативный подход к очистке:

$ sudo ex +"r /dev/stdin" -cwq output.txt <<-EOF <Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory> EOF

Просто запустите первую строку (без $), вставьте многострочный текст, затем введите EOF, чтобы закончить.

0
ответ дан 6 August 2018 в 04:02

Редактор nano более дружелюбен (sudo apt-get install nano, если он недоступен).

echo "<Directory \"/var/www/*\">" > out_file echo " Order allow,deny" >> out_file echo " Allow from all" >> out_file echo " AllowOverride All" >> out_file echo "</Directory>" >> out_file cat out_file | sudo tee -a /etc/apache2/apache2.conf
0
ответ дан 6 August 2018 в 04:02
  • 1
    Сначала вы должны сделать резервную копию, когда слепо редактируете, как это, - очень легко что-то ввести в заблуждение и в конечном итоге скрыть весь файл. – dv3500ea 9 February 2011 в 22:05

Вот простой способ сделать это, используя cat.

% cat - >> testf one two three four

Вы завершаете ввод с помощью CTRL-D.

Для этого требуется интерактивный ввод из cat (т. е. все, что вы вводите), и добавляет его в существующий файл testf.

testf (с двумя исходными строками intact) теперь будет выглядеть так:

original line 1 original line 2 one two three four

Как показали другие ответы, для редактирования файлов, на которые у вас нет разрешения на запись, вам понадобится специальный синтаксис. Мне проще просто переключиться на пользователя root для этого, т. Е. [F7]. Но еще один простой способ - использовать tee с установленным флагом присоединения и вызвать с помощью sudo:

sudo tee -a >> config.conf

2
ответ дан 7 August 2018 в 22:00

Этот синтаксис называется «ЗДЕСЬ документы»:

sudo tee -a /tmp/file <<EOF <Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory> EOF

Это решение лучше, чем использование ctrl-d, поскольку оно может использоваться внутри скриптов оболочки.

13
ответ дан 7 August 2018 в 22:00
  • 1
    Я согласен с «для использования внутри сценариев оболочки, вы захотите использовать синтаксис документа HERE». – belacqua 9 February 2011 в 23:29
  • 2
    btw, иногда ctrl-d не работает. Мне когда-то пришлось вставить что-то в файл с консоли xen, на которой запущена оболочка initrd с неполной поддержкой терминала; ctrl-c, ctrl-d и т. д. не работало, поэтому мне пришлось прибегать к документу HERO также интерактивно. – ithkuil 10 February 2011 в 13:30
  • 3
    То, что cat совершенно бесполезно, достаточно tee. [F3]. – geirha 3 March 2011 в 11:47
  • 4
    да, cat часто злоупотребляют – ithkuil 3 March 2011 в 20:59

Поскольку вы попросили Vim, вот команда для запуска:

sudo vim -e +'$put = \"<Directory \\"/var/www/*\\">\n\tOrder allow,deny\n\tAllow from all\n\tAllowOverride All\n</Directory>\n\"' -cwq /etc/apache2/apache2.conf

Если у вас нет vim, это также эквивалентно либо vi -e, либо ex .

Альтернативный подход к очистке:

$ sudo ex +"r /dev/stdin" -cwq output.txt <<-EOF <Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory> EOF

Просто запустите первую строку (без $), вставьте многострочный текст, затем введите EOF, чтобы закончить.

0
ответ дан 7 August 2018 в 22:00

Редактор nano более дружелюбен (sudo apt-get install nano, если он недоступен).

echo "<Directory \"/var/www/*\">" > out_file echo " Order allow,deny" >> out_file echo " Allow from all" >> out_file echo " AllowOverride All" >> out_file echo "</Directory>" >> out_file cat out_file | sudo tee -a /etc/apache2/apache2.conf
0
ответ дан 7 August 2018 в 22:00
  • 1
    Сначала вы должны сделать резервную копию, когда слепо редактируете, как это, - очень легко что-то ввести в заблуждение и в конечном итоге скрыть весь файл. – dv3500ea 9 February 2011 в 22:05

вот простой способ сделать это, используя cat .

% cat - >> testf one two three four

Вам завершить ваш вклад с помощью сочетания клавиш Ctrl-Д' .

это требует интерактивного ввода от cat (т. е., все, что вы типа В), и добавляет его к существующему файлу testf .

testf (с неповрежденными две оригинальные линии) будет выглядеть так:

original line 1 original line 2 one two three four

, как и другие ответы показали, вам понадобится специальный синтаксис при редактировании файлов, которые Вы не имеете разрешения на запись. Мне легче просто переключиться на пользователя root для этого, т. е. sudo su . А вот еще один простой способ заключается в использовании tee с набором добавлять флаг, и называется с sudo:

sudo tee -a >> config.conf

2
ответ дан 10 August 2018 в 10:15

Этот синтаксис называется «ЗДЕСЬ документы»:

sudo tee -a /tmp/file <<EOF <Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory> EOF

Это решение лучше, чем использование ctrl-d, поскольку оно может использоваться внутри скриптов оболочки.

13
ответ дан 10 August 2018 в 10:15
  • 1
    Я согласен с «для использования внутри сценариев оболочки, вы захотите использовать синтаксис документа HERE». – belacqua 9 February 2011 в 23:29
  • 2
    btw, иногда ctrl-d не работает. Мне когда-то пришлось вставить что-то в файл с консоли xen, на которой запущена оболочка initrd с неполной поддержкой терминала; ctrl-c, ctrl-d и т. д. не работало, поэтому мне пришлось прибегать к документу HERO также интерактивно. – ithkuil 10 February 2011 в 13:30
  • 3
    То, что cat совершенно бесполезно, достаточно tee. [F3]. – geirha 3 March 2011 в 11:47
  • 4
    да, cat часто злоупотребляют – ithkuil 3 March 2011 в 20:59

Поскольку вы попросили Vim, вот команда для запуска:

sudo vim -e +'$put = \"<Directory \\"/var/www/*\\">\n\tOrder allow,deny\n\tAllow from all\n\tAllowOverride All\n</Directory>\n\"' -cwq /etc/apache2/apache2.conf

Если у вас нет vim, это также эквивалентно либо vi -e, либо ex .

Альтернативный подход к очистке:

$ sudo ex +"r /dev/stdin" -cwq output.txt <<-EOF <Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory> EOF

Просто запустите первую строку (без $), вставьте многострочный текст, затем введите EOF, чтобы закончить.

0
ответ дан 10 August 2018 в 10:15

Редактор nano более дружелюбен (sudo apt-get install nano, если он недоступен).

echo "<Directory \"/var/www/*\">" > out_file echo " Order allow,deny" >> out_file echo " Allow from all" >> out_file echo " AllowOverride All" >> out_file echo "</Directory>" >> out_file cat out_file | sudo tee -a /etc/apache2/apache2.conf
0
ответ дан 10 August 2018 в 10:15
  • 1
    Сначала вы должны сделать резервную копию, когда слепо редактируете, как это, - очень легко что-то ввести в заблуждение и в конечном итоге скрыть весь файл. – dv3500ea 9 February 2011 в 22:05

Другие вопросы по тегам:

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