PowerShell로 peco (인터랙티브 필터링 도구) 같은 것을 만들었습니다.

3316 단어 PowerShellPeco
아래와 같은 느낌으로 PowerShell로 peco 같은 것을 만들었다. 선택 기능은 구현되지 않았습니다



왜 만든



그대로 peco 사용하면 좋다



peco는 텍스트 스트림을 처리하는 명령이며 PowerShell 개체를 처리하는 명령이 아닙니다. 따라서 Where-Object와 같이 객체를 객체 그대로 필터링 할 수 없습니다. 그대로 객체로 필터링할 수 있는 명령을 원했기 때문에 만들었다.

Out-GridView -PassThru로 충분합니다.



완전히 그대로이고, 보통은 풍부한 필터링 기능을 가지는 Out-GridView 를 사용해야 한다. 다만, 절각 CLI 사용하고 있는데 GUI 에 의지하고 싶지 않다는 생각이 있었기 때문에 만들었다.

사용법



링크 대상(Gist) 의, 각 파일을 로컬로 만들어, poco.psm1 를 임포트하면 사용할 수 있게 된다.

쿼리 작성 방법


: 다음에 필터링에 사용하고 싶은 프로퍼티명을 기술한다. 그 프로퍼티치와 비교하고 싶은 단어를 반각 스페이스 단락으로 뒤에 기술한다. 각 조건은 논리 곱으로 결합됩니다.
예를 들어, :name chrome :id 5Where-Object {$_.name -match 'chrome' -and $_.id -match '5'} 와 같이 해석된다.


: 단 한 글자 뒤 또는 쿼리의 시작 부분에 :로 시작하지 않는 단어를 작성하면 해당 단어는 객체와 직접 비교됩니다.
예를 들어, powershellWhere-Object {$_ -match 'powershell'} 와 같이 해석된다.

또한 Alt+R를 누르면 필터링에 사용되는 비교 연산자를 전환 할 수 있습니다 (match, like, eq). 또한 Alt+C에서 c를 Alt+I에서 not하거나 제거 할 수 있습니다. 그 때문에, 비교 연산자에는 match, cmatch, notmatch, cnotmatch, like, clike, ...를 사용할 수 있다.



키 매핑



링크 대상(Gist) 의 poco_key.ps1 를 참조. (실장되어 있지 않은 기능에도 매핑되고 있다.)

코드



코드는 Gist 에 붙여져 있다. 덧붙여 실장은 오셀로 게임 만들기 (1) - PowerShell Memo (을)를 코피페 하고 있으므로, 코드를 쫓는다면 오셀로 게임의 쪽의 해설을 먼저 읽는 것이 좋다.

이케하지 않는 부분 다양한



  • 입력에 대한 반응이 느림
  • 객체 수가 많으면 얽힌다


  • 페이징할 수 없음
  • 선두 부근의 오브젝트 밖에 확인할 수 없다


  • 선택할 수 없음
  • 쿼리를 열심히하지 않으면 원하는 객체 만 픽업 할 수 없습니다

  • :
  • 정규 표현이라면 [:]라든지 쓸 수 있지만


  • 탭 완성 없음
  • 긴 속성 이름을 열심히 칠 수밖에 없다
  • 속성 이름을 암기하지 않으면 사용할 수 없습니다


  • 특수 키 입력이 제거되지 않음
  • Windows 키나 누르면 문자로 인식된다


  • 정직하고 실용적인 cmdlet을 누군가가 만들 것을 기대합니다

    좋은 웹페이지 즐겨찾기