Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- design pattern
- 스프링 배치
- Angular2
- apache storm
- 도메인주도설계
- scala
- intellij
- hadoop
- Storm
- Spring Boot
- Clean Code
- DDD
- elasticsearch
- Domain Driven Design
- elastic search
- 엘라스틱서치
- Spring Batch
- spark
- Spring XD
- docker
- SBT
- hibernate
- Gradle
- 제주
- hdfs
- Linux
- Java
- Hbase
- Spring
- nginx
Archives
- Today
- Total
욱'S 노트
alias 명령어 본문
bash의 별칭(alias)은 본래, 긴 명령어들을 치지 않기 위한 키보드 단축키나 약어일 뿐입니다. 예를 들어, ~/.bashrc 파일에 alias lm="ls -l | more"라고 적어주면 명령어줄에서 lm이라고 칠 때마다 자동으로 ls -l | more로 바뀝니다. 이렇게 하면 명령어 행에서 엄청난 타이핑을 줄일 수 있고 아주 복잡한 명령어나 옵션의 조합들을 일일이 다 기억하고 있지 않아도 됩니다. alias rm="rm -i"(지울 때 물어보기 모드)라고 세팅해 놓으면 중요한 파일을 실수로 지워버리지 않게 하기 때문에 큰 사고를 막아 줍니다.
스크립트에서는 별칭(alias)이 제한된 쓰임새를 갖습니다. 별칭에 매크로 확장같은 C 전처리기(preprocessor)기 같은 기능이 있었다면 아주 좋았을텐데, 불행하게도 Bash는 별칭에 속한 인자들을 확장하지 않습니다. [1] 게다가, if/then문, 루프, 함수같은 "복합문"(compound construct)안에서는 별칭 자체의 확장이 되질 않습니다. 아마 거의 항상 그럴테지만, 별칭으로 무엇을 하려던 간에 함수에서 구현하는 것이 더 효과적일 것입니다.
예 24-1. 스크립트에서 쓰이는 별칭(alias)
#!/bin/bash
# 오래된 시스템에서는 #!/bin/bash2 라고 해야 됩니다.
shopt -s expand_aliases
# 이 옵션을 꼭 써야 별칭을 확장시킬 수 있습니다.
# 먼저 재미로 하나 해보죠.
alias Jesse_James='echo "\"Alias Jesse James\" was a 1959 comedy starring Bob Hope."'
Jesse_James
echo; echo; echo;
alias ll="ls -l"
# 별칭을 정의하려면 작은따옴표(')나 큰따옴표(") 중 하나를 써야 됩니다.
echo "별칭인 \"ll\" 해보기:"
ll /usr/X11R6/bin/mk* #* 잘 됩니다.
echo
directory=/usr/X11R6/bin/
prefix=mk* # 와일드 카드가 문제를 일으키는지 한 번 봅시다.
echo "Variables \"directory\" + \"prefix\" = $directory$prefix"
echo
alias lll="ls -l $directory$prefix"
echo "별칭인 \"lll\" 해보기:"
lll # /usr/X11R6/bin 에서 mk 로 시작하는 모든 파일들의 모든(long) 정보를 보여줍니다.
# 별칭은 와일드 카드를 포함한 변수의 연결을 잘 처리합니다.
TRUE=1
echo
if [ TRUE ]
then
alias rr="ls -l"
echo "별칭 \"rr\" 을 if/then 문 안에서 해보기:"
rr /usr/X11R6/bin/mk* #* 에러 메세지가 나옵니다!
# 별칭은 복합문 안에서 확장되지 않습니다.
echo "하지만, 이미 확장된 별칭은 인식합니다:"
ll /usr/X11R6/bin/mk*
fi
echo
count=0
while [ $count -lt 3 ]
do
alias rrr="ls -l"
echo "별칭 \"rrr\" 을 \"while\" 루프안에서 해보기:"
rrr /usr/X11R6/bin/mk* #* 역시 확장되지 않습니다.
let count+=1
done
echo; echo
alias xyz="cat $1" # 별칭에서 위치 매개변수 시도.
xyz # Bash 문서는 이런 시도를 하지 말라고 제안하고 있습니다만,
# 이 스크립트에 파일명을 줘서 돌리면 제대로 되는것처럼 보입니다.
exit 0 |
예 24-2. unalias: 별칭을 설정, 해제하기
#!/bin/bash
shopt -s expand_aliases # 별칭 확장을 킴.
alias llm='ls -al | more'
llm
echo
unalias llm # 별칭을 해제.
llm
# 'llm'이 더 이상 인식되지 않기 때문에 에러 메세지가 나옵니다.
exit 0 |
bash$ ./unalias.sh total 6 drwxrwxr-x 2 bozo bozo 3072 Feb 6 14:04 . drwxr-xr-x 40 bozo bozo 2048 Feb 6 14:04 .. -rwxr-xr-x 1 bozo bozo 199 Feb 6 14:04 unalias.sh ./unalias.sh: llm: command not found |
출처 : KLDP
'Programming > Linux' 카테고리의 다른 글
Linux - Yum (0) | 2015.06.23 |
---|---|
Linux - 심볼릭 링크, symbolic link (0) | 2015.03.19 |
Linux - scp 명령어 (0) | 2015.02.27 |
Homebrew (0) | 2015.01.29 |
sudo 명령어 (0) | 2014.12.31 |
Comments