Terminal

是否可以為“aafire”的輸出著色?

  • March 14, 2020

這個程序看起來很酷,但是給它一個紅色真的讓它看起來像我的電腦著火了。我認為使用 grep 或類似的管道命令可以解決問題,但我看到它列印顏色的 ASCII 轉義碼並刪除了輸出的特殊格式,使其看起來像火。

cacafire

ASCII fire( aafire) 是用 now dead 創建的libaa。這實際上可能早於終端顏色程式碼(我不記得了)。然而,較新的變種是仍然libcaca提供的cacafire

卡卡菲爾

使用命令行標誌,您可以將輸出配置為顯示在終端而不是彈出視窗中。

aafire -driver stdout -width 80 # match width of your terminal
aafire --help # see available options

現在,使用您的 shell 應用程序的首選項來控制顏色。例如,我在 Ubuntu 上使用 gnome-terminal,所以我只需轉到菜單 Edit>Profile Preferences。

至於更改字型顏色和背景顏色本身,這在原則上似乎是可能的:

aatest

請注意,第一行有藍色背景。我想這是通過指定背景顏色的轉義字元來完成的。你可以找到很多關於這個的討論,人們詢問改變他們的 bash 提示顏色

為了插入轉義字元來更改顏色,我不確定是否可以從 shell 執行此操作。也許您可以編寫一個自定義 bash 腳本來接受來自標準輸入的輸入,將 aafire 的輸出通過管道傳輸到您的腳本中,回顯顏色變化的字元,最後回顯來自標準輸入的消息。

或者,您可能必須呼叫該庫,例如從 C 程序中呼叫。

#include <stdio.h>
#include <aalib.h>
aa_context *context;
void main(int argc, char **argv)
{
 if(!aa_parseoptions(NULL, NULL, &argc, argv) || argc!=1) {
   printf("Usage: %s [options]\n"
          "Options:\n"
          "%s", argv[0], aa_help);
   exit(1);
 }
 context = aa_autoinit(&aa_defparams);
 if(context == NULL) {
   fprintf(stderr,"Cannot initialize AA-lib. Sorry\n");
   exit(2);
 }
 ...
 aa_close(context);
}

來自aalib 文件的範例原始碼。

引用自:https://unix.stackexchange.com/questions/378374