Tôi luôn luôn nhắc nhở mình là màu này trong linux Sau đó tôi có thể tìm thấy đầu vào của mình trong cửa sổ lệnh đen. Nhưng chúng ta có thể tạo ra màu tương tự trong Powershell của tôi không?
Tôi luôn luôn nhắc nhở mình là màu này trong linux Sau đó tôi có thể tìm thấy đầu vào của mình trong cửa sổ lệnh đen. Nhưng chúng ta có thể tạo ra màu tương tự trong Powershell của tôi không?
Câu trả lời:
Những gì bạn muốn làm là tùy chỉnh lời nhắc .
Dấu nhắc mặc định trong PowerShell 3.0 và mới hơn là:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Bây giờ, Windows 10 hỗ trợ các mã thoát ANSI trong conhost của nó, và 24-bit màu được hỗ trợ kể từ năm 1703.
Để sử dụng một trong các mã thoát ANSI, chúng ta cần một ký tự ESC theo nghĩa đen . Đây là số bát phân 033 hoặc số thập phân 27. Trong Bash, bạn sẽ sử dụng "\033"
hoặc "\e"
; Không có chuỗi tương đương trực tiếp trong PowerShell nhưng thay vào đó bạn có thể nhúng một biểu thức:"$([char]27)"
Trong PowerShell Core, bạn có thể sử dụng "`e"
chuỗi thoát thay thế. Nhờ nhận xét của Asherber.
Điều này có nghĩa là bạn có thể, ví dụ, sử dụng chuỗi thoát sau đây để đặt màu nền thành màu lục lam với mã 46
:
"$([char]27)[46m"
Mà có thể được sử dụng như vậy:
echo "$([char]27)[46mColoured text"
Để làm cho mọi thứ dễ đọc hơn, hãy xác định một biến:
$ESC = [char]27
Vì vậy, chúng ta có thể sử dụng:
"$ESC[46m"
Trường hợp $ESC
ký tự ESC theo nghĩa đen, [
xác định bắt đầu của danh sách param và m
kết thúc.
Sử dụng nó trong một lệnh:
echo "$ESC[46mColoured text"
Và để khôi phục cài đặt màu gốc, chúng tôi sử dụng mã 0
thay thế:
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Nếu bạn không hài lòng với bảng màu 16 màu cơ bản, bạn có thể sử dụng đầy đủ các màu 24 bit với biểu mẫu:
"$ESC[48;2;<r>;<g>;<b>m"
Đâu <r>
là giá trị thập phân cho màu đỏ từ 0-255, <g>
cho màu xanh lá cây và <b>
cho màu xanh lam, vd"$ESC[48;2;255;0;123m"
Vui lòng tham khảo tài liệu để biết thêm thông tin.
Trên thực tế, đây là tất cả tương đương trực tiếp với những gì bạn sẽ làm trong bash, ngoại trừ bạn cần sử dụng $ESC
(sau khi bạn đã xác định nó) thay vì \e
hoặc \033
.
Đặt các mã này lại với nhau, chúng ta có thể sử dụng mã thoát màu ANSI trong lời nhắc được sửa đổi để thay đổi màu nền:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Nếu bạn muốn điều này tồn tại qua các phiên, hãy thêm nó vào hồ sơ của bạn (như .bashrc
). Bạn có thể xem đường dẫn đến hồ sơ của bạn trong $profile
.
1;37m
giống như 97m
, cả hai đều có nghĩa là "màu trắng sáng")
[char]27
. Tôi không chắc chắn nếu điều này đã được thêm vào trong các phiên bản trước.