Linux 명령어를 줄이는 더 나은 방법 (alias가 아닙니다)
Source: Dev.to
별칭(Alias)이 명령어를 줄이는 최선의 방법이 아닌 이유
새로운 Linux 사용자인 경우, 다음과 같은 ~/.bash_aliases 파일을 가지고 있을 수 있습니다:
alias apup='sudo apt update'
alias apug='sudo apt upgrade'
alias apls='apt list'
alias apsr='apt search'
별칭은 긴 명령어를 줄이는 데 편리할 수 있지만, 몇 가지 단점이 있습니다.
별칭이 너무 많아 자동완성을 방해함
대부분의 쉘에서 Tab 키를 누르면 자동완성 제안이 표시됩니다. 많은 별칭이 같은 접두사를 공유하면 제안 목록이 복잡해집니다:
user@host:~$ ap
apls apsr
apt apug
apt-add-repository apup
apt-cache apt-get
aptitude apt-mark
별칭은 중간에 매개변수를 받을 수 없음
별칭은 확장된 명령어 뒤에만 인자를 허용합니다. 중간에 인자가 필요한 명령어(예: ffmpeg, magick)는 별칭으로 효과적으로 줄일 수 없습니다.
별칭은 명령어 구문을 숨김
alias gtad='git add .'
alias gtcm='git commit -m '
alias gtps='git push origin main'
이러한 단축키는 실제 명령어 구조를 배우는 것을 방해합니다. 예를 들어 gtad는 특정 파일을 추가할 수 없으므로 많은 경우 전체 명령어를 입력해야 합니다. MySQL 로그인 시 사용자 이름과 같이 하드코딩된 인자는 제한이 됩니다:
alias sql='sudo mysql -u root -p'
별칭이 여전히 유용할 수 있는 경우
명령어를 항상 같은 인자와 함께 사용할 경우—예를 들어 MySQL 셸에 로그인할 때—간단한 별칭을 유지할 수 있습니다:
alias la='ls -A' # 많은 기본 ~/.bashrc 파일에 이미 포함되어 있음
하지만 유연성이 필요한 경우에는 래퍼 스크립트를 고려하세요.
유연성을 위한 래퍼 스크립트 사용
래퍼 스크립트는 매개변수를 읽고 로직을 수행하면서도 짧은 명령어 이름을 제공할 수 있습니다. 아래는 원격 URL에 토큰을 삽입하는 Git 예시입니다:
#!/usr/bin/env bash
# Save this as ~/.local/bin/git (make sure ~/.local/bin is in $PATH)
if [[ $1 == "sync" ]]; then
# $2 should be /
/usr/bin/git remote set-url origin "https://$GIT_TOKEN@github.com/$2"
# add any additional steps here
else
/usr/bin/git "$@"
fi
export GIT_TOKEN=your_token_here를~/.bashrc(또는 다른 안전한 위치)에 추가하여 스크립트가 토큰을 사용할 수 있게 합니다.- 스크립트 이름을
git으로 하고$PATH에서/usr/bin보다 앞에 두면, 시스템 Git 바이너리를 대체하면서도 다른 모든 명령은 실제 Git에 전달됩니다.
이제 다음과 같이 실행할 수 있습니다:
git sync username/repo-name
같은 방법을 magick, yt-dlp 등 다른 도구에도 적용할 수 있으며, 인자 파싱 로직만 조정하면 됩니다.
더 많은 Git 래퍼 스크립트를 보고 싶다면 here에서 확인하세요.