메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

왜 윈도우 대신 명령라인을 사용해야 하는가?

한빛미디어

|

2001-11-20

|

by HANBIT

10,792

By 『Learning the Unix Operating System, 5th Edition』의 공동 저자 제리 픽(Jerry Peek) 만약 지금 이 기사를 읽고있는 여러분이 평범한 유닉스 사용자 중 한 명이라면 여러분도 아마 유닉스에서 윈도우와 마우스를 사용할 수 있는 GUI를 사용할 것이다. 매킨토시 사용자라도 요즈음은 맥 OS X 덕택에 환상적인 그래픽 사용자 인터페이스 환경에서 유닉스를 사용할 수 있게 되었다. 오라일리는 최첨단 기술 서적을 계속해서 출판해내고 있으며 이러한 기술 서적 중 하나인 『Learning the Unix Operating System』의 최신 개정판에서는 유닉스 명령라인 사용을 강조하고 있다. 이와 같은 사실에 사용자들은 "명령라인은 MS-DOS 사용자나 구닥다리 시스템 관리자들이 사용하는 것 아닙니까? 윈도우가 훨씬 편한데요!"라고 반문할지도 모르겠다. 위의 불평처럼 윈도우가 여러 경우에 있어서 쉽고 유용하기는 하다. 그리고 우리는 가상 데스크탑과 같은 강력한 특징을 다루기 위해 윈도우에 대한 챕터(Chapter 2, Using Window Systems는 온라인 상에서 볼 수 있음)를 늘려온 사실 또한 인정하는 바이다. 그렇지만… 몇 년 전에 나는 사용자 인터페이스 설계 수업을 들었다. 그때 이후로 교수님이 하신 몇몇 조언들은 아직도 내 머리 속에 남아있다. 그때 교수님은 "사용자에게 호의적인 시스템의 특징 중 하나는 사용자가 원하는 대로 한다는 것이다. 한마디로 말해서 사용자에게 가장 호의적인 시스템이라고 해서 반드시 가장 간단한 시스템을 말하는 것은 아니다."라고 말씀하셨다. 만약 BMW(꼭 BMW가 아니라도 여러분이 가장 좋다고 생각되는 차를 상상해보라)를 본 적이 없다면 목적지까지 가장 편하고 기분좋게 가는 방법은 말을 타고 가는 것이라고 생각할 수도 있다. 이유인 즉, 말은 다루기 쉽고 유지하기 간단하며 목적지로 천천히 다가가면서 아름다운 주변 경치를 즐길 수 있기 때문이다. 말과 차에 대해 이렇게 알고 있는 사람에게 과연 복잡한 자동차가 무슨 필요가 있겠는가? 명령라인의 위력
$ ls -l | grep "Aug"
만약 유닉스 명령라인을 사용해 본 적이 없다면 여러분의 눈에는 그 명령라인이 의미하는 바를 전혀 알 수 없을 것이다. 위의 명령라인의 역할은 무엇인가? 그것은 8월에 바뀐 모든 파일 리스트를 보여달라는 명령라인이다. 여러분은 일년짜리 프로젝트를 위해서 마지막 파일을 작성했을 수도 있다. 이때 디렉토리에 있는 수많은 파일들중에서 몇 가지를 찾아야 하지만 이름이 생각나지 않을 수 있다. 명령라인은 pipe(수도관과 비슷하다고 생각하면 된다. pipe는 프로그램간 데이터를 이동시킨다)로 연결된 두 개의 프로그램을 작동시킬 것이다. 첫 번째 프로그램인 ls는 현재 디렉토리에 있는 파일명을 나열해 주며 -l ("long") 옵션은 세부사항을 추가한다. 두 번째 프로그램 grep은 Aug(Is를 8월에 사용했다는 약자)를 포함하는 라인만 보여주도록 첫 번째 프로그램의 결과를 필터링해준다. 위와 같은 명령라인을 사용하여 나온 결과가 여전히 너무 길어서 사용하기 불편하거나 당신이 8월 중순에 작업했다는 것을 기억해 낼 수 있다면 검색 범위를 좀더 좁힐 수 있다. 8월 10일과 19일 사이의 데이터로 검색 패턴을 바꾸어 보자.
$ ls -l | grep "Aug 1[0-9]"
그림 1은 맥 OS X 터미널 윈도우에서 명령라인의 결과이다.

그림 1. 맥 OS X 터미널 윈도우에서 명령라인 검색 결과

