Ich habe ein Programm, das printf
mit einigem darin tput
gemischt verwendet, und ich möchte die Ausgabe zu stdout sowie zu einer Akte leiten. Ich würde es vorziehen, zu verwenden, sed
da ich keine unnötigen Abhängigkeiten von meinem Skript haben möchte. Folgendes habe ich bisher.
printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" | tee install.log
Das einzige Problem dabei ist, dass meine Protokolldatei die gesamte Farbausgabe als solche erhält ...
^[[36m| ^[(B^[[m^[[37mSourcing files...^[[m
Ich hätte es gerne einfach | Sourcing files...
bash
shell-script
bash-script
Iamnewton
quelle
quelle
sed
Optionen scheinen nicht zu funktionieren.Antworten:
Entsprechend dem Entfernen von Farben aus der Ausgabe sollte Ihr Befehl folgendermaßen lauten:
Aus praktischen Gründen können Sie auch einen Alias in erstellen
/etc/profile
[Bearbeiten]
Mit der angegebenen Ausgabe können Sie dies selbst überprüfen:
Die Ausgabe:
quelle
-r
Flag scheint auf Mac BSD nicht zu funktionieren, daher-E
scheint es mir am ähnlichsten zu sein, und es wird immer noch als solches in der Protokolldatei ausgegeben.^[36m| ^[(B^[[m^[[37mSourcing files...^[[m
Es wird auch wie| ^[(BSourcing files...
auf meiner Linux-Box zurückgegeben.|xxd
und IhrTERM
env. var.TERM
=>xterm
.0000000: 1b5b 316d 1b5b 3333 6de2 9aa0 2020 5761 .[1m.[33m... Wa 0000010: 726e 696e 673a 201b 2842 1b5b 6d4e 6f20 rning: .(B.[mNo 0000020: 2f55 7365 7273 2f61 7077 2f2e 6261 7368 /Users/apw/.bash 0000030: 2066 6f75 6e64 2e21 0a found.!.
stripcolors
Funktion ändern muss , da Mac OS X die-r
Option für densed
Befehl nicht versteht . Ich nehme an, Sie sind in einer Art Linux-Distribution?