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

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

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

в файл /etc/apache2/apache2.conf

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

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

5 ответов

Используйте:

nano /etc/apache2/apache2.conf

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

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

Для сохранения нажмите Ctrl + O и используйте Ctrl + X , чтобы Выход. Для получения справки нажмите Ctrl + G изнутри nano или используйте man nano .

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

nano

6
ответ дан 13 September 2011 в 02:54

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

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

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

16
ответ дан 13 September 2011 в 02:54

Так как вы запросили 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
ответ дан 13 September 2011 в 02:54

Вот простой способ сделать это, используя 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
ответ дан 13 September 2011 в 02:54

Редактор 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
ответ дан 13 September 2011 в 02:54

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

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