다양한 스토리를 담고 있는 연재를 만나보세요.
[초심자를 위한 생물학+정보학] bash 소개 - 03
Bio통신원(고주온)
_03_
- bash 소개 -
이번에는 bash의 기본적인 사항과 관련 명령어에 대하여 간단하게 알아 보고자 한다. 본 연재에서는 기본 쉘 환경으로 bash를 사용할 것이다. 그런데, 쉘 관련 환경 설정 및 명령 스크립트 (script)는 기본적으로 텍스트 (text)로 이루어져 있기 때문에 문자 편집기 (editor)를 사용해야 한다. 쉘 환경에서 사용하는 편집기로는 vi, emacs, nano 등이 있으나, 당장 그 사용법을 익히는 것은 효율적이지 못한 면이 있다. 좀 더 환경에 익숙해진 후에 익히는 것이 좋을 것으로 생각되어, 잠시 시간을 내어 코드 작성에 유용한 편집기인 노트패드++ (Notepad++)를 설치하고 다음 순서를 진행해 보자. 노트패드++ 역시 GNU GPL을 채택하고 있는 편집기로서 해당 웹사이트1 에서 받아 (해당 사이트의 download 메뉴) 설치한다.
자, 그러면 이제부터 쉘 환경에 대해 익혀 보자. 그런데, 지금쯤 여러분 중에는 ‘왜 굳이 자판을 두드려 가면서 귀찮은 (?) 작업을 해야 되지?’라고 생각하는 독자들도 있겠다. 그에 대해서는 쉘이나 파이썬과 같은 스크립트 환경을 어느 정도 익히고 나면 알게 될 테지만, (사람마다 의견이 다를 수는 있으나) 현재 언급할 수 있는 것은 ‘자유’라고 할 수 있다. 윈도우 앱 환경에서 원하는 작업을 하려면 일단 앱을 만들어야 (개발해야) 하고, 그 앱의 구조와 환경에서 벗어나기 어렵다. 그러나, 쉘 환경에서는 생각나는 작업을 바로 적용해 볼 수 있는 장점이 있다. 예를 들어, 1990년에 처음 만들어져 현재도 많이 사용되고 있는 친숙한 서열 분석 프로그램인 BLAST와 같은 도구를 이용하여 mRNA 서열 1,000 개에 대한 결과를 만들고 그 결과를 분석해야 한다면, 과연 이 작업을 위해 윈도우 앱을 개발하여 진행하는 것이 좋을 지, 명령어와 그에 따른 옵션을 적용한 순차적인 스크립트 (script)를 작성하여 실행하는 것이 좋을 지는 생각해 보면 금방 알 수 있는 일이다. 실제 작업 현장에서는 명령어의 옵션과 인자 (혹은 매개 변수)를 수시로 바꾸어 가면서 그 결과를 들여다 봐야 하는 일이 다반사이다. 결국 이런 자유로운 분석을 위해서도 융통성이 필요하다. (물론, 사용자의 편의성을 위하여 최종 개발 산물을 윈도우 형태로 만드는 것도 중요한 일이긴 하다.)
지금부터 쉘과 몇 가지 명령어에 관해 알아 보자. 지난 번에 pwd라는 명령어로 현재 디렉터리를 알아 보았다. 그럼, 현재 디렉터리에는 어떤 내용이 들어 있을까? ls는 현재 디렉터리의 내용을 보여 주는 명령어이다.
(여기서 독자들의 양해를 구해야겠다. 연재 시작 시 원래 의도했던 편집기 대신 MS-Word를 사용하게 되면서 명령어 등 코드 관련 글자체가 변경되었음을 알려 드린다.)
첫 줄의 ls (list)명령어는 아무 내용도 보여 주지 못한다. 이것은 디렉터리 내에 아무 것도 없어서가 아니라 기본적으로 보여 주지 않는 파일들이 있기 때문이다. 숨겨져 있는 file을 보기 위해서 -a (--all) 옵션을 ls 뒤에 한 간 떼고 넣어 주면 보는 것처럼 이름이 점으로 시작되는 파일들을 볼 수 있다. 그 다음의 ls -a 명령어 뒤에 l (long) 옵션은 파일들을 긴 형태 (long format)로 보여 주라는 의미이다. 이처럼 쉘은 하나의 명령어에 다양한 옵션을 사용할 수 있는 방식으로 구현되어 있어서 사용자가 원하는 정보를 쉽게 확인할 수 있다. 그런데 아무리 다양한 옵션이 있어도 이를 모두 기억해야만 사용할 수 있다면 이것처럼 괴로운 일이 또 없다. 그래서 쉽게 사용할 수 있는 옵션 중에 --help가 있다. 이 옵션을 각 명령어 뒤에 함께 입력하면 해당 명령어에 관한 간단한 정보를 출력해 준다. 한 번은 확인해 보기 바란다. 이와 함께 명령어에 대한 자세한 내용을 확인할 수 있는 쉘 명령어로 man (manual pages)이 있다.
쉘에는 이런 명령어들이 2,000 개 가까이 있는데, 이들과 해당 옵션을 모두 기억해서 사용하는 것은 불가능에 가깝다. 따라서 사용자는 여러 가지 방법을 통해 원하는 기능을 가진 명령어를 찾아서 사용하게 된다. 이에 대해서는 추후 리눅스를 사용하게 되면 알아 보기로 하자. (Cygwin에서는 환경의 영향으로 인해 리눅스에서 사용할 수 있는 몇 가지 기능의 제약이 있는데, apropos도 그 가운데 하나이다. 대소문자 구분도 경우에 따라 적용이 되지 않기도 하고 되기도 한다.)
이번에는 디렉터리를 만들고, 그 디렉터리로 이동하고, 파일을 만들거나 없애는 등의 작업을 해 보자. (mkdir, rmdir, cd, touch, rm 등)
touch는 크기가 0인 파일을 만드는 명령어이다. a.txt 파일의 5번째 항목에 ‘0’이라고 되어 있는 것이 이 파일의 크기를 표시한 것이다.
쉘의 rm 명령어는 한 번 실행하고 나면 일반 사용자가 지운 대상을 복구하는 것은 거의 불가능하다. 그리고, 옵션을 사용하면 매우 강력한 삭제 기능을 발휘한다. 따라서 이 명령어는 매우 신중하게 사용해야 한다. 위에서 사용한 명령어의 용도가 궁금하다면 앞서 말한 man 명령을 사용하여 확인해 보자.
그렇다면 이런 여러 명령어들은 어디에 있는 것일까? 이를 알아 보는 명령어로 which가 있다. 쉘의 명령어는 종류와 용도가 다양해서 그 성격에 따라서 위치하는 디렉터리와 실행할 수 있는 사용자가 정해진다. 이에 대해서도 추후에 알아 보기로 하자. (너무 많은 내용이 추후로.. 이러다 후추 맞는 건 아닌지..)
앞에서 man 명령어를 이용하여 다른 명령어의 옵션 등의 주요 사항을 화면에서만 보았는데, 이 내용을 pdf 파일로 전환하여 원할 때 언제든지 볼 수 있게 해 보자.
만들어진 rm_man.pdf를 어도비 리더 (Adobe reader) 등의 프로그램으로 확인해 본다. (rm과 ps2pdf 사이의 ‘|’ 기호 (vertical bar)는 자판의 엔터키 위 역공백 (back space) 키 왼쪽에 있다. SHIFT를 누른 상태에서 입력한다. 이 기호는 파이프 메타문자 (pipe metacharacter)라고 하며, 표시 왼쪽 명령문의 출력을 표시 오른쪽의 명령어의 입력으로 연결해 주는 역할을 한다. ‘->’ 기호는 ‘-‘ (dash)와 자판의 마침표 키의 ‘>’ 문자를 표시한다.) pdf로 변환된 man page를 보면 rm 명령어의 -rf 옵션의 의미가 무엇인지 확실하게 확인할 수 있다. 이처럼 쉘에는 다양한 명령어의 사용법이 있어서 사용자의 의도대로 결과를 만들 수 있는 장점이 있다. (ps2pdf 명령어를 알고 싶다면 which와 man을 사용해 보자. 필요하면 인터넷 검색을 적극적으로 활용하는 것도 좋다. 이런 방식에 점차 익숙해 지면 자신도 모르는 사이 시스템에 대해서 많은 것을 알게 된다. 중요한 것은 의지와 관심이다.)
다음 번에는 점으로 시작하는 파일의 의미와 쉘의 사용자 기본 환경을 알아 보고, 설치한 노트패드++을 사용하여 사용자 환경을 조정하여 좀 더 쾌적한 환경에서 작업을 진행해 보자.
본 기사는 네티즌에 의해 작성되었거나 기관에서 작성된 보도자료로, BRIC의 입장이 아님을 밝힙니다. 또한 내용 중 개인에게 중요하다고 생각되는 부분은 사실확인을 꼭 하시기 바랍니다.
[기사 오류 신고하기]
(http://bioprofiler.tistory.com) IBM-XT시절부터 개인용 컴퓨터를 사용하였으나, 강산이 변한 지금도 어제 코딩한 내용을 오늘 기억하지 못하는 자유인. 박사학위는 분자유전학 분야로 받았으며, 물리학과 화학에 관심만 있음. 현재 대학 교수로 재직 중.
다른 연재기사 보기
전체 보기