Solaris

[솔라리스]명령줄을 도스처럼

알 수 없는 사용자 2008. 3. 20.
728x90



도스 프롬프트는 c:\Documents and Settings\na 처럼 현재 작업 디렉토리를 출력합니다.
하지만 솔라리스의 프롬프트는 달랑 #, > 아니면 $, 항상 pwd를 쳐야하는 번거로움을 선사하는군요.

하지만 방법이 있습니다(콘셸기반). 콘셸의 디폴트 변수에는 여러가지가 있습니다.



  • EDITOR : 셸을 위한 디폴트 에디터를 정의합니다.
  • FCEDIT : fc명령을 위한 에디터를 정의합니다.(이전에 실행한 명령어를 다시 불러오는)
  • HOME : cd 명령을 인자없이 사용하였을 경우 갈 디렉토리를 지정합니다.
  • LOGNAME : 사용자의 로그인 이름을 정합니다.
  • PATH : 셸이 명령을 수행해야 할 때 실행파일을 찾을 디렉토리들을 콜론으로 구분지어 사용합니다.
  • PS1 : 프라이머리 콘셸 프롬프트를 지정합니다.(기본은 $)
  • PS2 : 세컨더리 콘셸 프롬프트를 지정합니다.(기본은 >)
  • SHELL : 셸의 이름을 지정합니다.



여기서 보시면 셸 프롬프트를 지정하는 변수가 PS1, PS2가 있네요. 여기서는 PS1를 변경하면 됩니다. 저희가 보는 프롬프트 부분은 echo "$PS1" 으로 표현할 수 있습니다.(제 나름대로의 생각입니다. 틀리면 바로 덧글 남겨주세요, 책에 찾아봐도 없는것 같더군요.-_-)

만약 PS1=`pwd`라고 치게 된다면 어떻게 될까요, "pwd의 결과" 값이 PS1에 저장되게 됩니다.이런 경우, cd로 디렉토리를 바꿔도 "pwd의 결과가 값으로 저장된 것"을 불러오기 때문에, 변하지 않게 됩니다. 또, PS1=$PWD라고 치게 되더라도 마찬가지 결과가 나오게 됩니다. 그럼 과연 어떻게 해야 할까요?

답은 ' '에 있습니다. PS1='$PWD'로 치면 '는 내부의 메타문자를 인식하지 않고 일반 문자로 저장하게 됩니다. 만약 메모리를 뜯어서 본다면, PS1은 $PWD 라는 문자를 저장하고 있을겁니다.

이제 프롬프트 부분을 봅시다. echo "$PWD"는 결국 pwd의 결과를 출력하고, cd를 바꾸면 그에 맞춰서 pwd의 결과를 출력 할 수 있을겁니다.

dos와 완벽하게 똑같이 하기 위해 PS1='$PWD>' 로 합니다.






이것이 끝이라고 생각하시겠지만, 도스에는 유용하게 쓰이는 기능, 화살표 위 아래키를 누르면 지난 명령의 목록이 뜨는 기능은 아직도 구현이 안되어 있네요.

이것 역시 콘셸 기본 변수를 조작하면 비스무리 하게 할 수 있습니다. 화살표키를 사용할 수 없기 떄문입니다. 대신 vi에서 하던것처럼 j키와(아래로), k키(위로), l(오른쪽), h(왼쪽)를 누르시면 됩니다.


이것 역시 간단합니다. export EDITOR=/bin/vi를 입력하시면 됩니다. 혹은 export VISUAL=/bin/vi 또는 더 짧게, set -o vi 를 입력하시면 됩니다.

이제 결과물을 보시죠,ㅎㅎ












뽀너스로 하나 더 추가하겠습니다. dos에서 쓰이던 dir이 그리우셨다구요?
이것 역시 방법이 있습니다. (안되는게 없네요ㅎㅎ)

alias 입니다. 명령의 별명이라고 하면될까요? 긴 명령이거나 외우기 어려운 명령, 그리고 옵션이 필요한 경우에 사용자가 원하는 명령어로 대치(?) 시켜주는 겁니다.

$ alias 하시면 많은것들이 뜨게 될겁니다. 자주 쓰이는 grep도 보이고 history도 보이네요


만약에 alias가 없었더라면 passwd 파일에서 루트의 정보를 보고싶을 때cat /etc/passwd /usr/bin/grep root 라고 쳐야 했을 것입니다. (이런 상황이 계속 발생한다고 생각하면 머리아파서 관둘겁니다.ㅋㅋ 근데 파이프가 계속 없어지는 상황이 발생해서 정말 머리아프네요. 블로깅 힘드네.-_-;;)


뭐 앞에서 갑자기 엉뚱한 얘기로 빠졌는데요, dir을 구현하는 방법에 대해서 알아봅시다.
도스에서 dir을 하면 아래 화면처럼 뜨게 됩니다. 솔라리스의 ls -l과 상당히 흡사하군요~


그래요, ls -l을 dir라고 별명을 붙여줍시다. 별명 붙이기도 사람 별명붙이듯이 쉽네요. alias dir="ls -l"이라고 주시면 됩니다

앞으로 dir을 부르면 ls -l이라는 놈이 쫒아오겠군요.
혹시라도 별명 그만 부르고 싶으시다면 unalias dir 하시면 OK. 컴퓨터라는게 사람이랑 비슷한것 같아요?

728x90

댓글