2013-09-01 28 views
2

我看到有人可以使bash shell中的輸出顯示爲五顏六色。不僅要突出顯示錯誤或警告,還要執行'ls'時的目錄。如何讓bash shell顯示豐富多彩的文字?

有沒有人可以告訴我如何做到這一點?非常感謝。

+1

看看這個鏈接:http://stackoverflow.com/questions/2437976/get-color-output-in-bash – user000001

回答

0

這些東西都是在DOS的時代。使用ANSI轉義序列或代碼:

http://wiki.bash-hackers.org/scripting/terminalcodes

http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html

http://ascii-table.com/ansi-escape-sequences.php

用法示例:

這將打印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代碼使用。

2

您可以檢查出thisthis: -

使用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 
1

ls具體情況:

如果您使用的Linux發行版,幾乎全部來與牛奶ls,你可能已經有彩色輸出。如果您沒有,請嘗試ls -Cls --color=auto。您可能需要設置$LS_COLORS;請參閱man dircolors以便輕鬆完成。

但可能你是在Mac OS X上,它使用不同版本的ls。如果您的終端輸出顏色,則可能會使用ls -G獲得彩色ls輸出,但是您可能還需要設置$LSCOLORS。此外,您可能需要export CLICOLOR=1才能讓終端顯示顏色。有關更多信息,請參見伴侶網站上的this answer

0

這裏有一點背景,如果你有興趣。

正如其他人已經指出的,終端響應所謂的轉義序列。這些是可以發送給終端的字符序列(寫入,顯示),而不是顯示這些字符,終端硬件將它們解釋爲執行各種操作的命令。這些東西可以是任何東西,從移動光標到閃爍,改變前景和背景顏色。當需要調用某些終端功能時,這是任何終端程序所做的事情(無論是vi,emacs,ls還是bash)。

問題是,有許多不同種類的終端,它們具有不同的功能,並對不同的轉義序列作出響應。早期,人們想出了一個處理這個問題的機制。他們提出了termcap,然後是terminfo,這是一種抽象終端功能的方法。因此,您可以執行諸如「移動光標」或「設置前景色」之類的內容,並且底層庫從爲不同終端維護的數據庫中檢索正確的轉義序列(基於TERM環境變量的值等)。

因此,你有着名的詛咒圖書館。它可以讓你做到這一切。對於bash之類的東西,他們已經將這個功能封裝在一個可以調用的命令中,稱爲tput。如何調用它的man page give you the details。所以,最好不要直接使用轉義序列。但是,你應該通過輸入,以保持獨立於你正在使用的終端。

相關問題