PowerShell スクリプトから Bash コンソールのテキストの色を変更することができます

PowerShell スクリプトから Bash コンソールのテキストの色を変更することができます

マージ中に PowerShell スクリプトを実行するように git を設定しました。Windows で Git Bash を使用して Git コマンドを実行しています。Powershell の Write-Host 関数は Bash コンソールにテキストを出力しますが、-ForegroundColor フラグを使用してもテキストの色は変わりません。Powershell スクリプトで Bash コンソールの出力の色を設定する方法はありますか?

答え1

まず最初に。

Write-Host の使用は、長い間、熱く議論されてきたトピックです。PowerShell の発明者/作者によっても議論されています。

Write-Host は有害であると考えられる - PowerShell の創設者 Jeffrey Snover 氏

https://jsnover.com/blog/2013/12/07/write-host-considered-harmful

PowerShell スクリプトを作成またはレビューするときは、次の経験則を覚えておいてください。

Write-Host の使用はほとんどの場合間違いです。

Write-Host は、自動化を妨げるため、ほとんどの場合、間違った方法です。Write-Host が使用される理由は、通常、次の 2 つです。

このトピックについては他にもたくさんの記事があります。

PoSH の以前のバージョンでは、Write-Host はパイプラインで使用できませんでした。使用した瞬間にデータがバッファから消えてしまうためです。

しかし、PoSHv5 では Jeffrey Snover 氏は次のように言っています...

PowerShell v5ではWrite-Hostはもはや「子犬を殺す」ことはありません。データは情報ストリームにキャプチャされます

https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Write-Information?view=powershell-5.1

説明

Write-Information コマンドレットは、Windows PowerShell がコマンドの情報ストリーム データを処理する方法を指定します。

Windows PowerShell 5.0 では、新しい構造化情報ストリーム (Windows PowerShell ストリームの番号 6) が導入され、これを使用して、スクリプトとその呼び出し元 (またはホスティング環境) の間で構造化データを送信できます。Write-Information を使用すると、ストリームに情報メッセージを追加し、Windows PowerShell がコマンドの情報ストリーム データを処理する方法を指定できます。

ユーザーインタラクション用の画面に色付きのテキストを表示します。これも簡単に回避できます。

Write-Verboseは青色、Write-Warningはオレンジ色です

次のようにすれば、Write-Host を使用せずに色を使用することができます...

PowerTip: Write-Host を使用せずに PowerShell 出力をカラーで書き込む

https://blogs.technet.microsoft.com/heyscriptingguy/2012/10/11/powertip-write-powershell-output-in-color-without-using-write-host

概要: Write-Host コマンドレットを使用せずに、色分けされた出力を Windows PowerShell コンソールに書き込みます。

次に、使用しているエディター/コンソールも明記されていません。powershell.exe/powershell_ise.exe か、それとも VSCode などの何か他のものでしょうか。

さて、完全な開示:私はこれを Bash で試していません。しかし、Bash 統合用に PoSH を構成する余分な時間を費やすことなく...

PowerShell ISE を Git および GitHub で使用するための構成

このブログ記事の目的は、PowerShell ISE (Integrated Scripting Environment) を構成して、そこから Git バージョン管理を実行できるようにすることです。ほとんどのチュートリアルでは、コマンドラインからリポジトリを GitHub に同期するために、HTTPS ではなく SSH を使用する方法を紹介していますが、Windows ベースのマシンを使用している場合は、これは非常に複雑で不必要です。

git と github を使用するには、powershell ise を次のように構成します。

...つまり、bash ターミナルと PoSH コンソールは 2 つの異なる環境です。PoSH スクリプトで Bash コマンドを使用して、出力を Bash ターミナルにリダイレクトしているというのであれば、それはわかりますが、ほとんどの場合 Write-Host の使用が間違っていることを除いて、PoSH が出力を他のものに送信する場合、出力の外観を制御するのは PowerShell ではなく、送信先です。

PoSH WinForm / WPF を使用する場合でも、テキスト ボックスから PoSH からテキストを送信できますが、色を設定するには from プロパティを使用する必要があります。

とにかく、PowerShell を使用した GIT Bash の色についてはいくつかの議論があります。これらがさらに役立つかどうかを確認してください。

PowerShell から Git を使用する

Git環境をカスタマイズする

Git を新しくインストールする場合は特に、Git 環境の設定の一部をカスタマイズしたい場合があります。Git の優れたプロジェクト貢献者であるには、コミットの責任を Git が認識できるように、自分の身元を明らかにする必要があります。また、シェルで Git が使用するデフォルトの色は読みにくい場合があることがわかりました。そのため、色をカスタマイズして、より見やすくしました。詳細については、Git ドキュメントの「Git のカスタマイズ」トピックを参照してください。

以下のコマンドは 1 回だけ実行する必要があります。グローバル設定を設定しているため、一度設定すると、新しいシェルを起動するたびに使用されます。

https://seanonit.wordpress.com/2016/12/05/using-git-from-powershell

Windows 上の Git Bash で ls の色を設定する

最近、Windows 版 GitHub をインストールし、git bash プロンプトを使用していますが、今のところ気になるのは、LS と入力するとすべてのディレクトリが青色で表示されることです。

LS と入力したときにディレクトリが青以外の色でリストされるように、git bash シェルを変更するにはどうすればよいですか?

https://stackoverflow.com/questions/14049896/setting-colors-for-ls-in-git-bash-on-windows

Windows 版 Ubuntu の bash で配色を変更するにはどうすればよいですか?

私はカラースキームを作成しようとしましたhttps://terminal.sexyそして http://ciembor.github.io/4bit/しかし、Windows 上の Ubuntu の bash では、それらのエクスポートをどれも動作させることができません。

boUoW の色をカスタマイズする正しい方法は何ですか?

Windows 版 Ubuntu の bash で配色を変更するにはどうすればよいですか?

関連情報