Ich habe zwei Fälle, in denen ich eine Datei erstellen möchte, deren Inhalt über die Standardeingabe bereitgestellt wird:
- Ich muss verwenden
sudo
, um die Berechtigungen zum Erstellen einer Datei zu haben. - Eine Anwendung ruft immer einen (interaktiven) Editor auf, der angegeben ist
$EDITOR
, um diese Eingabe weiter zu verarbeiten, aber ich möchte stattdessen Daten aus einem Programm weiterleiten.
Im ersteren Fall könnte ich verwenden echo test | sudo bash -c 'cat > test.txt'
, aber sowohl in diesem als auch im letzteren Fall verwende ich normalerweise tee
und leite tee
die Standardausgabe an /dev/null
:
echo test | sudo tee test.txt > /dev/null
echo test | EDITOR=tee application > /dev/null
Dies wirft jedoch nicht nur die tee
Standardausgabe weg , sondern auch (im letzteren Fall) application
die. Es wäre vorzuziehen, die tee
Standardausgabe spezifisch unterdrücken zu können , damit ich sofort feststellen kann, ob etwas anderes in die Standardausgabe geschrieben wurde.
Gibt es ein Dienstprogramm für Standard-Linux-Distributionen, das Standardeingaben in die als Befehlszeilenargument angegebene Datei schreibt und nichts ausgibt?
Antworten:
Es gibt den
w
Befehl vonsed
:Aber vielleicht sollten Sie einfach Ihr eigenes Skript schreiben
mycat
:Erstellen Sie ein Verzeichnis ~ / bin und fügen Sie es an der Vorderseite Ihres Pfads hinzu, damit Ihr Befehl gefunden wird.
Sie können sagen, "aber ich benutze Hunderte von Maschinen, sie haben dieses Skript nicht auf ihnen". In diesem Fall ist mein Vorschlag, dass Sie ein Skript erstellen, das einfach Ihre bevorzugte Umgebung auf einem beliebigen Computer einrichtet. Ich habe ein Skript, das im Idealfall, wenn ich Root-Zugriff habe, eine neue Benutzer-ID erstellt, einen Sudoers-Eintrag dafür hinzufügt, einige .bashrc- und bin / * -Dateien kopiert und so weiter. Dann kann ich mich unter dieser ID anmelden und mich "zu Hause fühlen". Außerdem wird mein Befehlsverlauf dann nicht von anderen Administratoren verschmutzt, die Root-Anmeldungen ausführen, und ich führe nicht alle meine Befehle als Root aus.
Ich muss oft an brandneuen Betriebssysteminstallationen auf der getesteten Hardware arbeiten, und diese Art der automatischen Einrichtung ist ein wahrer Segen.
quelle
sed -n 'w /tmp/out'
fand das ziemlich cool.