2017-01-13 8 views
-1

Я пытаюсь написать несколько строк в текстовый файл, например так:убунту: написать несколько строк в текстовый файл

cat <<EOT >> /etc/apache2/sites-available/eco.conf 
<VirtualHost *:80> 
    ServerName eco.vagrant 
    DocumentRoot /var/www/eco/website/public  

    <Directory var/www/eco/website/public/> 
     Options FollowSymLinks 
     AllowOverride All 
    </Directory> 

    # Logging 
    ErrorLog /var/log/apache2/eco-error.log 
    LogLevel notice 
    CustomLog /var/log/apache2/eco-access.log combined 
</VirtualHost> 
EOT 

Но я получаю bash: /etc/apache2/sites-available/o-eco.conf: Permission denied

Так что я попытался sudo cat..., но так же ,

я очень хотел иметь его, как это, а не в одной строке, так как это в Баш скрипт, и я могу четко видеть содержание того, что будет написано с отступы и т.д.

Какой инструмент я должен использовать для пишите таким образом? Или как я должен использовать кошку здесь?

+1

У вас нет разрешения на запись в файл. Синтаксис не имеет значения. – Barmar

+0

Этот вопрос лучше подходит для пользователей Super User или Linux SE. – EJoshuaS

ответ

2

Если вы делаете sudo cat <<EOT >>filename, выходное перенаправление происходит в исходной оболочке, а не в режиме суперпользователя, поэтому он все еще не работает. Вам нужно перенести перенаправление в процесс суперпользователя, явно выполнив оболочку.

sudo bash -c 'cat <<EOT >>/etc/apache2/sites-available/eco.conf 
<VirtualHost *:80> 
    ServerName eco.vagrant 
    DocumentRoot /var/www/eco/website/public  

    <Directory var/www/eco/website/public/> 
     Options FollowSymLinks 
     AllowOverride All 
    </Directory> 

    # Logging 
    ErrorLog /var/log/apache2/eco-error.log 
    LogLevel notice 
    CustomLog /var/log/apache2/eco-access.log combined 
</VirtualHost> 
EOT 
' 
1

Простой способ избежать необходимости иметь дело с дополнительной ссылкой на это трубы ваша команда sudo tee как:

cat <<EOT | sudo tee -a /path/to/eco.conf >&- 
... 
EOT 
  • | tee filename заменяет >filename
  • | tee -a filename заменяет >>filename
  • Добавление >&- (или >/dev/null) молчание tee, повторяя все, что он пишет, stdout.
+0

Использование кошки может быть устранено: 'sudo tee -a /path/to/eco.conf> & - << EOT' –