Eu tenho um programa que usa printf
com alguns tput
misturados nele e gostaria de canalizar a saída para stdout, bem como um arquivo. Eu preferiria usar, sed
pois não quero dependências desnecessárias no meu script. Aqui está o que eu tenho até agora.
printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" | tee install.log
O único problema com isso é o meu arquivo de log está recebendo toda a saída de cores como tal ...
^[[36m| ^[(B^[[m^[[37mSourcing files...^[[m
Eu gostaria que tivesse | Sourcing files...
bash
shell-script
bash-script
iamnewton
fonte
fonte
sed
opções parecem não funcionar.Respostas:
De acordo com a remoção de cores da saída , o comando deve ser:
Por motivos de conveniência, você também pode criar um alias no
/etc/profile
[Editar]
Com a saída fornecida, você pode verificar isso sozinho:
A saída:
fonte
-r
sinalizador não parece funcionar no Mac BSD, então tentei usar-E
o mais parecido e ainda está sendo exibido no arquivo de log como tal ...^[36m| ^[(B^[[m^[[37mSourcing files...^[[m
Ele também volta como| ^[(BSourcing files...
na minha caixa do Linux.|xxd
e o seu ambienteTERM
. 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
função porque o Mac OS X não entende a-r
opção para osed
comando. Estou assumindo que você está em algum tipo de distribuição Linux?