그 밖의 몇 가지

echo / set export / bc edic / date cal

메시지 및 쉘 변수에 대한 명령어들
$ echo [messages] - 이용자를 위한 메시지 출력

임의의 문자열, 환경변수, 환경변수를 포함하는 문자열을 출력하는 명령이다. 지금으로선 잘 와닿지 않겠지만 간단한 쉘 프로그램을 작성할 때 메시지 출력의 용도로 요긴하게 이용된다. 여기서는 몇 가지 보기를 참고해 두자.

$ echo 에코는 메아리                   # 안좋은 습관
에코는 메아리
$ echo '에코는 메아리'              # 좋은 습관
에코는 메아리
$ echo '나는 $LOGNAME, 내 홈디렉토리는 $HOME 입니다.'   # ' ' 이용
나는 $LOGNAME, 내 홈디렉토리는 $HOME 입니다.
$ echo "나는 $LOGNAME, 내 홈디렉토리는 $HOME 입니다." # " " 이용
나는 jedi, 내 홈디렉토리는 /home/jedi 입니다.

이 보기에서는 쉘 프롬프트에서 통용되는 문자열(strings)에 대한 두 가지 유형을 눈치챌 수 있다. 즉 ' '(단일 인용, single quote)는 내부에 들어간 모든 문자들을 '있는 그대로' 취급하고, " "(이중 인용, double quote)는 $ 문자와 그 이후의 대문자 단어를 무엇인가로 "대치시키며" 취급한다.

인용부호(' ' " ") 자체를 출력하려면?

C/C++ 언어에서처럼 \(역슬래쉬, back slash)를 이용한다.

$ echo "\"제다이\"의 상징은 \'포스\'와 \'광선검\'이다."
"제다이"의 상징은 '포스'와 '광선검'이다.


$ 문자와 그 이후의 대문자는 바로 환경 변수(environmental variables), 더 일반적으로는 쉘 변수(shell variables)를 의미한다. 우리는 set 명령어의 실행 결과를 언급하면서 이미 이것들이 어떻게 생겨먹었는지 정도는 구경했지만 - 기억나지 않는다고 발뺌할 것도 이미 예상했으므로 다음을 준비해 두었다!

$ export [name=[value]] - 쉘 변수 정의

setexport에 대한 설명은 아마 결국 Bash에 대한 설명으로 흘러가 버릴 것이다 - 그러므로 여기서는 유용한(?) 사용예만 보이고 넘어 가겠다. 나머지 이야기는 man bash 또는 info bash로 대신한다.

$ export DISPLAY="my.sys.tem.net:0"
$ set -o vi

첫 번째 명령, export의 전형적인 사용법을 보이고 있다. 이 명령이 도대체 뭘 하기 위한 건지는 X-Window 이용법에서 참고하라. 두 번째 명령, set은 Bash의 명령 프롬프트에서의 키보드 정의를 다시 해서 - 내일 다룰 - vim 편집기와 같은 상태로 만들기 위한 것이다. 둘 다 무슨 소린지 잘 모르리라고 예상되므로 이쯤에서 넘어가겠다 :-)

쓸만한 유틸리티들
$ bc [option] [file] - 막강한 간이(?) 계산기

터미널에서 이용할 수 있는 간이 계산기다. bc라고 실행하면 기본적인 사칙연산이 가능한 모드로, 그리고 bc -l, 즉 수학라이브러리 옵션을 추가해 실행하면 몇 가지 기본 수학함수들도 처리할 수 있는 모드로 동작한다.

$ bc -l
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1 + 2 + 3               # 사칙연산
6
s(1.33)                 # sine 함수(라디안)
.97114837792104456233
quit                    # 종료

위의 실행모습은, 무척 썰렁해 보이면서도 뭔가 섬칫한(?) 사실을 암시하고 있다. 간단히 쓸 수 있는 여타 계산기 프로그램들(그래픽 모드에서 동작하는)보다 훨씬 더 많은 유효숫자를 다룬다는 말이다. 사실 이 bc 유틸리티는 무한 유효숫자를 지원하고 또한 대화식 모드(위에서 보인 것처럼) 뿐만 아니라 C 언어 형식으로 작성된 입력파일을 이용한 프로그래밍 기능까지 가지고 있다 - 이쯤되면 결코 이것은 "간이" 계산기가 아니다! 자세한 이용법은 당연히 man bc로 알아볼 수 있을 것이다.

$ edic [word] - 간단한 한영/영한 사전

(이것은 몇 년 전에 만들어진 후 거의 업데이트되지 않은 소프트웨어다. 하지만 대부분의 "성실한" 시스템 관리자는 틀림없이 이와 유사한 유틸리티를 설치해 뒀을 것이다 :-) 보기와 같이 찾는 단어를 명시하면 사전에 나온 의미를 출력하고 종료한다. 찾는 단어 없이 그냥 edic이라고 실행해도 단어를 입력할 수 있도록 프롬프트가 보일 것이다. 이 상태에서 종료하려면 아무 것도 입력하지 말고 그냥 엔터를 누르자.

$ cal [month] [year] - 달력 보기

터미널에서 간단히 달력을 보여준다. 그냥 cal이라고만 하면 오늘이 포함된 월을 출력, cal 숫자라고 하면 숫자를 연도로 인식해서 1월부터 12월까지 모두 보여준다. 보기와 같이 하면 정확히 해당 연도 해당 월의 달력을 보인다.

한편, 살다보면 오늘이 언젠지도 모를 때가 많다. 관찰한 바에 의하면 다른 어떤 경우보다, 터미널 화면을 바라보고 있는 시간이 긴 사람일수록 날짜 개념이 희박하다.[20] 그러므로 date라는 명령을 잘 기억하고 있어야 하겠다.

오늘은 주요 명령어에 대해 살펴 보았다. 사용하는 빈도와 중요성을 감안해 선택한 명령어들이며, 중요한 것은 이들을 하루동안에 다 연습해 보고 완전히 익히는 것이 아니라 "앞으로 잘 이용"하면 된다는 사실이다. 각 명령에 대한 더 많은 옵션과 예제들은 여러 차례 강조되었듯이 오랫동안 꼼꼼하게 만들어져 온 명령어 자체의 매뉴얼, 인포, --help, 그리고 온라인과 오프라인에서 쉽게 구할 수 있을 방대한 문서들을 참고하라. 오늘 과정에서 특별히 네트웍 관련 명령은 제외되었다. 이들은 시스템 서비스에 대한 소개 이후, 아마 며칠 후에 소개될 것이다.



[20] 어디까지나 개인적인 생각이다, 딴지는 사양! :-)