staging.inyokaproject.org

tee vs. >>

Status: Ungelöst | Ubuntu-Version: Kubuntu 16.04 (Xenial Xerus)
Antworten |

Cordess

Anmeldungsdatum:
14. Mai 2006

Beiträge: 466

Ich bin gerade über folgende Kommandozeilenanweisung gestoßen:

1
echo 8021q | sudo tee -a /etc/modules

Ich selbst hätte das so gelöst:

1
sudo echo 8021q >> /etc/modules

Meine Frage ist nun, inwiefern ist die eine Lösung besser als die andere oder umgekehrt? Gibt's da einen Unterschied, einen Punkt an den ich nicht gedacht habe oder ist es egal, also sind die zwei Lösungen gleichwertig? Ich frage aus reiner Neugierde.

PS: Natürlich könnte man das was echo ausgeben soll, noch in Gänsefüßchen setzen, aber darum geht es hier jetzt nicht. Die ursprüngliche Anweisung fand ich in folgendem Artikel: https://blog.sleeplessbeastie.eu/2012/12/23/debian-how-to-create-vlan-interface/

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Cordess schrieb:

Ich bin gerade über folgende Kommandozeilenanweisung gestoßen:

1
echo 8021q | sudo tee -a /etc/modules

Ich selbst hätte das so gelöst:

1
sudo echo 8021q >> /etc/modules

Meine Frage ist nun, inwiefern ist die eine Lösung besser als die andere oder umgekehrt?

Die eine funktioniert, die andere nicht 😉

Gibt's da einen Unterschied, einen Punkt an den ich nicht gedacht habe oder ist es egal, also sind die zwei Lösungen gleichwertig?

Die Weiterleitung geschieht mit den Rechten des Nutzers, nicht des Nutzers des ersten Programms vor der Pipe. daher funktioniert zweiteres nicht, wenn der aktuelle Nutzer nicht root ist.

tee leitet die Daten nur durch, mit ein paar extra-Funktionen. Kann man nutzen um wie hier die Nutzerrechte fuers das Schreiben der Datei separat zu setzen oder auch fuer anderes, zB bei Subshells mit () wird es oft genutzt, wenn man stdout auf zwei Programme splitten will.

Cordess

(Themenstarter)

Anmeldungsdatum:
14. Mai 2006

Beiträge: 466

sebix schrieb:

Die eine funktioniert, die andere nicht 😉

Ups, ja stimmt.

Ich habe es zum Testen einfach an einer Datei im Homeverzeichnis probiert, das hat natürlich funktioniert.

Mit su login wäre es aber auch in /etc/ gegangen. 😉

Gibt's da einen Unterschied, einen Punkt an den ich nicht gedacht habe oder ist es egal, also sind die zwei Lösungen gleichwertig?

Die Weiterleitung geschieht mit den Rechten des Nutzers, nicht des Nutzers des ersten Programms vor der Pipe. daher funktioniert zweiteres nicht, wenn der aktuelle Nutzer nicht root ist.

tee leitet die Daten nur durch, mit ein paar extra-Funktionen. Kann man nutzen um wie hier die Nutzerrechte fuers das Schreiben der Datei separat zu setzen oder auch fuer anderes, zB bei Subshells mit () wird es oft genutzt, wenn man stdout auf zwei Programme splitten will.

Danke für deine Antwort.

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Cordess schrieb:

Mit su login wäre es aber auch in /etc/ gegangen. 😉

Ja, aber dann waere auch echo als root ausgefuehrt worden. Das ist nicht immer gewollt, auch wenn es hier egal ist.

Antworten |