Saya punya program yang menggunakan printf
dengan beberapa tput
campuran di dalamnya dan saya ingin menyalurkan output ke stdout serta file. Saya lebih suka menggunakan sed
karena saya tidak ingin ada ketergantungan yang tidak perlu pada skrip saya. Inilah yang saya dapatkan sejauh ini.
printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" | tee install.log
Satu-satunya masalah dengan ini adalah file log saya mendapatkan semua output warna seperti ...
^[[36m| ^[(B^[[m^[[37mSourcing files...^[[m
Saya ingin hanya memilikinya | Sourcing files...
bash
shell-script
bash-script
iamnewton
sumber
sumber
sed
opsi tampaknya tidak berfungsi.Jawaban:
Menurut menghapus warna dari output , perintah Anda harus:
Untuk alasan kenyamanan Anda juga bisa membuat alias di
/etc/profile
[Sunting]
Dengan output yang diberikan Anda dapat memeriksa ini sendiri:
Hasil:
sumber
-r
bendera tidak muncul untuk bekerja pada Mac BSD, jadi saya mencoba menggunakan-E
akan tampaknya menjadi yang paling mirip dan itu masih keluaran dalam file log seperti ...^[36m| ^[(B^[[m^[[37mSourcing files...^[[m
Hal ini juga dilengkapi kembali seperti| ^[(BSourcing files...
pada kotak Linux saya.|xxd
danTERM
env Anda . 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
fungsinya karena Mac OS X tidak mengerti-r
opsi untuksed
perintah. Saya berasumsi Anda menggunakan distro Linux?