Powershell로 직전의 처리의 성공 여부를 알기 쉽게 하려고 +α

8701 단어 PowerShell

소개



  안녕하세요, 아사나 결이라고 합니다. Windows에서 개발을 시작한 분은 이제 이제 명령 프롬프트를 놓치기 시작했을 때라고 생각하지만 Powershell은 프롬프트 문자열을 쉽게 조작 할 수 있다는 것을 알고 계십니까? 이번에는 평소 자신이 사용하고 있는 Powershell의 Prompt 설정을 보여드리겠습니다.

환경



 환경은 PS7입니다.
> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      7.0.0
PSEdition                      Core
GitCommitId                    7.0.0
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

 문자의 표시의 색을 만지기 때문에 Write-Host 가 기능하는 터미널로 합시다.


이런 느낌입니다.



  이하의 Prompt 함수를 $Profile에 추가하면
function Prompt {
    $result = $?
    $here = Convert-Path .
    $rand = Get-Random 4
    $good_words = @("..", "ok", "sure", "well")
    $bad_words = @("..", "bad", "what?", "idk")
    Write-Host "[${env:username}]${here}" -NoNewLine
    if ($result) {
        Write-Host " (PS'-')$($good_words[$rand])" -NoNewLine -ForegroundColor "Green"
    } else {
        Write-Host " (PS'-')$($bad_words[$rand])" -NoNewLine -ForegroundColor "Red"
    }
    return "`n> "
}

 이런 감기가 됩니다.



 오른쪽의 불애상한 캐릭터가 전의 처리의 성부를 가르쳐 주는 것이군요. 여기에서는 각 부분의 해설입니다.

이전 처리의 결과 얻기



  이하의 변수로부터 취득할 수 있습니다. Prompt 함수 내에서 한 번 변수에 넣는 것은 Prompt 내의 처리에서 $?의 값이 다시 쓰여지기 때문입니다.
> $?
True

현재 디렉토리의 경로 얻기



  아마 이 Convert-Path 로부터 상대 패스 . 를 풀 패스로 변환해 버리는 것이 가장 간단하다고 생각합니다.
> Convert-Path .
C:\

캐릭터에게 말하고 싶다.



  이건 별로 없어도 좋지만 귀엽기 때문에 합니다. 성공했을 때의 말과 실패했을 때의 말을 각각 준비해, 캐릭터의 뒤에 붙입니다.
$rand = Get-Random 4
$good_words = @("..", "ok", "sure", "well")
$bad_words = @("..", "bad", "what?", "idk")

사용자 이름 가져오기



 완전히 Bash의 영향인 생각이 듭니다만, 어딘지 모르게 침착하므로 붙여 둡니다.
> $env:username

What is return "`n>"?



 Prompt 함수는 반환 값으로 문자열을 예상하므로 붙입니다. Powershell에서는 개행 문자는. 조금 전의 \n 로 출력되고 있던 캐릭터 라인으로부터 개행을 걸어 `n 를 표시하고 있는 느낌이군요.
return "`n> "

결국 어디에 쓰면 좋을까?



  산뜻하게 흘려 버렸기 때문에 만약을 위해. -NoNewLine 변수에는 현재 사용중인 Powershell 프로파일의 경로가 들어 있습니다. Bash의 > 같은 것이군요. 여기에 작성된 함수, 별칭, cmdlet 및 변수는 미리 실행 및 정의된 상태로 시작됩니다.
> $Profile
#C:\Usersからはじまり.ps1で終わる何らかのファイルのパス

결론



  수고하셨습니다. 잘 실행할 수 있었습니까? $Profile 가 비추천으로 되어 있는 것 같고, 여러가지 환경에서 테스트하고 있지 않기 때문에 약간 불안합니다. 그래도 어떤 도움이 되었으면 좋겠습니다. 여기까지 읽어 주셔서 감사합니다.
  다음 몇 책 이런가, 장편이라고 할까 몇 가지로 나누어 쓰고 싶은 재료가 있으므로 그것 쓸지도.

좋은 웹페이지 즐겨찾기