Ich verwende | sudo tee FILENAME
, um in der Lage zu sein, eine Datei zu schreiben oder an sie anzuhängen, für die häufig Superuser-Berechtigungen erforderlich sind.
Obwohl ich verstehe, warum es in manchen Situationen hilfreich ist, dass tee
es seine Eingaben auch wieder an STDOUT sendet, habe ich diesen Teil von nie wirklich tee
für irgendetwas Nützliches verwendet. In den meisten Situationen führt diese Funktion nur dann dazu, dass mein Bildschirm mit unerwünschtem Jitter gefüllt wird, wenn ich den zusätzlichen Schritt nicht gehe und ihn manuell stummschalte tee 1> /dev/null
.
Meine Frage: Gibt es einen Befehl in der Nähe, der genau das Gleiche tut tee
, aber standardmäßig nichts an STDOUT ausgibt?
linux
command-line
posix
tee
aef
quelle
quelle
tee
mitcat >filename
, erhalten Sie die Ergebnisse , die Sie wollen?cat
schreibt nicht selbst in Dateien. Und der>
Operator funktioniert nicht, da die Dateien von meinem aktuellen Benutzer nicht beschreibbar sind. Also nein, das hilft kein bisschen. Und bitte hören Sie alle 2 Sekunden auf, die Bedeutung Ihres Kommentars vollständig zu ändern. Erstellen Sie stattdessen eine neue.| sudo tee FILENAME
mit| sudo cat >filename
, erhalten Sie die Ergebnisse , die Sie wollen?>
Operator verwendet den aktuellen Shell-Benutzer, um in die Datei zu schreiben. Dieser Benutzer hat nicht die erforderlichen Berechtigungen.cat
ist dafür völlig nutzlos.Antworten:
Eine andere Option, die es vermeidet, das Zeug zurück und dann zu leiten,
/dev/zero
istquelle
oflag=append conv=notrunc
Optionen zumdd
Anhängen.Die
dd
Lösung druckt immer noch Junk-to-Stdout:Mit der
status
Option kann das vermieden werden :Eine weitere interessante Möglichkeit (für Linux sowieso):
So kopieren Sie TTY-Eingaben in eine Datei:
Es ist zu schade, dass Tee keine Option hat, um stdout zu unterdrücken.
quelle
Sie könnten ein Skript verwenden. Dh setzte so etwas wie dies in dh
$HOME/bin/stee
,0tee
oder ähnlich:Mach es ausführbar:
Nun mache zB:
quelle
Sie können Ihren gesamten Befehl in sudo einbinden, sodass die Shell selbst sowie die Weiterleitungen wie folgt ausgeführt werden
root
:quelle
Es gibt kein direktes Programm, um dies zu tun (dies ist so ziemlich das einzige Mal, dass es nützlich wäre), aber Sie könnten leicht Ihr eigenes schreiben. Wenn Sie nicht zu programmieren möchten, können Sie auch ein einfaches Shell - Skript schreiben , die die gleiche Sache tut:
cat > $1
. Dies unterscheidet sich vom Inline-Setzen (wie von Sägemehl empfohlen), da das Sudo auf das gesamte Skript angewendet wird, einschließlich der Umleitung.quelle
Ich weiß, dass es etwas zu spät ist, aber was ich in solchen Fällen tue (wenn eine "flache" Standardausgabe, aber auch eine temporäre Datei benötigt wird), ist:
quelle
/dev/null
und verkürzt den Befehl nicht. Was wäre der Vorteil, wenn Sie diese anstelle der ursprünglichen Methode verwenden würden?