Powershell 프롬프트를 색칠하는 방법?


17

나는 항상 내 리눅스 에서이 색상이되도록 프롬프트를 표시합니다. 그런 다음 검은 명령 창에서 입력을 찾을 수 있습니다. 그러나 Powershell 에서 동일한 색상을 만들 수 있습니까?


콘솔 글꼴은 무엇입니까?
Dmitry Kudriavtsev

봐 @DmitryKudriavtsev , 어쩌면는 심 노래 영어입니다.
yode

아마 심선일까요?
Dmitry Kudriavtsev

@DmitryKudriavtsev 예, 실수했습니다.
yode

당신의 잘못이 아니라 음역은 어렵습니다
Dmitry Kudriavtsev

답변:


32

컬러 프롬프트의 스크린 샷

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의 의견에 감사드립니다.


PowerShell에서 사용

즉, 예를 들어 다음 이스케이프 시퀀스를 사용하여 코드를 사용하여 배경색을 녹청으로 설정할 수 있습니다 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.


안녕하세요 ~, 좋은 답변입니다 .. 그러나 더 많은 텍스트를 굵게 표시 할 수 있습니까? 그러면 더 쉽게 찾을 수 있습니다.
yode

1
@yode이 더 많거나 적은 모두 문서화 여기에 내가 대답에 연결하는)

1
@ 요드 아. 밝은 흰색이 아닌 흰색 37 개와 비교하면 PowerShell 창이 이미 기본적으로 밝은 흰색 97을 사용하는 것처럼 보입니다. (BTW하는있을거야 새로운 컬러 팔레트 . 다음 Win10 버전의 새로 설치에 대한의 스크린 샷이있어 현재 팔레트 , 음 1;37m과 동일 97m"밝은 흰색"을 모두 의미)

1
@yode 기본적으로 conhost는 아직 굵게 표시되지 않습니다. 밝음은 굵은 글씨를 대체하며 이미 기본적으로 밝은 색을 사용하고 있습니다. 실제로 굵게 표시하려면 ConEmu 와 같은 대체 터미널을 사용할 수 있지만 ANSI 굵게 지원되지 않는 것 같습니다. IMO, 그만한 가치가 없습니다.

1
Markdown을 올바르게 작동시킬 수는 없지만 PowerShell Core에서는 backtick + e를 사용할 수 있습니다 [char]27. 이것이 이전 버전에 추가되었는지 확실하지 않습니다.
asherber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.