간단한 peco

4096 단어 Peco
지금까지 peco를 사용할 때는 그물에 떨어지는 설정을 사용하고있었습니다.
「peco로 여러가지 하고 싶지만, 어차피 어려운 것일까」라고 생각하고 있었다.

하지만 정말 쉬웠다.

peco란?



표준 입력을 받고 선택하고 표준 출력을 반환하는 것. 그냥 그냥.



선택하는 곳만이 peco.







이후의 배달은 자유롭게 하면 된다.
표준 입력과 표준 출력을 고안하는 것만으로 다양한 일을 할 수 있다.

가장 간단한 예



줄 바꿈으로 구분 된 텍스트


$ echo -e "a\nb\nc"
a
b
c

peco에게 주어 보면


$ echo -e "a\nb\nc" | peco

선택할 수 있다!



선택한 텍스트가 표준 출력됩니다.





이것만!



나중에 좋아하는 일을하면



sed로 바꾸는 예제 (특히 의미 없음)


echo -e "a\nb\nc" | peco | sed 's/b/Baked Cheese/g'

클립보드에 복사하는 예(Mac의 경우)


echo -e "a\nb\nc" | peco | pbcopy

자유롭다!



문제



하지만 표준 입력을 파이프로받지 않는 명령의 경우,
어떻게 peco에서 선택한 결과를 전달하면 좋을 것이다.

쉘을 잘 모르겠지만 어떤 변수로 전달할 수 있을까.

(이미지)
echo -e "a\nb\nc" | peco | echo $SELECTED



반대로 한다.

peco의 결과를 파이프로 다른 명령에 전달하는 대신,
다른 커멘드에 건네주는 내용으로서, 서브 커멘드내에서 peco를 사용해 한다.

echo에 전달하는 예 (특히 의미 없음)



peco의 디폴트의 거동과 다르지 않지만, 스스로 echo한다면 이런 느낌.
echo $(echo -e "a\n\b\c" | peco)

처음에는 이상하게 생각했지만, 쉘의 사양으로서 서브 커맨드를 먼저 실행하기 때문에, peco로 일단 실행이 「멈추고」, 선택할 수 있는 모드에 들어가는 것 같다. (잘 됐다)

ls에 전달하는 예



원하는 디렉토리를 선택합니다.
ls $(echo -e "./\n../\n/" | peco)



ls에 전달하는 예



(쉘의 사양이므로 peco와는 직접 관계없지만)
ls/ls -la라든지, 옵션의 부분을 전환해 주기도 한다.
ls $(echo "-la\n" | peco)

사용하기 쉽게



쉘의 별칭 등록하거나 단축키에 등록하면 된다.

직접 만들어 보았습니다.



(어딘가에 비슷한 것이 떨어질 것입니다)
  • Mac | peco에서 쉘 명령 기록에서 클립 보드로 복사 - Qiita
  • Git | peco에서 최근에 사용한 로컬 브랜치로 체크 아웃 - Qiita


  • 문제



    peco를 여러 번 연속적으로 실행하는 방법?
    ( peco로 선택 => 실행 결과 => 다른 것을 peco로 선택 => 실행 결과, 같은)



    쉘 스크립트 안에서 peco를 돌리면 좋다.



    some.sh
    while true; do
      echo -e "a\nb\nc" | peco
      read Wait
    done
    


    만들어 본 사람



    업무상 틈새 시장.

    Bigquery | peco에서 연속 작업 세부 정보보기 쉘 스크립트 - Qiita

    좋은 웹페이지 즐겨찾기