Mam program, który używa printf
niektórych tput
zmieszanych i chciałbym przesłać dane wyjściowe do standardowego wyjścia, a także do pliku. Wolę używać, sed
ponieważ nie chcę żadnych niepotrzebnych zależności od mojego skryptu. Oto co mam do tej pory.
printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" | tee install.log
Jedynym problemem jest to, że mój plik dziennika pobiera wszystkie kolorowe wydruki jako takie ...
^[[36m| ^[(B^[[m^[[37mSourcing files...^[[m
Chciałbym to po prostu mieć | Sourcing files...
bash
shell-script
bash-script
iamnewton
źródło
źródło
sed
opcje nie wydają się działać.Odpowiedzi:
Zgodnie z usuwaniem kolorów z danych wyjściowych polecenie powinno wyglądać następująco:
Dla wygody możesz także utworzyć alias w
/etc/profile
[Edytować]
Przy danym wyjściu możesz to sprawdzić samodzielnie:
Wyjście:
źródło
-r
flaga nie wydaje się pracy na Mac BSD, więc próbowałem przy użyciu-E
będzie wydaje się być najbardziej podobny i to jeszcze wyprowadzania w pliku dziennika jako takiego ...^[36m| ^[(B^[[m^[[37mSourcing files...^[[m
To również pochodzi z powrotem jak| ^[(BSourcing files...
na moim Linuksie.|xxd
iTERM
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
funkcję, ponieważ Mac OS X nie rozumie-r
opcjised
polecenia. Zakładam, że jesteś w dystrybucji Linuksa?