Como anexar várias linhas de texto a um arquivo?

6

Eu quero acrescentar este texto:

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

para o arquivo /etc/apache2/apache2.conf

Eu tenho acesso via SSH, mas não sei como usar o VIM. Eu gostaria de fazer isso através de um comando.

    
por JD Isaacks 09.02.2011 / 18:49

5 respostas

6

Uso:

nano /etc/apache2/apache2.conf

(você pode precisar usar sudo )

Isto lhe dará um editor de texto de linha de comando que funciona como editores de texto normais. Use as setas do teclado para navegar. Backspace, enter, etc. funcionam normalmente.

Para salvar, pressione Ctrl + O e use Ctrl + X para sair. Para ajuda, pressione Ctrl + G dentro do nano, ou use man nano .

Deve ser algo assim:

    
por dv3500ea 09.02.2011 / 18:59
13

Essa sintaxe é chamada de "documentos AQUI":

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

Esta solução é melhor que usar ctrl-d, já que ela pode ser usada dentro de scripts de shell.

    
por ithkuil 09.02.2011 / 19:16
2

Aqui está uma maneira fácil de fazer isso, usando cat .

% cat - >> testf
one
two
   three
four

Você termina sua entrada com o CTRL-D .

Isso recebe uma entrada interativa de cat (ou seja, o que você digitar) e o anexa ao arquivo existente testf .

testf (com duas linhas originais intactas) será agora assim:

original line 1
original line 2

one
two
   three
four

Como outras respostas ilustraram, você precisará de uma sintaxe especial ao editar arquivos nos quais não tem permissão de gravação. Eu acho mais fácil apenas mudar para o usuário root para isso, ou seja, sudo su . Mas outro método fácil é usar tee com o sinalizador append set e chamado com sudo :

sudo tee -a >> config.conf

    
por belacqua 09.02.2011 / 19:05
0

O editor nano é mais amigável ( sudo apt-get install nano se não estiver disponível).

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
    
por user8290 09.02.2011 / 19:02
0

Já que você pediu por um Vim, aqui está o comando para executar:

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

Se você não tiver vim , isso também será equivalente a vi -e ou ex .

Abordagem de limpeza alternativa:

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

Basta executar a primeira linha (sem $ ), colar o texto com várias linhas e digitar EOF para concluir.

    
por kenorb 25.05.2015 / 12:35