2010-08-17 12 views
17

Linux'ta çalışan bir C dosyam var. Kırmızı (başarısızlık) ve bazılarında yeşil (geçer) bazı çizgiler yazdırır.C kodu, metin metni rengini değiştirir; varsayılanlar nasıl geri yüklenir? Linux

#define BLACK "\033[22;30m" 
#define GREEN "\033[22;31m" 

printf(GREEN "this will show up green" BLACK "\n"); 

sonunda SİYAH olmasaydı terminal metin her şey için yeşil olmaya devam edecektir: Tahmin edebileceğiniz gibi, aşağıdaki gibi printf ifadeleri kodları kaçış kullanır. Eğer onu yakalamadıysanız, siyah olmayan bir arka plana sahip bir terminal penceresi için sorun değil, aksi takdirde siyah-siyah ile sonuçlanacaksınız. İyi değil! Programın çalıştırılması, çıktıların bir metin dosyasında yakalanması ve daha sonra "daha fazla" veya "daha az" ile görüntülenmesi gibi, bu soruna da sahiptir.

printf ifadesinin sonunda bir renk belirtmek yerine varsayılanları geri yüklemek için bir kod var mı? Bunun C dilinde olması gerekiyor ama diğer yaklaşımları okumakla ilgilenirim.

Güncelleme: Hepinize teşekkür ederiz. Yanıtlarınız, başka yerlerde daha yararlı bilgiler bulmama yardımcı oldu. aşağıdaki gibi benim makro güncelleştirilmiş (not 31 kırmızı içindir ve aşağıda o yazım hatası sabit):

#define RESET_COLOR "\e[m" 
#define MAKE_GREEN "\e[32m" 

printf(MAKE_GREEN "this will show up green" RESET_COLOR "\n"); 

ben anlamakta yararlı Aşağıdaki bağlantılar nasıl bu kodlar işe bulundu:

http://www.phwinfo.com/forum/comp-unix-shell/450861-bash-shell-escapes-not-working-via-putty-ssh.html

Ya bu kaçış açıklıyor diziler yapmak ve taşınabilirlik gerekiyorsa ncurses kullanmak.

http://bluesock.org/~willg/dev/ansi.html

http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html

daha kaçış dizileri göstermektedir; Büyük resme almak için yararlıdır

cevap

2

tip reset.

Linux ve OSX'te sıfır olarak adlandırılan bir ikili bulunur.

+0

Tam cevap değil, ama belki de ona bakmak yardımcı olur. – Nils

+1

"reset", terminal penceresini temizler ve istemciyi ekranın üst kısmına yerleştirir; bu, ihtiyacım olan etki değildir, ancak size teşekkür ederiz. – jasper77

İlgili konular