:w ! sudo tee %

28 Aug 2013

Ich bin immer wieder erstaunt wie viele (angehende) Admins den folgenden Trick bzw. Befehl nicht kennen obwohl sicherlich jeder schon mehrmals in das folgende Problem gelaufen ist:

Man editiert eine schreibgeschützte oder nur von root beschreibbare Datei mit dem vi und bemerkt natürlich erst am Ende, dass man diese nicht sichern kann.

Was macht man also? Klar: als andere Datei speichern, vi beenden und danach über die Originaldatei drüber kopieren. Oder noch schlimmer: vi beenden, mit sudo nochmal öffnen und die Änderungen nochmal vornehmen.

Das geht auch einfacher. Der Schlüssel zum Erfolg lautet

:w ! sudo tee % 

oder unter Solaris

:w ! pfexec tee %

Dieser Befehl erscheint auf den ersten Blick nicht besonders intuitiv aber wenn man sich die Bedeutung der einzelnen Bestandteile genauer anschaut kann man sich das sogar ganz gut merken.

Er besagt: schreibe den Inhalt des Editors in eine Pipe an deren anderen Ende das ganze mithilfe von sudo und tee wieder zurück in die Ausgangsdatei geschrieben wird.

Das w steht hierbei für schreibe (write) den Inhalt in die Pipe (! steht hier alternativ für das Pipesymbol |) und mittels sudo und tee (die bekannten Shellbefehle) in die Ausgangsdatei (% ist der Platzhalter für den Dateinamen der geöffneten Datei).

Vi bemerkt natürlich, dass sich die Datei geändert hat und bietet an, sie entsprechend neu zu laden (Taste L).

Wenn man weiß, was der Befehl bewirkt, sollte es kein Problem sein sich bei Bedarf daran zu erinnern und ihn entsprechend anzuwenden. Sudo make Schnittchen.

vi sudo write tee permission pfexec
comments powered by Disqus