2
考慮從我的.bashrc以下ENV出口:如何編寫一個包含ansi的env-var而不遺漏env終端輸出?
LESS_TERMCAP_mb=$(printf "\e[1;31m")
LESS_TERMCAP_md=$(printf "\e[1;31m")
LESS_TERMCAP_me=$(printf "\e[0m")
LESS_TERMCAP_se=$(printf "\e[0m")
LESS_TERMCAP_so=$(printf "\e[1;44;33m")
LESS_TERMCAP_ue=$(printf "\e[0m")
LESS_TERMCAP_us=$(printf "\e[1;32m")
這是罰款和按預期工作,但不幸的是,當我傾倒ENV到控制檯它輸出的ANSI顏色和基本攪亂終端的顯示。我可以使用env來減少清理ansi代碼,但我認爲可能有更好的方法來做到這一點。
我創建了以下函數,它在調用某些終端應用程序之前基本上設置了這些變量,但並未針對所有應用程序進行設置。
less() {
env \
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
LESS_TERMCAP_md=$(printf "\e[1;31m") \
LESS_TERMCAP_me=$(printf "\e[0m") \
LESS_TERMCAP_se=$(printf "\e[0m") \
LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
LESS_TERMCAP_ue=$(printf "\e[0m") \
LESS_TERMCAP_us=$(printf "\e[1;32m") \
less "[email protected]"
}
有沒有更好的辦法,或任何方式,以這樣的方式腳本環境變量,它們包含ANSI轉義序列,但他們不通過的時候顯示的env評價?
我只是有一個想法,想我會如果有人有想法,請在此留言。除了包裝其他程序之外,我用一個bash函數來封裝env,除非它被傳送,否則它會轉義這些變量。這應該工作...現在查找如何在bash中找到isatty() –
爲什麼在這裏需要'env'?在bash中你通常可以執行'X = 1 Y = 2 command'。我剛剛測試過它,而env _is_是必要的,但我不明白爲什麼! – cdyson37