우분투 등 데비안 계열의 리눅스를 쓰다보면 apt-get (또는 aptitude) 명령을 참 많이 쓰게 될 것입니다. 각종 프로그램을 깔고 지우고 업그레이드하는 명령이니까요. 시냅틱(synaptic)이라는 훌륭한 패키지 관리툴이 있지만, 터미널에서 apt-get을 이용하는 것이 조금 빠르고 또한 편리한 경우도 종종 있습니다. 그런데 'sudo apt-get install" 등등을 번번히 입력하는 것은 좀 귀찮습니다. 그래서 많은 분들이 'alias'를 지정하여 명령어를 짧게 줄여서 사용하실 것입니다.
일단 alias 지정하는 방법부터 간단히 소개합니다.
터미널에서 다음 명령어를 입력하여 ".bashrc"라는 파일을 불러옵니다.
파일의 끝에 다음 처럼 alias를 지정합니다.
'aptitude'를 선호한다면 다음 처럼 지정해주면 되겠죠.
위의 예에서 붉은 글씨 부분이 이른바 alias이고, 작은 따옴표로 묶인 것이 각각의 alias에 대응되는 진짜 명령입니다. alias는 물론 자기가 원하는 대로 넣어줄 수 있습니다. 'apti'도 길다 싶으면 'ai'로 지정해도 된다는 얘기죠. 물론 'apt-get' 뿐만 아니라 자신이 자주 사용하는 명령어가 있다면 무엇이든 지정해서 사용하면 됩니다. 주의할 점은 이미 존재하는 명령어와 겹치지 않도록 해야한다는 것입니다. 만약 alias cd='sudo dpkg -i' 이렇게 지정한다면 디렉토리를 바꾸는 'cd' 명령이 불가능해지겠죠?
아무튼, alias 지정을 마쳤으면 .bashrc 파일을 저장합니다. 다음번 터미널을 열면 지정한 alias 명령이 사용 가능해집니다. 당장 효과를 보고 싶으면 아래와 같이 명령어를 입력해줍니다.
여기까지는 리눅스를 처음 경험하는 분이 아니라면 대부분 알고있을 내용이니, 팁이라고 할 것도 없는 얘기였고요. 지금부터 약간은 팁다운 이야기를 해보겠습니다.
위와 같이 alias로 apt-get 명령을 쓰면 타이핑할 일이 줄어들어 좋기는 한데 작은 문제점이 있습니다.
'tab' 키를 사용하여 나머지 부분을 자동 완성해주는 멋지고 편리한 기능이 동작하지 않거든요.
'sudo apt-get install (purge) au' 까지 입력하고 탭키를 누르면 'au'로 시작하는 패키지를 찾아서 보여주잖아요? 정확한 패키지의 이름을 모르거나 이름이 길어서 입력하기 귀찮을 때 쓰면 딱인데, alias를 사용하여 'apti au'라고 타이핑하고 탭키를 백번 눌러봤자 아무 반응이 없습니다. 좀 불편합니다.
인터넷을 뒤져보니 방법이 있더군요. 소개합니다.
.bashrc 파일을 에디터로 열고 일단 아래 코드를 복사하여 넣어줍니다.
(#로 시작하는 부분은 주석이니 없어도 무방하지만, 제작자에게 예의를 표하는 의미로 그냥 넣어줍시다...)
그 아래에 다음과 같은 코드를 넣어줍니다.
위에서 주의하여 볼 곳은 붉은 글씨 부분입니다. 여러분이 지정한 alias의 이름이 저 곳에 들어가야 합니다.
파란 글씨는 지정한 alias에 대응되는 실제 명령어를 넣어주면 됩니다.
그럼 초록 글씨 부분은 뭘까요.
'complete -p <명령어>'를 입력했을 때 출력되는 것을 보고 똑같이 입력해주면 됩니다.
다 되었으면 .bashrc 파일을 저장하고, 아까 처럼 'source ~/.bashrc' 한번 쳐줍니다.
이제 'apti au'까지 입력하고 탭키를 두번 눌러주면 터미널 화면에 au로 시작하는 패키지들이 주루룩 출력될 것입니다.
'aptitude'를 예로 들어 종합적인 보충을 해보죠.
'sudo aptitude purge'를 'attp'라는 alias로 지정하기로 했다면,터미널에서 다음을 입력해봅니다.
다음과 같이 출력될 것입니다.
그러면 '.bashrc'파일에 들어갈 코드는 다음과 같이 되겠죠.
위 방법을 응용하면 alias를 이용했을 때 탭키의 자동 완성 기능이 동작하지 않는 명령어들을 좀 더 편하게 사용할 수 있겠지요?
위의 팁 출처는 -> http://ubuntuforums.org/showthread.php?t=733397
일단 alias 지정하는 방법부터 간단히 소개합니다.
터미널에서 다음 명령어를 입력하여 ".bashrc"라는 파일을 불러옵니다.
$ gedit ~/.bashrc
파일의 끝에 다음 처럼 alias를 지정합니다.
alias apti='sudo apt-get install' # 패키지 설치
alias apty='sudo apt-get install -y' # 확인 없이 패키지 설치
alias aptu='sudo apt-get update' # 패키지 목록 업데이트
alias aptg='sudo apt-get upgrade' # 패키지 업그레이드
alias aptp='sudo apt-get purge' # 패키지 지우기
alias apty='sudo apt-get install -y' # 확인 없이 패키지 설치
alias aptu='sudo apt-get update' # 패키지 목록 업데이트
alias aptg='sudo apt-get upgrade' # 패키지 업그레이드
alias aptp='sudo apt-get purge' # 패키지 지우기
'aptitude'를 선호한다면 다음 처럼 지정해주면 되겠죠.
alias apti='sudo aptitude install' # 패키지 설치
alias aptu='sudo aptitude update' # 패키지 목록 업데이트
alias aptg='sudo aptitude full-upgrade' # 패키지 업그레이드
alias aptp='sudo aptitude purge' # 패키지 지우기
alias aptu='sudo aptitude update' # 패키지 목록 업데이트
alias aptg='sudo aptitude full-upgrade' # 패키지 업그레이드
alias aptp='sudo aptitude purge' # 패키지 지우기
위의 예에서 붉은 글씨 부분이 이른바 alias이고, 작은 따옴표로 묶인 것이 각각의 alias에 대응되는 진짜 명령입니다. alias는 물론 자기가 원하는 대로 넣어줄 수 있습니다. 'apti'도 길다 싶으면 'ai'로 지정해도 된다는 얘기죠. 물론 'apt-get' 뿐만 아니라 자신이 자주 사용하는 명령어가 있다면 무엇이든 지정해서 사용하면 됩니다. 주의할 점은 이미 존재하는 명령어와 겹치지 않도록 해야한다는 것입니다. 만약 alias cd='sudo dpkg -i' 이렇게 지정한다면 디렉토리를 바꾸는 'cd' 명령이 불가능해지겠죠?
아무튼, alias 지정을 마쳤으면 .bashrc 파일을 저장합니다. 다음번 터미널을 열면 지정한 alias 명령이 사용 가능해집니다. 당장 효과를 보고 싶으면 아래와 같이 명령어를 입력해줍니다.
$ source ~/.bashrc
여기까지는 리눅스를 처음 경험하는 분이 아니라면 대부분 알고있을 내용이니, 팁이라고 할 것도 없는 얘기였고요. 지금부터 약간은 팁다운 이야기를 해보겠습니다.
위와 같이 alias로 apt-get 명령을 쓰면 타이핑할 일이 줄어들어 좋기는 한데 작은 문제점이 있습니다.
'tab' 키를 사용하여 나머지 부분을 자동 완성해주는 멋지고 편리한 기능이 동작하지 않거든요.
'sudo apt-get install (purge) au' 까지 입력하고 탭키를 누르면 'au'로 시작하는 패키지를 찾아서 보여주잖아요? 정확한 패키지의 이름을 모르거나 이름이 길어서 입력하기 귀찮을 때 쓰면 딱인데, alias를 사용하여 'apti au'라고 타이핑하고 탭키를 백번 눌러봤자 아무 반응이 없습니다. 좀 불편합니다.
인터넷을 뒤져보니 방법이 있더군요. 소개합니다.
.bashrc 파일을 에디터로 열고 일단 아래 코드를 복사하여 넣어줍니다.
# Author.: Ole Jørgen Brønner
# Date...: 23.03.2008
# License: Whatever
# Wraps a completion function
# make-completion-wrapper <actual completion function> <name of new func.>
# <command name> <list supplied arguments>
# eg.
# alias agi='apt-get install'
# make-completion-wrapper _apt_get _apt_get_install apt-get install
# defines a function called _apt_get_install (that's $2) that will complete
# the 'agi' alias. (complete -F _apt_get_install agi)
#
function make-completion-wrapper () {
local function_name="$2"
local arg_count=$(($#-3))
local comp_function_name="$1"
shift 2
local function="
function $function_name {
((COMP_CWORD+=$arg_count))
COMP_WORDS=( "$@" \${COMP_WORDS[@]:1} )
"$comp_function_name"
return 0
}"
eval "$function"
}
# Date...: 23.03.2008
# License: Whatever
# Wraps a completion function
# make-completion-wrapper <actual completion function> <name of new func.>
# <command name> <list supplied arguments>
# eg.
# alias agi='apt-get install'
# make-completion-wrapper _apt_get _apt_get_install apt-get install
# defines a function called _apt_get_install (that's $2) that will complete
# the 'agi' alias. (complete -F _apt_get_install agi)
#
function make-completion-wrapper () {
local function_name="$2"
local arg_count=$(($#-3))
local comp_function_name="$1"
shift 2
local function="
function $function_name {
((COMP_CWORD+=$arg_count))
COMP_WORDS=( "$@" \${COMP_WORDS[@]:1} )
"$comp_function_name"
return 0
}"
eval "$function"
}
(#로 시작하는 부분은 주석이니 없어도 무방하지만, 제작자에게 예의를 표하는 의미로 그냥 넣어줍시다...)
그 아래에 다음과 같은 코드를 넣어줍니다.
alias apti='sudo apt-get install'
make-completion-wrapper _apt_get _apti apt-get install
complete -o filenames -F _apti apti
make-completion-wrapper _apt_get _apti apt-get install
complete -o filenames -F _apti apti
위에서 주의하여 볼 곳은 붉은 글씨 부분입니다. 여러분이 지정한 alias의 이름이 저 곳에 들어가야 합니다.
파란 글씨는 지정한 alias에 대응되는 실제 명령어를 넣어주면 됩니다.
그럼 초록 글씨 부분은 뭘까요.
'complete -p <명령어>'를 입력했을 때 출력되는 것을 보고 똑같이 입력해주면 됩니다.
다 되었으면 .bashrc 파일을 저장하고, 아까 처럼 'source ~/.bashrc' 한번 쳐줍니다.
이제 'apti au'까지 입력하고 탭키를 두번 눌러주면 터미널 화면에 au로 시작하는 패키지들이 주루룩 출력될 것입니다.
'aptitude'를 예로 들어 종합적인 보충을 해보죠.
'sudo aptitude purge'를 'attp'라는 alias로 지정하기로 했다면,터미널에서 다음을 입력해봅니다.
$ complete -p aptitude
다음과 같이 출력될 것입니다.
complete -o default -F _aptitude aptitude
그러면 '.bashrc'파일에 들어갈 코드는 다음과 같이 되겠죠.
alias attp='sudo aptitude purge'
make-completion-wrapper _aptitude _attp aptitude purge
complete -o filenames -F _attp attp
make-completion-wrapper _aptitude _attp aptitude purge
complete -o filenames -F _attp attp
위 방법을 응용하면 alias를 이용했을 때 탭키의 자동 완성 기능이 동작하지 않는 명령어들을 좀 더 편하게 사용할 수 있겠지요?
위의 팁 출처는 -> http://ubuntuforums.org/showthread.php?t=733397

트랙백 주소 - http://mojolog.com/tcb/trackback/395


댓글을 달아 주세요
위의 팁을 적용하기 전에 /etc/bash_completion 이라는 파일이 있나 확인해 보세요.
ubuntu 등에서 패키지로 소프트웨어를 설치하면 위 파일에 자동 완성과 관련된 코드를 넣어줍니다.
그리고 나서, /etc/bash.bashrc 나 자신의 .bashrc 에 아래 내용이 존재하는지 확인하고, 없으면 추가해주면 됩니다.
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
이렇게 하면 따로 신경 쓰지 않아도 패키지로 설치된 소프트웨어에 대해서는 자동으로 자동 완성 기능이 동작합니다.