Bash zum Drucken des Protokolls mit Benutzer, Datum und Uhrzeit

0

Ich versuche, ein Protokoll mit zu drucken bash Das erfasst den Text, den angemeldeten Benutzer, das Datum und die Uhrzeit und druckt ihn in eine Datei analysis.

Bash

echo "analysis done by" "$USER" "on" && date +"%D"  && date +"%r" > /home/analysis

Derzeit wird jedoch nur die Zeit zur Analyse gedruckt und die echo.... Benutzer und Datum drucken auf stdout. Warum ist das so, mache ich etwas falsch? Vielen Dank.

stdout

analysis done by cmccabe on
07/12/16

gewünschtes Ergebnis (Analyse)

analysis done by cmccabe on
07/12/16
08:31:32 AM
cm0728
quelle

Antworten:

1

&& (mögen ; ) ist ein Befehlstrennzeichen und Weiterleitungen funktionieren bei Befehl Ebene, nicht auf Zeilenebene.

Wenn eine einzelne Umleitung auf mehrere Befehle gleichzeitig angewendet werden soll, gruppieren Sie diese:

(echo "foo"; date +bar) > /path/to/file

{ echo "foo"; date +bar; } > /path/to/file

(In diesem speziellen Fall spielt es keine Rolle, ob Sie verwenden && oder ;.)

Alternativ können Sie eine einzelne Zeile mit allem ausgeben:

echo "analysis done by $USER at $(date "+%D %r")" > /path/to/file
grawity
quelle
0

Hinzufügen %n in die Ausgabeformatzeichenfolge für date wo du eine neue Leitung willst.

date +"analysis done by $USER on%n%D%n%r" > /home/analysis

Wenn es eine Chance gibt $USER könnte beinhalten %:

echo "analysis done by $USER on$(date +%n%D%n%r)" > /home/analysis
creidhne
quelle