Was ist, wenn ich jeden Befehl in der SH-Datei sowohl in die Protokolldatei als auch in die Konsole drucken möchte?
sagen wir mal, ich habe jetzt unten, ich will einen einzeiligen Befehl (wieAusgabe in Datei,das alle Befehlsausgaben in eine Datei druckt) das alle vorhergehenden Befehlsausgaben /echos in eine Datei und auf die Konsole drucken kann #sh
SH
**some command here, so it will print all below echos to file and console**
echo start
echo "My first name is $1"
echo "My surname is $2"
echo "Total number of arguments is $#"
echo end
Antwort1
Es gibt zwei Ansätze. Andere haben tee erwähnt. Der zweite Ansatz ist der Befehl „script“ und seine Varianten, die alles aufzeichnen, was an die Standardausgabe der Prozesse gesendet wird. Wenn Sie die Umleitung in einem Skript wünschen, verwenden Sie
#!/bin/bash
{
echo start
echo "My first name is $1"
echo "My surname is $2"
echo "Total number of arguments is $#"
echo end
} | tee logfile
Antwort2
Versuche dies...
#!/bin/bash
log_file=/tmp/log.txt
function log(){
echo "$@" | tee -a "${log_file}"
}
log "test"
log "hello"
log "testing...."
Antwort3
Sie können tee
den Befehl verwenden, um die Ausgabe Ihres Skripts in stdout und eine Datei umzuleiten.
Der folgende Befehl druckt den Inhalt der Datei f1.txt in die Datei f2.txt sowie in stdout (Konsole).
cat f1.txt | tee f2.txt
Weitere Informationen zum Abschlag finden Sietee – Manpage
Antwort4
Es gibt script
ein Programm, das eine Terminalsitzung typoskriptet, d. h. alles protokolliert, was auf dem Terminal angezeigt wird.