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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.