본문 바로가기
IT 지식정리/운영체제

[Linux shell script 3] 리눅스 쉘스크립트 "alias" 와 쉘 함수 2015. 1. 28.

by G. Hong 2017. 11. 4.
728x90
반응형

리눅스의 쉘스크립트에서 alias 명령어와 함수를 사용하는 방법에 대해서 알아보도록 하겠습니다.


alias 를 사용하면 간단한 커맨드를 만들수 있습니다.

문법은 다음과 같습니다..

alias name=value


alias를 사용하여 tmp라는 커맨드를 만들어 보겠습니다.


$ alias tmp='ls -al'


만든 커맨드를 실행하면 value값이 실행되게 됩니다.

$ tmp

total 36

drwx------. 4 gyhong gyhong 4096 Jan 27 16:59 .

drwxr-xr-x. 5 root   root   4096 Dec 22  2005 ..

-rw-------. 1 gyhong gyhong  872 Jan 27 16:59 .bash_history

-rw-r--r--. 1 gyhong gyhong   18 Sep 26 11:00 .bash_logout

-rw-r--r--. 1 gyhong gyhong  176 Sep 26 11:00 .bash_profile

-rw-r--r--. 1 gyhong gyhong  124 Sep 26 11:00 .bashrc

drwxr-xr-x. 2 gyhong gyhong 4096 Nov 20  2010 .gnome2

drwxr-xr-x. 4 gyhong gyhong 4096 Sep 10 10:35 .mozilla

-rw-------. 1 gyhong gyhong 3539 Jan 27 16:59 .viminfo

쉘 함수를 사용하여 동일한 기능을 만들 수 있습니다.

$ tmp1() {

> echo -e "output of ls -al \n"

> ls -al

> }

$ tmp1

output of ls -al


total 36

drwx------. 4 gyhong gyhong 4096 Jan 27 16:59 .

drwxr-xr-x. 5 root   root   4096 Dec 22  2005 ..

-rw-------. 1 gyhong gyhong  872 Jan 27 16:59 .bash_history

-rw-r--r--. 1 gyhong gyhong   18 Sep 26 11:00 .bash_logout

-rw-r--r--. 1 gyhong gyhong  176 Sep 26 11:00 .bash_profile

-rw-r--r--. 1 gyhong gyhong  124 Sep 26 11:00 .bashrc

drwxr-xr-x. 2 gyhong gyhong 4096 Nov 20  2010 .gnome2

drwxr-xr-x. 4 gyhong gyhong 4096 Sep 10 10:35 .mozilla

-rw-------. 1 gyhong gyhong 3539 Jan 27 16:59 .viminfo


alias와 쉘 함수로 만든 커맨드들은 현재 세션에서만 사용이 가능합니다. 
아래와 같이 다시 로그인을 한 경우에는 사용할 수 없습니다.

$ exit
login as: gyhong
gyhong@xxx's password:
Last login: Wed Jan 28 09:48:28 2015 from xx.xxx.xxx.xxx
$ tmp
-bash: tmp: command not found
$ tmp1
-bash: tmp1: command not found

이러한 쉘 함수들은 장비의 상태를 관찰 할 때에도 유용하게 사용할 수 있습니다.
서버에 연결된 lto테입 장비들을 관찰하기 위해 "dmesg | grep scsi | grep HP" 커맨드를 5초마다 실행하는 커맨들를 만들어 보겠습니다.

$ checkscsi() {
> while((1))
> do
> dmesg | grep scsi | grep HP
> echo "================================================================="
> sleep 5
> done
> }

checkscsi라는 커맨드를 만든 뒤 실행하면 아래처럼 5초마다 새로운 output을 계속 출력하게 됩니다.
$ checkscsi
scsi 3:0:0:0: Sequential-Access HP       Ultrium 3-SCSI   M6BS PQ: 0 ANSI: 3
scsi 3:0:1:0: Sequential-Access HP       Ultrium 3-SCSI   M6BS PQ: 0 ANSI: 3
=================================================================
scsi 3:0:0:0: Sequential-Access HP       Ultrium 3-SCSI   M6BS PQ: 0 ANSI: 3
scsi 3:0:1:0: Sequential-Access HP       Ultrium 3-SCSI   M6BS PQ: 0 ANSI: 3
=================================================================
scsi 3:0:0:0: Sequential-Access HP       Ultrium 3-SCSI   M6BS PQ: 0 ANSI: 3
scsi 3:0:1:0: Sequential-Access HP       Ultrium 3-SCSI   M6BS PQ: 0 ANSI: 3
=================================================================
^Z
[2]+  Stopped                 sleep 5
$


728x90
반응형