그렇지 않고 그 리스트를 누군가에게 이메일로 보내고 싶다면 다른 pipe를 추가해서 라인의 마지막에 프로그램을 하나 더 추가할 수 있다.
$ ls -l | grep "Aug" | mail joe@foo.xyz
맥에서는 명령라인인 mail을 사용하기 전에 초기 설정이 되어있어야 한다. Sendmail을 작동시키고 루트 디렉토리에서 그룹 작성 퍼미션을 제거해야 한다. 왜 윈도우에서는 안되는가? 이러한 명령라인 예제들은 GUI 시스템을 사용해 유용한 작업을 시도해 볼 때까지 무모하게 보여질 수도 있다. 그와 같은 것을 어떻게 할 수 있나? 윈도우에서는 파일 관리자를 열 수 있다(맥에서는 파인더). 그런 다음 보고 싶은 디렉토리를 클릭한 후 메뉴 아이템을 고르거나 제목을 클릭하거나 바뀐 날짜별로 파일을 정렬시킬 수 있다(파인더에서 "바뀐 날짜" 제목을 클릭). 파일 관리자는 리스트를 명령라인에서 정렬한 것처럼 알파벳 순으로 이차 정렬을 할 수 없다. 안타까운 일이다. 명령라인에서 겨우 10에서 20 글자만 더 타이핑하면 다중 컬럼 정렬을 할 수 있는데 말이다. 그러면 어떻게 이메일로 파일 관리자 리스트의 일부분을 공동 저자에게 보낼 수 있을까? 마우스로 배열된 일부분을 복사한 후 이메일 윈도우를 열고 붙여넣기를 한다. 예를 들어 맥 파인더에서는 그림 2와 같이 선택하고자 하는 파일명을 시프트 클릭하거나 마퀴로 드래그 할 수 있다. 그런 후에 그 파일명을 복사하고 이메일에 붙여넣기를 한다. 그렇지만 맥에서는 오로지 파일명만 복사할 수 있고 파일의 실제 크기나 바뀐 날짜 등은 복사가 불가능 할 수도 있다. 이때 원하는 파일을 복사하는 유일한 방법은 스크린 덤프를 만들고 편집해서 원하는 파일 형태로 볼 수 있도록 JPEG로 변환한 후 메시지에 첨부시키는 것이다. 그렇지 않으면 이러한 간단한 작동을 수행할 쉬운 방법이란 없을 수도 있다.

그림 2. 맥 파인더는 특정 파일명을 선택할 때 시프트 클릭할 수 있다.

말을 타는 것처럼 그래픽 인터페이스를 사용하는 것은 아주 쉬운 일이다. 그래픽 인터페이스는 작동법을 기본적인 몇 가지로 제한하기 때문에 빨리 배울 수 있다. 그렇지만 이러한 기본적 작동법이 여러분이 필요로 하는 것이 아니라면 그때부터는 문제가 발생한다. 따라서 윈도우에서 파일 관리자를 작성한 프로그래머가 여러분이 8월에 바꾼 파일의 알파벳순 리스트를 원하지 않을 것이라고 생각하거나 메뉴를 간단히 만드는 것에만 몰두해서 프로그램을 작성했다면 그때는 방법이 없다. 안타깝게도 여러분은 정말 운이 없는 것이다.
Learning the Unix Operating System, 5th Edition
이러한 이유로 유닉스 명령라인과 유닉스 윈도우는 배워둘 필요가 있다. 유닉스가 윈도우를 구동할 수 있기 오래 전부터 강력한 명령라인 인터페이스는 개발되어 있었으며 지금도 계속해서 명령라인은 개발 되고 있다. 명령라인은 수백개의 유닉스 빌딩 블록 유틸리티 프로그램을 나열해준다. 이러한 각각의 프로그램은 파일을 리스트로 보여주거나 특정 구문을 검색하거나 이메일 메시지를 보내는 것과 같은 사소한 일들을 한다. 명령라인은 이러한 프로그램을 함께 묶어주는 무한한 방법을 제공한다. 일단 명령라인에 대한 기본 작동법 및 기본 유틸리티 프로그램을 배웠다면 여러분은 윈도우 시스템 사용자들이 꿈도 꿀 수 없는 위력을 가지게 된 것이다. 더욱이 셸 스크립트 프로그램의 기본을 익혔다면 여러분은 단지 한 단어만 타이핑 해도 복잡한 명령라인을 작동시킬 수 있다(셸 스크립트는 기본적으로 파일로 붙여진 명령라인의 시리즈이다). 그래도 가끔씩은 윈도우가 필요하다 물론 명령라인이 윈도우가 할 수 있는 모든 것을 할 수 있는 것은 아니다. 예를 들어 명령라인에서 사진을 편집하는 것은 아주 힘든 작업이다. 웹 페이지 브라우징도 지정된 링크를 클릭할 수 있으면 훨씬 이용하기 쉽다. 유닉스에서는 윈도우와 명령라인을 모두 사용할 수 있다. 터미널 윈도우 내에서는 명령라인을 사용할 수 있기 때문이다. 사실 유닉스는 명령라인에서 윈도우를 통제하도록 한다(그러나 윈도우에서 명령라인을 통제하는 것은 불가능함). 그렇다면 이제 명령라인을 배우면 무엇이 좋은지 알 것 같지 않은가? 그렇다면 앞으로 무엇을 해야 할 것인지 대충 머리 속에 떠오를 것이다. 그것은 아마도 내가 생각하는 것과 같은 것이며 내가 『Learning the Unix Operating System, 5th Edition』에서 명령라인을 다룬 이유이기도 하다. 나는 계속해서 『Learning the Unix Operating System』개정 6판, 7판, 8판을 만들어 나갈 것이며 그때마다 계속해서 명령라인에 대해 다룰 것이다. 아마 누군가가 기술적으로 뛰어나지 않은 사용자도 새로운 프로그램을 작성할 필요 없이 그들이 하고자 하는 것을 할 수 있게 해주는 윈도우 프로그램을 설계해 낼 때까지는 명령라인을 포기할 수 없을 듯 하다. 성능 좋은 차를 타려면 그에 상응하는 노력이 필요하나는 것은 당연한 이치이다. 그렇지만 일단 운전 하는 방법을 배우고 약간의 연습만 해준다면 여러분은 말을 탈 때보다 훨씬 더 많은 것을 할 수 있다. 그리고 이러한 원칙은 유닉스 명령라인에서도 똑같이 적용됨을 명심해야 한다. 마지막으로 이 기사를 작성하는데 도움을 준 오라일리의 크리스 스톤에게 감사의 뜻을 전한다.
TAG :
댓글 입력
자료실

최근 본 상품0