我看到有人可以使bash shell中的輸出顯示爲五顏六色。不僅要突出顯示錯誤或警告,還要執行'ls'時的目錄。如何讓bash shell顯示豐富多彩的文字?
有沒有人可以告訴我如何做到這一點?非常感謝。
我看到有人可以使bash shell中的輸出顯示爲五顏六色。不僅要突出顯示錯誤或警告,還要執行'ls'時的目錄。如何讓bash shell顯示豐富多彩的文字?
有沒有人可以告訴我如何做到這一點?非常感謝。
這些東西都是在DOS的時代。使用ANSI轉義序列或代碼:
http://wiki.bash-hackers.org/scripting/terminalcodes
用法示例:
這將打印ABC綠色字體:
ESCAPE=$'\e'
echo "${ESCAPE}[0;32mABC${ESCAPE}[0m"
您還可以使用-e選項:
echo -e "\e[0;32mABC\e[0m"
或者printf的:
printf "\e[0;32mABC\e[0m\n"
檢查出一些我主要是在腳本here代碼使用。
使用ANSI轉義序列設置像前景文本屬性和 背景顏色。
實例: -
echo -e "\e[1;34mThis is a blue text.\e[0m"
和
#!/bin/bash
# tputcolors
echo
echo -e "$(tput bold) reg bld und tput-command-colors$(tput sgr0)"
for i in $(seq 1 7); do
echo " $(tput setaf $i)Text$(tput sgr0) $(tput bold)$(tput setaf $i)Text$(tput sgr0) $(tput sgr 0 1)$(tput setaf $i)Text$(tput sgr0) \$(tput setaf $i)"
done
echo ' Bold $(tput bold)'
echo ' Underline $(tput sgr 0 1)'
echo ' Reset $(tput sgr0)'
echo
在ls
具體情況:
如果您使用的Linux發行版,幾乎全部來與牛奶ls
,你可能已經有彩色輸出。如果您沒有,請嘗試ls -C
或ls --color=auto
。您可能需要設置$LS_COLORS
;請參閱man dircolors
以便輕鬆完成。
但可能你是在Mac OS X上,它使用不同版本的ls
。如果您的終端輸出顏色,則可能會使用ls -G
獲得彩色ls
輸出,但是您可能還需要設置$LSCOLORS
。此外,您可能需要export CLICOLOR=1
才能讓終端顯示顏色。有關更多信息,請參見伴侶網站上的this answer。
這裏有一點背景,如果你有興趣。
正如其他人已經指出的,終端響應所謂的轉義序列。這些是可以發送給終端的字符序列(寫入,顯示),而不是顯示這些字符,終端硬件將它們解釋爲執行各種操作的命令。這些東西可以是任何東西,從移動光標到閃爍,改變前景和背景顏色。當需要調用某些終端功能時,這是任何終端程序所做的事情(無論是vi,emacs,ls還是bash)。
問題是,有許多不同種類的終端,它們具有不同的功能,並對不同的轉義序列作出響應。早期,人們想出了一個處理這個問題的機制。他們提出了termcap,然後是terminfo,這是一種抽象終端功能的方法。因此,您可以執行諸如「移動光標」或「設置前景色」之類的內容,並且底層庫從爲不同終端維護的數據庫中檢索正確的轉義序列(基於TERM環境變量的值等)。
因此,你有着名的詛咒圖書館。它可以讓你做到這一切。對於bash之類的東西,他們已經將這個功能封裝在一個可以調用的命令中,稱爲tput。如何調用它的man page give you the details。所以,最好不要直接使用轉義序列。但是,你應該通過輸入,以保持獨立於你正在使用的終端。
看看這個鏈接:http://stackoverflow.com/questions/2437976/get-color-output-in-bash – user000001