Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

나만의 Bash 꿀팁 대공개: 매일 쓰는 별칭과 함수 모음

하루 종일 컴퓨터 앞에서 일하다 보면, 반복해서 쓰는 명령어를 미리 정리해두고 필요할 때 바로 꺼내 쓸 수 있다는 게 정말 큰 행운입니다. 이런 명령어들은 ~/.bashrc(Zsh 사용자라면 ~/.zshrc) 파일 속에 고이 잠들어 있으며, 여러분의 하루를 조금 더 편하게 만들어 주기를 기다리고 있습니다.

이 글에서는 자주 까먹는 작업들을 위해 만들어둔 제가 가장 아끼는 헬퍼 명령어 몇 가지를 공유합니다. 여러분도 소중한 시간을 아끼고 골치 아픈 일을 피하는 데 도움이 되길 바랍니다.

명령이 끝나면 소리 내어 알려주기

실행 시간이 긴 명령어를 돌릴 때면 저는 흔히 다른 작업을 하다가 나중에 완료됐는지 확인하러 돌아오곤 했습니다. 하지만 이제는 그럴 필요가 없습니다. macOS의 say 명령어(다른 OS라면 각자 환경에 맞게 바꿔 쓰세요)를 활용한 이 유용한 함수 덕분입니다:

function looooooooong {
START=$(date +%s.%N)
$*
EXIT_CODE=$?
END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)
RES=$(python -c "diff = $DIFF; min = int(diff / 60); print('%s min' % min)")
result="$1 completed in $RES, exit code $EXIT_CODE."
echo -e "\n⏰ $result"
( say -r 250 $result 2>&1 > /dev/null & )
}

이 함수는 명령어의 시작 시각과 종료 시각을 기록하고, 소요 시간을 분 단위로 계산한 뒤, 어떤 명령어가 실행되었는지, 얼마나 걸렸는지, 종료 코드는 무엇인지 음성으로 알려줍니다. 단순한 콘솔 벨 소리로는 부족할 때 정말 유용합니다.

패키지 설치 도우미

저는 Ubuntu Lucid 시절부터 Ubuntu를 사용해 왔는데, 가장 먼저 배워야 했던 것 중 하나가 바로 패키지 설치 방법이었습니다. 그래서 처음 추가한 별칭(alias) 중 하나가 이것입니다(이름은 당시 유행하던 밈에서 따왔습니다):

alias canhas="sudo apt-get install -y"

GNU Privacy Guard(GPG) 서명

확장 프로그램이나 전용 앱 없이 GPG로 이메일에 서명해야 할 때가 아주 가끔 있는데, 그럴 때면 명령줄로 내려가 이 촌스러우면서도 기억하기 쉬운 별칭들을 사용합니다:

alias gibson="gpg --encrypt --sign --armor"
alias ungibson="gpg --decrypt"

Docker

Docker 명령어도 많지만, docker compose 명령어는 그보다 더 많습니다. 예전에는 --rm 플래그를 자주 빠뜨렸는데, 이제는 아래 별칭들 덕분에 걱정할 필요가 없습니다:

alias dc="docker-compose"
alias dcr="docker-compose run --rm"
alias dcb="docker-compose run --rm --build"

Google Cloud용 gcurl 헬퍼

이것은 비교적 최근에 알게 된 도구지만, 공식 문서도 잘 정리되어 있습니다. gcurl은 Google Cloud API를 다룰 때 인증 헤더와 함께 로컬 curl 명령어를 사용할 경우 필요한 올바른 플래그를 모두 자동으로 붙여 주는 별칭입니다.

Git과 ~/.gitignore

저는 Git 작업을 매우 많이 하기 때문에, Git 헬퍼만을 위한 별도 섹션을 마련해 두었습니다.

가장 유용하게 쓰는 도우미 중 하나는 GitHub 저장소를 클론할 때 사용하는 함수입니다. 원래라면 이렇게 길게 입력해야 합니다:

git clone git@github.com:org/repo /Users/glasnt/git/org/repo

하지만 저는 클론 전용 함수를 만들어 두었습니다:

clone(){
echo Cloning $1 to ~/git/$1
cd ~/git
git clone git@github.com:$1 $1
cd $1
}

~/.bashrc 파일을 열 때마다 이걸 보고 까먹은 셈 치고 웃음이 나오긴 하지만, 'upstream 새로고침' 명령어도 함께 사용합니다:

alias yoink="git checkout master && git fetch upstream master && git merge upstream/master"

Git 관련 또 하나의 필수 도우미는 전역 무시(global ignore) 파일입니다. git config --global --list를 실행했을 때 core.excludesfile 항목이 보여야 합니다. 만약 없다면 새로 만들고, 개별 .gitignore 파일에 매번 넣게 되는 항목들을 채워 넣으세요. macOS에서 Python 개발을 하는 저의 경우 이렇습니다:

.DS_Store     # macOS 잡동사니
venv/ # 가상환경은 절대 커밋하지 않는다
*.egg-info/* # ... 로컬에서 빌드한 패키지도 마찬가지
__pycache__ # ... 소스 캐시도
*.swp # ... vim으로 열어둔 파일도

Gitignore.io나 GitHub의 Gitignore 저장소에서 더 다양한 추천 목록을 찾아볼 수 있습니다.

이제 여러분 차례입니다

여러분이 가장 사랑하는 헬퍼 명령어는 무엇인가요? 댓글로 자유롭게 공유해 주세요!