Gibt es eine schönere Möglichkeit, einen Zeitstempel vor einem echo
?
Derzeit mache ich es so:
#!/bin/sh
if mount | grep -q /mnt/usb; then
echo `date +%R\ ` "usb device already mounted"
else
echo `date +%R\ ` "mounting usb device..."
mount -t msdosfs /dev/da0s1 /mnt/usb
if mount | grep -q /mnt/usb; then
echo `date +%R\ ` "usb device successfully mounted"
fi
fi
Die Ausgabe sollte ungefähr so aussehen:
10:36 usb device already mounted
shell
timestamps
echo
TaXXoR
quelle
quelle
echo_time
wird tun, was Sie erwarten, bis Ihre Nachricht ein%
Zeichen enthält. Keine sehr robuste Lösung.echo_time
könnte nur das Datum + Echo-Konstrukt des OP verwendet werdenHier ist eine robustere und portablere Methode (POSIX), insbesondere eine, die es ermöglicht
%
, als Argument unverarbeitet zu bleiben:quelle
Sie können eine Variable erstellen für
date +%R
:quelle
Mit
ksh93
und aktuelle Versionen vonbash
:Mit
zsh
:Oder um eine sofortige Erweiterung des
"$@"
Teils zu vermeiden :Ein hackiger Weg für ältere Versionen von
bash
:Eigentlich, wenn es darum geht:
Du könntest es tun:
Oder um das Verzweigen einer Unterschale zu vermeiden:
Dann:
(Beachten Sie, dass diese auf stderr wiedergegeben werden, was tatsächlich vorzuziehen ist).
quelle
Wenn ich solche Dinge mache, möchte ich normalerweise, dass alle Zeilen (einschließlich aller Programmausgaben) mit einem Zeitstempel versehen werden. Daher würde ich so etwas verwenden:
Wie Stephane weiter unten ausführt, können einzelne Programme ihre Ausgabe puffern, wenn sie an eine Pipe gesendet werden. Natürlich werden diese Puffer geleert, wenn das Programm beendet wird. Im schlimmsten Fall werden die Zeitstempel angezeigt, wenn das Programm beendet wird (wenn es seine Ausgabe puffert und nicht genug druckt, um den Puffer zu füllen). Die
echo
Zeitstempel sind jedoch alle korrekt.Als ausführbares Beispiel zum Testen:
Ausgabe:
quelle
ts
Befehl zu überprüfen, der Teil von moreutils ist. Es ist ein ähnliches Perl-Skript, aber mit verschiedenen Optionen für das Zeitstempelformat usw.ts
? Scheint, als wäre es hier die beste Option.Zeitstempel erstellen mit
ts
Installieren Sie das Tool
ts
(Teil des Paketsmoreutils)
:Hinzufügen eines Zeitstempels zu einer Ausgabe:
Ausgabe:
quelle
quelle