나는 항상 내 리눅스 에서이 색상이되도록 프롬프트를 표시합니다. 그런 다음 검은 명령 창에서 입력을 찾을 수 있습니다. 그러나 Powershell 에서 동일한 색상을 만들 수 있습니까?
나는 항상 내 리눅스 에서이 색상이되도록 프롬프트를 표시합니다. 그런 다음 검은 명령 창에서 입력을 찾을 수 있습니다. 그러나 Powershell 에서 동일한 색상을 만들 수 있습니까?
답변:
당신이하고 싶은 것은 프롬프트를 사용자 정의하는 것 입니다.
PowerShell 3.0 이상에서 기본 프롬프트는 다음과 같습니다.
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
이제 Windows 10 은 호스트에서 ANSI 이스케이프 코드 를 지원 하며 1703부터 24 비트 색상 이 지원됩니다.
ANSI 이스케이프 코드 중 하나를 사용하려면 리터럴 ESC 문자 가 필요합니다 . 이것은 8 진수 033 또는 10 진수 27입니다. Bash에서는 "\033"
또는 "\e"
;를 사용합니다 . PowerShell에는 직접 동등한 시퀀스가 없지만 대신 식을 포함시킬 수 있습니다."$([char]27)"
PowerShell Core에서는 "`e"
이스케이프 시퀀스를 대신 사용할 수 있습니다 . asherber의 의견에 감사드립니다.
즉, 예를 들어 다음 이스케이프 시퀀스를 사용하여 코드를 사용하여 배경색을 녹청으로 설정할 수 있습니다 46
.
"$([char]27)[46m"
다음과 같이 사용할 수 있습니다.
echo "$([char]27)[46mColoured text"
일을 더 읽기 쉽게하기 위해 변수를 정의 해 봅시다 :
$ESC = [char]27
그래서 우리는 사용할 수 있습니다 :
"$ESC[46m"
$ESC
리터럴 ESC 문자는 어디에 있으며, [
매개 변수 목록의 시작과 m
끝을 정의합니다 .
명령에서 사용하기 :
echo "$ESC[46mColoured text"
원래 색상 설정을 복원하기 위해 코드를 0
대신 사용합니다 .
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
기본 16 색 팔레트가 마음에 들지 않으면 24 비트 색상을 다음과 같은 형식으로 사용할 수 있습니다.
"$ESC[48;2;<r>;<g>;<b>m"
<r>
0에서 255까지의 빨강, <g>
녹색 및 <b>
파랑 의 소수점 이하 자릿수는 어디에 있습니까?"$ESC[48;2;255;0;123m"
자세한 내용은 설명서 를 참조하십시오.
실제로 이것은 또는 $ESC
대신 (정의한 후) 사용해야하는 것을 제외하고는 bash에서 수행하는 것과 직접적으로 동일합니다 .\e
\033
이를 조합하여 수정 된 프롬프트에서 ANSI 색상 이스케이프 코드를 사용하여 배경 색상을 변경할 수 있습니다.
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
세션 전체에서이를 유지하려면 프로필에 세션을 추가하십시오 (예 .bashrc
:). 에서 프로필 경로를 볼 수 있습니다 $profile
.
1;37m
과 동일 97m
"밝은 흰색"을 모두 의미)
[char]27
. 이것이 이전 버전에 추가되었는지 확실하지 않습니다.