Was ist, wenn ich jeden Befehl in der SH-Datei sowohl in die Protokolldatei als auch in die Konsole drucken möchte?

Was ist, wenn ich jeden Befehl in der SH-Datei sowohl in die Protokolldatei als auch in die Konsole drucken möchte?

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 teeden 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 scriptein Programm, das eine Terminalsitzung typoskriptet, d. h. alles protokolliert, was auf dem Terminal angezeigt wird.

verwandte Informationen