관리 메뉴

김종권의 iOS 앱 개발 알아가기

[Linux, Shell] 리눅스 파이프 (특정 브랜치 제외하고 모든 로컬 브랜치 삭제 방법) 본문

Git, CocoaPods, Xcode, Shell

[Linux, Shell] 리눅스 파이프 (특정 브랜치 제외하고 모든 로컬 브랜치 삭제 방법)

jake-kim 2023. 4. 11. 00:52

리눅스 파이프

  • stdin과 stdout을 연결해주는 테크닉
  • 터미널에서 ls로 파일들을 출력하고 이 파일들을 대상으로 또 다른 처리를 하고싶은 경우?
    • 파이프를 사용하면 stdin - stdout을 연달아 수행이 가능

https://en.wikipedia.org/wiki/Pipeline_(Unix)

ex1) 파이프라인 현재 디렉토리를 알파벳 순으로 출력하기

  • ls로 stdout을 만들고 이 결과를 stdin으로 sort 명령어로 사용
 % ls | sort
README.md
Tuist
scripts

ex2) 앞전에 stdout을 뒷단 명령어의 인수로 받고 싶은 경우? -> xargs 사용

(현재 디렉토리의 모든 파일들에 chmod +x 옵션을 주는 경우)

ls | xargs chmod +x

응용 - 파이프를 통해 브랜치 편리하게 삭제하기

  • 로컬에 특정 브랜치만 남겨두고 다 삭제하는 방법
read -p '삭제할 브랜치 이름을 입력하세요: ' branch_name && git branch | grep -v "$branch_name" | xargs git branch -D
  • shell script로 생성하여 사용
#!/bin/bash

read -p "삭제에서 제외할 브랜치 이름을 입력하세요: " branch_name
read -p "$branch_name 을 제외한 모든 브랜치를 지우시겠습니까? (y/n)" answer

if [ "$answer" == "y" ]; then
  echo "Yes"
  cd {your project name}
  git branch | grep -v "$branch_name" | xargs git branch -D
else
  echo "No"
fi

* 참고

https://architectophile.tistory.com/9

https://en.wikipedia.org/wiki/Pipeline_(Unix) 

https://hwan-shell.tistory.com/324

 

Comments