Saya selalu membuat prompt saya untuk menjadi warna ini di linux saya Kemudian saya dapat menemukan input saya di jendela perintah hitam. Tapi bisakah kita membuat warna yang sama di Powershell saya ?
Saya selalu membuat prompt saya untuk menjadi warna ini di linux saya Kemudian saya dapat menemukan input saya di jendela perintah hitam. Tapi bisakah kita membuat warna yang sama di Powershell saya ?
Jawaban:
Yang ingin Anda lakukan adalah menyesuaikan prompt .
Prompt default di PowerShell 3.0 dan yang lebih baru adalah:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Sekarang, Windows 10 mendukung yang kode melarikan diri ANSI di conhost nya, dan 24-bit warna didukung sejak 1703.
Untuk menggunakan salah satu kode pelarian ANSI, kita memerlukan karakter ESC literal . Ini oktal 033, atau desimal 27. Di Bash, Anda akan menggunakan "\033"
atau "\e"
; Tidak ada urutan ekuivalen langsung di PowerShell tetapi Anda bisa menanamkan ekspresi:"$([char]27)"
Di PowerShell Core Anda bisa menggunakan "`e"
urutan pelarian sebagai gantinya. Berkat komentar dari asherber.
Ini berarti Anda dapat, misalnya, menggunakan urutan pelarian berikut untuk mengatur warna latar belakang ke cyan dengan kode 46
:
"$([char]27)[46m"
Yang bisa digunakan seperti:
echo "$([char]27)[46mColoured text"
Agar lebih mudah dibaca, mari kita tentukan variabel:
$ESC = [char]27
Jadi kita bisa menggunakan:
"$ESC[46m"
Di mana $ESC
karakter ESC literal, [
menentukan awal daftar param, dan m
akhirnya.
Menggunakannya dalam perintah:
echo "$ESC[46mColoured text"
Dan untuk mengembalikan pengaturan warna asli, kami menggunakan kode 0
sebagai gantinya:
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Jika Anda tidak puas dengan palet 16-warna dasar, Anda dapat menggunakan warna 24-bit penuh dengan formulir:
"$ESC[48;2;<r>;<g>;<b>m"
Di mana <r>
nilai desimal untuk merah dari 0-255, <g>
untuk hijau dan <b>
untuk biru, misalnya"$ESC[48;2;255;0;123m"
Silakan merujuk ke dokumentasi untuk informasi lebih lanjut.
Sebenarnya, ini semua setara langsung dengan apa yang akan Anda lakukan di bash, kecuali Anda harus menggunakan $ESC
(setelah Anda mendefinisikannya) sebagai ganti dari \e
atau \033
.
Menyatukan ini, kita dapat menggunakan kode pelepasan warna ANSI dalam prompt yang dimodifikasi untuk mengubah warna latar belakang:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Jika Anda ingin ini tetap ada di seluruh sesi, tambahkan ke profil Anda (seperti .bashrc
). Anda dapat melihat jalur ke profil Anda di $profile
.
1;37m
itu sama dengan 97m
, keduanya berarti "putih cerah")
[char]27
. Saya tidak yakin apakah ini ditambahkan di versi sebelumnya.