Ich will das tun:
echo "something" >> /etc/config_file
Da jedoch nur der Root-Benutzer Schreibrechte für diese Datei hat, kann ich das nicht tun. Aber das Folgende funktioniert auch nicht.
sudo echo "something" >> /etc/config_file
Gibt es in dieser Situation eine Möglichkeit, an eine Datei anzuhängen, ohne sie zuerst mit einem sudo
d-Editor öffnen und dann den neuen Inhalt manuell anhängen zu müssen ?
linux
command-line
sudo
hsribei
quelle
quelle
ls
mit Verzeichnispfad zeigt Dateien, aberls
mit Dateimuster nicht?Antworten:
Verwenden Sie
tee -a
(odertee --append
) mitsudo
So wird dein Befehl
Die Vorteile
tee
gegenüber der Ausführung von Bash mit Administratorrechten sind:quelle
tee
hat das-a
Anhänge-Flag.echo "output" | sudo tee -a file > /dev/null
Sie diese Option, wenn Sie die Konsolenausgabe überspringen möchten.Die Umleitung wird in der aktuellen Shell ausgeführt. Um die Umleitung mit erhöhten Rechten durchzuführen, müssen Sie die Shell selbst mit erhöhten Rechten ausführen:
quelle
Lassen Sie sudo eine Sub-Shell erzeugen:
In diesem Beispiel führt sudo "sh" mit dem Rest als Argument aus.
(Dies ist ein Beispiel in der sudo-Manpage)
quelle
Ich benutze normalerweise die Shell HIER document with sudo tee -a . Etwas in der Art von:
quelle
Meiner Meinung nach ist das Beste in diesem Fall dd:
quelle
Möglicherweise liegt ein Problem mit dem Sudo und der Umleitung vor. Verwenden Sie stattdessen einen Texteditor Ihrer Wahl, um die Zeile hinzuzufügen.
Oder Sie könnten es stattdessen mit su versuchen
quelle
su -c 'echo "JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile'
sollte arbeiten. da es nichts gibt, was die Shell fälschlicherweise in das Argument einbauen kann, um den Gesamtbefehl in Anführungszeichen zu setzen.Dies funktioniert nicht, wenn Sie versuchen,
>>
die Ausgabe von sudo umzuleiten (zu verwenden ). Was Sie wirklich tun möchten, ist die Ausgabe von umzuleitenecho
. Ich schlage vor, Sie verwenden einfach Ihren bevorzugten Editor und fügen diese Zeile manuell hinzu/etc/profile
. Dies hat den zusätzlichen Vorteil, dass Sie prüfen können, ob/etc/profile
bereits Sets vorhanden sindJAVA_HOME
.quelle
Verwenden Sie ex- way:
und durch
FOO
Ihre Variable ersetzen , um sie anzufügen.In einigen Systemen (wie z. B. OS X) verfügt die
/etc/profile
Datei über 444 Berechtigungen. Wenn Sie also weiterhin die Berechtigung verweigert bekommen , überprüfen und korrigieren Sie zuerst die Berechtigung:dann nochmal probieren.
quelle