bash ターミナルのすべての行にコマンドを適用する

bash ターミナルのすべての行にコマンドを適用する

今日、偶然 lolcat パッケージを発見しました。

ここに画像の説明を入力してください

最初に考えたのは、stdout から来るすべてのものを lolcat 経由でターミナルにパイプして、虹色の効果を得ることができたら素晴らしいだろうということです。いたずらの可能性を想像してみてください。

基本的に私が求めているのは、bash プロンプトから stdout に出力されるすべての行にコマンドを適用する方法です。

答え1

次のように bash を実行します。バッシュ | lolcat

答え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

私が作った世界最速のウェブサイトジェネレーターのシェル拡張機能を作りました。ニフト。これにはイースターエッグがあり、ほとんどのものに対して lolcat 出力をオンにすることができますlolcat.on(例: でシェルを起動した後nift sh)。Tab キーを押して可能な補完オプションを取得すると、レインボー出力も得られますが、他の提案されたソリューションではこれが得られるとは思えません。

シェル拡張はフ++これは組み込みのスクリプト言語であり、これら機能とこれら使用可能なタイプ。ただし、認識されないものは、マシン上の (おそらくプライマリ/デフォルトの) シェルを使用してシステム コールとして実行されます (したがって、REPL シェル モードではシェル拡張と呼ばれます)。

Niftはあなたのマシンにインストールされているlolcatのバージョンを探し、そうでなければ世界最速のはずの組み込みバージョンを使用します(私のC++実装とほぼ同じです)。ロルキャットccこれは世界最速です)。ただし、Nift の上に lolcat-cc (または別のバージョンの lolcat) をインストールすることを強くお勧めします。そうしないと、基本的にすべてのシステム コールに対して、<1 MB の lolcat バイナリではなく、約 5 MB の Nift バイナリが頻繁に実行されることになります。

f++も興味深いスクリプト言語です。これ例えば、10万個の空のテキストファイルを作成して削除するスクリプト。私のマシンでは、これは約3.5秒で実行されますが、これ基本的に同じことを実行する Bash スクリプトでは、3 分ほどかかります。この f++ スクリプトからすでにお気づきかもしれませんが、文字列内で変数を展開したり、型を使用して変数を定義したり、関数呼び出しで変数を複数のパラメーターに展開したり、関数呼び出しに 10,000 を超える入力パラメーターを指定したり (数百万にできるはずです) できるという優れた機能があります。

Nift REPLに関する詳細情報(さまざまなプラットフォームのショートカットを含む)を見つけることができます。ここ

シェル変数を定義する必要がある場合 (f++ ではなく基礎となるシェル経由)、sys/system 関数を使用してコード ブロックを実行する必要があります。Lua(JIT) と ExprTk はどちらも Nift に組み込まれているため、同様にコード ブロックを実行することもできます。Lua と ExprTk の両方を使用して f++ 変数にアクセスしたり変更したりすることもできます。

このシェル (拡張機能) を取得するには、パッケージ マネージャーまたはクローンを使用して Nift をインストールし、GitHub から作成してインストールします。nift shターミナルに と入力して Nift f++ シェル拡張機能を起動し、 と入力してlolcat.onrainbow 出力をオンにします。

関連情報