2011-09-02 76 views
3

有沒有辦法導出命令輸出的顏色?轉發bash顏色

讓我們用一個小例子解釋一下:

ls -alh --color=auto 

將打印目錄的有色內容,而

ls -alh --color=auto | cat 

將不打印一些色彩。我想知道是惡作劇還是一個工具,讓我們把它magic的,可以恢復這些命令一樣\033[1m,使顏色可供後期處理:

ls -alh --color=auto | magic | cat 

ls -alh --color=auto | magic >> file 

更新:
我使用ls只是爲了這個例子,但想知道是否有一般的可能性。

+0

你確定要使用'| |貓'會刪除當前shell會話中的顏色? – ajreal

回答

3
script outputfile command 

會做的伎倆。例如:

script capture.txt ls --color=always 
+0

嘿,非常感謝,解決了我的問題;-) – binfalse

2

由於顏色代碼實際上是ls輸出的一部分,因此無法「恢復」它們(因爲它們不在第一位)。

但是,如果使用ls --color=always,則即使在非交互模式下使用時,ls也會輸出顏色代碼。

+0

不幸的是'ls'只是一個例子:-( – binfalse

+0

@binfalse所有具有顏色輸出和交互模式檢測的工具都應該有一個類似的參數 –

2

基本上,ls正在智能化,並檢測輸出何時不會到達終端。如果您想告訴它更少,請嘗試ls --color=always

使用顏色區分文件類型在默認情況下和--color=never均被禁用。使用--color=auto時,只有當標準輸出連接到終端時,l纔會發出顏色代碼。 LS_COLORS環境變量可以更改設置。使用dircolors命令進行設置。