2013-04-12 54 views
2

我想簡要地改變我的終端輸出的顏色,運行一個Ruby腳本,以便在變了顏色,「睡眠」的第二​​個標準輸出打印,再改回來。我知道如何設置顏色,如提示:變化的bash終端輸出的色彩,同時運行Ruby腳本

PS1="\e[0;36m[\w] \e[m " 

我想我需要寫一個bash函數來做到這一點。那將是什麼樣子?

回答

1

你可以在Ruby中做到這一點(假設你是在Linux,Windows需要一個庫/寶石的名字我不記得的時刻),使用普通的代碼,你會在bash中使用,例如

puts "\e[31m etc Your text here." 

復位到正常的顯示:

puts "\e[0m" 

調整的味道。

+0

這是不壞,但我想這樣做終端改變,而不包括color-複製在每個「放置」行中進行特定的打印。我想知道是否可以延長'puts'來始終以指定的顏色打印(因爲我只用put打印)。 – jumar

+0

我會使用Logger類(http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html),並創建繼承它的類,並且包裝所有以適當的顏色輸出。然後,您可以將您的「自定義」記錄器傳遞給腳本,Rails,隨時隨地,然後調用相應的輸出。你甚至可以爲warn/info/debug設置不同的顏色。 –

+0

你只需要打印出來的代碼,當你想改變它;也就是說,你可以做'puts'(或'print')'「\ E [31米」'你的腳本的開頭和終端文本顏色將保持紅色(或者你選擇的顏色),直到你打印一份ANSI色標。 – iamnotmaynard

2

這裏是一個Ruby腳本來顯示所有的終端顏色。 Download it或運行下面的代碼。

def color(index) 
    normal = "\e[#{index}m#{index}\e[0m" 
    bold = "\e[#{index}m\e[1m#{index}\e[0m" 
    "#{normal} #{bold} " 
end 

8.times do|index| 
    line = color(index + 1) 
    line += color(index + 30) 
    line += color(index + 90) 
    line += color(index + 40) 
    line += color(index + 100) 
    puts line 
end 
1

也可以使用Colorize gem

安裝:

sudo gem install colorize 

用法:

require 'colorize' 

puts "I am now red.".red 
puts "I am now blue.".green 
puts "I am a super coder".yellow 

這個答案是從Colorized Ruby output