it-swarm.com.de

Wie füge ich einer Datei mehrere Textzeilen hinzu?

Ich möchte diesen Text anhängen:

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

in die Datei /etc/Apache2/Apache2.conf

Ich habe Zugriff über SSH, weiß aber nicht, wie ich VIM verwenden soll. Ich möchte dies über einen Befehl tun.

6
JD Isaacks

Verwenden:

_nano /etc/Apache2/Apache2.conf
_

(Möglicherweise müssen Sie Sudo verwenden.)

Dadurch erhalten Sie einen Befehlszeilentexteditor, der ähnlich wie normale Texteditoren funktioniert. Verwenden Sie die Pfeiltasten, um zu navigieren. Rücktaste, Enter usw. funktionieren wie gewohnt.

Zum Speichern drücken Sie Ctrl+O und verwenden Ctrl+X beenden. Um Hilfe zu erhalten, drücken Sie Ctrl+G von innen nano, oder verwenden Sie man nano .

Es sollte ungefähr so ​​aussehen:

nano

6
dv3500ea

Diese Syntax heißt "HERE documents":

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

Diese Lösung ist besser als die Verwendung von Strg-D, da sie in Shell-Skripten verwendet werden kann.

16
ithkuil

Hier ist eine einfache Möglichkeit, dies mit cat zu tun.

% cat - >> testf
one
two
   three
four

Sie beenden Ihre Eingabe mit CTRL-D .

Dies übernimmt die interaktive Eingabe von cat (d. H. Was auch immer Sie eingeben) und hängt sie an die vorhandene Datei testf an.

testf (mit zwei intakten Originalzeilen) sieht jetzt so aus:

original line 1
original line 2

one
two
   three
four

Wie andere Antworten gezeigt haben, benötigen Sie beim Bearbeiten von Dateien, für die Sie keine Schreibberechtigung haben, eine spezielle Syntax. Ich finde es einfacher, einfach zum Root-Benutzer zu wechseln, d. H. Sudo su. Eine andere einfache Methode besteht darin, tee mit gesetztem Append-Flag zu verwenden und mit Sudo aufzurufen:

Sudo tee -a >> config.conf

2
belacqua

Da Sie nach einem Vim gefragt haben, ist hier der auszuführende Befehl:

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

Wenn Sie nicht über vim verfügen, entspricht dies entweder vi -e oder ex.

Alternativer sauberer Ansatz:

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

Führen Sie einfach die erste Zeile aus (ohne $), fügen Sie den mehrzeiligen Text ein und geben Sie EOF ein, um den Vorgang abzuschließen.

0
kenorb

Der nano -Editor ist benutzerfreundlicher (Sudo apt-get install nano, falls nicht verfügbar).

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
user8290