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


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

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

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

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


6
2018-02-09 17:49


Источник


Может быть, я что-то упустил, но почему вы не используете nano? - luri


Ответы:


Использование:

nano /etc/apache2/apache2.conf

(вам может потребоваться использовать sudo)

Это даст вам текстовый редактор командной строки, который работает так же, как и обычные текстовые редакторы. Используйте клавиши со стрелками для навигации. Backspace, enter и т. Д. Работают как обычно.

Чтобы сохранить, нажмите Ctrl+О и использовать Ctrl+Икс выйти. Для получения справки нажмите Ctrl+г изнутри нано или использовать man nano,

Он должен выглядеть примерно так:

nano


6
2018-02-09 17:59



Очень полезно спасибо! :) - JD Isaacks


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

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

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


13
2018-02-09 18:16



Я согласен с «для использования внутри сценариев оболочки, вы захотите использовать синтаксис документа HERE». - belacqua
btw, иногда ctrl-d не работает. Мне когда-то пришлось вставить что-то в файл с консоли xen, на которой запущена оболочка initrd с неполной поддержкой терминала; ctrl-c, ctrl-d и т. д. не работало, поэтому мне пришлось прибегать к документу HERO также интерактивно. - ithkuil
Что cat совершенно бесполезен, просто tee достаточно. sudo tee -a /tmp/file << EOF, - geirha
да, cat часто злоупотребляют - ithkuil


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

% cat - >> testf
one
two
   three
four

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

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

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

original line 1
original line 2

one
two
   three
four

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

sudo tee -a >> config.conf


2
2018-02-09 18:05





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
2018-02-09 18:02



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


Поскольку вы попросили 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
2018-05-25 10:35