2012-11-29 6 views
35

Comment puis-je, dans un script shell, créez un fichier appelé foo.conf et fais contenir:Créer un fichier avec le contenu de script shell

NameVirtualHost 127.0.0.1 

# Default 
<VirtualHost 127.0.0.1> 
ServerName localhost 
DocumentRoot "C:/wamp/www" 
</VirtualHost> 

Répondre

69

Utilisez un "document en":

cat > foo.conf << EOF 
NameVirtualHost 127.0.0.1 

# Default 
<VirtualHost 127.0.0.1> 
ServerName localhost 
DocumentRoot "C:/wamp/www" 
</VirtualHost> 
EOF 
+0

qu'est-ce que le << fait? –

+2

@BrianBolton Cela dit un "document ici" suivra. – ams

+0

@ams Peut-on avoir des variables interprétées dans le document? –

11

Vous pouvez le faire avec echo:

echo 'NameVirtualHost 127.0.0.1 

# Default 
<VirtualHost 127.0.0.1> 
ServerName localhost 
DocumentRoot "C:/wamp/www" 
</VirtualHost>' > foo.conf 

Tout entouré par des guillemets simples sont interprétées comme littéraux, s o vous venez d'écrire ce bloc dans un fichier appelé foo.conf. S'il n'existe pas, il sera créé. S'il existe, il sera écrasé.

+3

Cela fonctionne, mais est limité par la longueur maximale de la ligne de commande. – ams

+3

Aussi, cela ne fonctionne que tant que vous n'avez pas d'apostrophes dans le document. – mornfall

5

un heredoc pourrait être la façon la plus simple:

cat <<END >foo.conf 
NameVirtualHost 127.0.0.1 

# Default 
<VirtualHost 127.0.0.1> 
ServerName localhost 
DocumentRoot "C:/wamp/www" 
</VirtualHost> 
END 
4

Ce code installé le mieux pour moi:

sudo dd of=foo.conf << EOF 
<VirtualHost *:80> 
    ServerName localhost 
    DocumentRoot /var/www/localhost 
</VirtualHost> 
EOF 

Il était le seul que je pouvais utiliser sudo hors de la boîte!

Questions connexes