sed Zeile am Ende einer Datei einfügen geht nicht?

3 Antworten

Ich weiß zwar niht, was Deine Fehlermeldungen bedeuten (und warum Dein sed Deutsch spricht), aber ich kann Dir zumindest sagen, wie man mit sed eine Zeile anhängt.

Sed versteht Befehle, die entweder in einem Script oder mit -e auf der Command Line stehen. Diese Befehle haben meist kryptische Syntax; sie enthalten einen Bereich, eine Tätigkeit und die herumzujonglierenen Textfragmente. In Deinem Fall ist der Bereich $ (Fileende), die Operation ist a (append), und dann kommt das Zeug, das Du ran­ge­hängt haben willst.

sed -i -e '$avm.swappiness=10' /etc/sysctl.conf

sollte also die Zeile vm.swappiness=10 an das Ende von /etc/sysctl.conf anhängen. Die Option -i sagt dabei, daß das alte File überschrieben werden soll.

Es ist aber wesentlich vernünftiger, wenn Du em Rat von stdio folgst und echo nimmst. Denn sed ist ein Universaltool ohne Netz; es kann sehr viel schiefgehen, wenn man sich mit der kryptischen Syntax und Arbeitsweise von sed nicht auskennt. Falsch gebaute Befehle können, wenn mach Pech hat, irgendetwas anderes be­deu­ten und über­raschende Wirkung entfalten. Mit echo kann man dagegen kaum Un­fug an­stel­­len, und da­her ist es das Tool der Wahl, wenn man an Systemfiles herumpfuscht.

-i bedeutet erstmal nur, daß sed inplace arbeitet.

Von Experte julihan41 bestätigt

Vergiss sed in diesem Zusammenhang und machs einfach so:

echo "vm.swappiness=10" >>/etc/sysctl.conf
Woher ich das weiß:Berufserfahrung