
我今天無意中發現了 lolcat 包。
我想到的第一件事是:如果我可以透過 lolcat 將來自 stdout 的所有內容傳輸到終端以獲得彩虹效果,那就太棒了。想像一下惡作劇的可能性。
本質上,我要求的是一種將命令應用於從 bash 提示字元輸出到標準輸出的每一行的方法。
答案1
只需像這樣運行 bash:bash |哈哈貓
答案2
在 bash 會話中,你想做
exec > >(lolcat)
我沒有安裝這個,但有類似的想法:
$ date
Sun Mar 22 20:01:23 EDT 2015
$ exec > >(rev)
$ date
5102 TDE 23:10:02 22 raM nuS
答案3
我為世界上最快的網站產生器做了一個 shell 擴展,我稱之為尼夫特。它有一個復活節彩蛋,您可以在其中打開大多數事情的 lolcat 輸出lolcat.on
(在使用例如啟動 shell 後nift sh
)。當按選項卡以獲得可能的完成選項時,您甚至會得到彩虹輸出,我懷疑您是否通過任何其他建議的解決方案得到了這一點。
外殼擴展用於f++這是內建的腳本語言,它具有這些功能和這些可用的類型。但它無法識別的任何內容都會使用電腦上的(可能是主/預設)shell 作為系統呼叫運行(因此將其稱為 REPL shell 模式下的 shell 擴展)。
Nift 將尋找您電腦上安裝的 lolcat 版本,否則使用它的內建版本,這應該是世界上最快的(它與我的 C++ 實作幾乎相同)哈哈貓cc這是世界上最快的)。我強烈建議在 Nift 之上安裝 lolcat-cc (或 lolcat 的另一個版本),否則您會經常為基本上所有系統調用運行 ~5mb Nift 二進位文件,而不是為 lolcat 運行 <1mb 二進位。
f++ 也是一種有趣的腳本語言。拿這例如建立和刪除 100k 空文本檔的腳本。在我的機器上,運行時間約為 3.5 秒,而這Bash 腳本做基本上同樣的事情需要大約 3 分鐘!您可能已經從f++ 腳本中註意到了一些很酷的事情,您可以在字串內擴展變量,您可以使用類型定義變量,您可以透過函數呼叫將變數擴展為多個參數,您可以擁有超過10k 個輸入參數函數呼叫(應該可以有數百萬個!)。
您可以找到有關 Nift REPL 的更多資訊(包括不同平台的捷徑)這裡。
如果您需要定義 shell 變數(不是透過 f++,而是透過底層 shell),那麼您將需要使用 sys/system 函數來執行程式碼區塊。您也可以為 Lua(JIT) 和 ExprTk 執行類似的程式碼區塊,因為它們都嵌入到 Nift 中。您也可以使用 Lua 和 ExprTk 來存取/修改 f++ 變數。
這樣就得到了這個shell(擴展名)。透過套件管理器安裝 Nift,或從 GitHub 複製、製作和安裝。nift sh
在終端機中輸入啟動 Nift f++ shell 擴展,然後輸入lolcat.on
來開啟彩虹輸出。