macOS 그래픽 인터페이스는 사용자에게 편리함을 주지만, 명령줄을 사용하는 것에 비해 사용자가 할 수 있는 부분은 다소 제한되어 있습니다. 터미널을 사용하는 모든 기술을 배울 필요는 없을지라도 맥 사용자라면 기본적인 개념 정도는 알아두면 좋습니다.
터미널 기본 개념
1980년대 초 컴퓨터가 보급되기 시작했을 때 지금 보면 꽤나 원시적인 사용자 인터페이스를 가지고 있었습니다. 입력 장치는 키보드만 제공되었는데요. 그래서 뭔가 하기 위해 명령을 입력한 뒤 결과가 출력되면 또 다음 명령을 입력하는 걸 반복해야 했습니다. 마우스는 아직 낯선 물건이라 화면을 클릭한다는 개념은 없었습니다.
그리고 맥이 출시되었을 때 많은 사람들은 감격했습니다. 명령 목록을 암기할 필요도 없고 결과가 어떻게 출력될지 추측할 필요도 없이 화면을 보고 클릭하기만 하면 됐거든요. 같은 결과에 접근하기 위해 훨씬 더 적은 노력만 필요하게 된거죠.
맥을 오래 사용한 분들이라면 맥의 그래픽 인터페이스가 내가 원하는 모든 기능을 제공하지 않는다는 걸 알고 있을 겁니다. 필요한 기능이 있을 때 인터넷에서 관련 앱을 내려받고 설치하고 실행하죠. 그런데 이중 적지 않은 기능은 지식만 있다면 10초 안에 해결 가능한 부분도 있습니다.
아이러니하게도 맥의 화려한 그래픽 인터페이스는 가장 간편한 기능을 제공한다는 걸 의미하지 않습니다. 맥이 예쁘고 쉽다고 말하는 사람도 있지만, 단순하고, 우아하다는 말은 다소 유연성이 부족하다...라는 말과 비슷하거든요.
그래도 macOS는 그래픽적인 영역에만 국한되지 않으며 더 간단한 방법으로, 혹은 불가능한 많은 일을 할 수 있게 해주는 또 다른 인터페이스를 가지고 있습니다. 과거 도스 화면같이 키보드로만 입력하고 텍스트로 결과가 출력되는 명령줄 인터페이스 말이죠.
터미널 자체는 텍스트 몇 자 외에 아무것도 없이 간단해 보이는데요. 그 이면에는 방대한 권한을 가지고 역할을 할 수 있는 또 다른 세상이 있습니다.
터미널은 그래픽 인터페이스에서 보이는 시각적인 단서가 아무것도 없습니다. 그래서 명령줄 인터페이스를 써보지 않은 일반 사용자는 지레 겁부터 먹기 마련인데요. 사실 터미널은 지금 사용하는 방식과 조금 다를 뿐 기본 개념 자체는 생각만큼 어렵지 않습니다.
하지만 전혀 다른 인터페이스와 명령에 대해 모든 것을 설명하려면 책 한 권 분량만큼 필요합니다. 게다가 정말 편리하고 멋진 macOS UI를 두고 터미널 명령줄을 외우느라 삽질할 필요도 없습니다. 여기서는 맥 사용자로서 그래픽 인터페이스 이면을 이해하는 정도로 기본 적인 내용만 살펴보겠습니다.
Unix와 macOS
터미널을 알고자 한다면 먼저 몇 가지 배경 지식이 필요한데요. 먼저 유닉스에 대해 살펴보겠습니다. 유닉스는 1969년에 개발된 운영체제로 컴퓨터 역사상 가장 중요한 운영체제입니다. 첫 개발 이후 시간이 지나면서 여러 기업과 교육 기관에서 파생되기 시작했고 그 대표적인 게 애플의 macOS입니다.
macOS는 유닉스 하위에 존재하기는 하지만 다른 버전엔 없는 추가적인 요소를 다수 가지고 있는데요. 그래픽 인터페이스, Cocoa API, 사파리나 Mail과 같은 기본 앱인데 이들을 전부 벗겨낸다면 맥의 유닉스 코어를 발견할 수 있을 겁니다.
이 코어를 다윈(Darwin)이라 부릅니다. 일반 사용자는 생소한 용어지만 명령줄 환경에서는 가끔 접할 수 있습니다. 다윈은 그 자체로 완전한 운영체제이지만, 애플은 다윈만 운영하는 기기를 출시하지 않습니다. 그러나 관련 분야 종사자라면 누구나 다운로드, 컴파일하고 실행할 수 있도록 오픈소스로 제공됩니다.
명령줄(Command Line)이란?
텍스트나 텍스트 덩어리로 컴퓨터에 입력하고 return을 눌러 결과를 표시하는 걸 명령줄 인터페이스라고 합니다. 모든 상황에서 입출력 내용이 화면에 남아 있으며 창 마지막 텍스트와 커서는 입력한 명령이 표시되는 명령줄입니다.
다윈은 macOS의 일부지만, 우리가 터미널을 열어 명령줄을 사용하고 있을 때 실제 다윈으로 작업한다고 하는 건 정확한 표현이 아닙니다. 명령줄은 macOS와 상호작용할 수 있는 다양한 방법을 제공하며 다윈은 그중 일부에 불과할 뿐입니다.
셸(Shell)이란?
셸은 컴퓨터와 상호작용할 수 있는 프로그램인데 대표적으로 macOS에서 파인더는 그래픽 셸의 한 종류입니다. 그러나 여기서는 목적상 '셸'이라는 용어를 명령줄 인터페이스 프로그램을 지칭하는 용어로만 사용하겠습니다.
macOS에는 몇 가지 셸이 존재하는데요. 우리가 생각하는 것과 달리 명령 줄 인터페이스가 이미 몇 가지 포함되어 있다는 말입니다. 이 셸은 많은 속성을 공유하며 비슷한 방식으로 동작하고 결과도 유사합니다. 몇 가지 셸 종류를 살펴보면 다음과 같습니다.
ⓐ sh: 오리지널 유닉스 셸은 개발자(Stephen Bourne) 이름을 따서 Bourne 셸이라고도 부릅니다.
ⓑ csh: C 프로그래밍 언어와 유사해서 C 셸이라 부릅니다.
ⓒ tcsh: 테넥스 C 셸(Tenex C shell)이라고 부르며 csh에 몇 가지 기능이 추가되어 있습니다.
ⓓ ksh: 콘 셸(Korn shell)이라고 부르며 sh에 일부 sch 기능이 포함되어 있습니다.
ⓔ bash: 배시(Bourne-again shell)라고도 부르며 sh를 기반으로 ksh와 csh의 장점만 포함합니다.
ⓕ zsh: tch, ksh, bash의 기능을 통합한 Z 셸이며 현재 macOS 기본 셸입니다.
현재 macOS는 zsh가 기본 셸인데요. 애플에서 밝히진 않았지만 이전에 사용하던 bash 대신 zsh를 택한 것은 bash 라이선스와 연관된 것으로 추측하고 있습니다. 여기서 셸 변경하는 방법은 다루지 않겠지만 명령줄을 사용하는 데 있어 macOS에 기본 설치된 셸을 고수할 필요는 없습니다.
터미널이란?
명령줄 인터페이스를 사용하기 위해서는 터미널 에뮬레이터를 사용하면 되는데요. macOS에는 이미 터미널이라는 이름의 터미널 에뮬레이터가 있습니다. 터미널 에뮬레이터는 말 그대로 터미널을 시뮬레이션합니다.
쉽게 말하면 macOS에 포함된 터미널 에뮬레이터인 터미널을 사용하여 셸을 실행합니다. 그리고 명령줄 인터페이스에서 다양한 유닉스, macOS 기능을 사용할 수 있습니다.
명령, 인수, 플래그
터미널을 사용하면 뭔가 입력해서 실행하고 결과를 출력할 텐데요. 여기에 입력하는 건 크게 세 가지가 있습니다. 바로 명령, 인수, 플래그인데요. 정확한 표현은 아닐지라도 지금 당장은 명령=동사, 인수=명사, 플래그=부사라고 이해해도 됩니다.
예를 들어 명령을 '먹으세요'라고 한다고 가정합니다. 어떤 일을 시키는 거죠. 실제 명령은 pwd(print working directory)처럼 약어이거나 긴 용어를 축약한 형태입니다. 명령은 그 자체로 단독으로 쓰일 수 있으며 입력하는 것으로 작업을 완료합니다.
그런데 '먹으세요'라고만 한다면 뭘 먹어야 할까요? 음식이 있다면 아무거나 먹습니다. 좀 특별한 음식을 먹고 싶다면 이렇게 명령할 수 있습니다. '햄버거를 먹으세요.' 여기서 햄버거는 직접적인 대상, 즉 명령을 적용할 항목이 됩니다. 바로 인수입니다.
예를 들어 nano는 nano 편집기를 실행하라는 명령입니다. 셸 환경에서 쓸 수 있는 간단한 텍스트 편집기인데요. nano myfile01이라 입력하면 nano 편집기를 이용해서 myfile01을 엽니다. 여기서 myfile01은 인수가 되죠. 일부 명령은 인수를 사용할 수 없기도 하지만, 여러 인수를 사용해야 하는 명령도 있습니다.
동사와 명사 이외에도 부사가 있습니다. '햄버거를 맛있게 먹으세요.', '라디오를 조용히 트세요'라고 하면 여기서 '맛있게', '조용히'가 부사가 됩니다. 부사, 즉 플래그는 명령이 수행되어야 하는 방법이나 어떻게 실행해야 하는지를 알려줍니다.
서론이 다소 길었는데요. 다음 내용부터는 터미널에 표시되는 텍스트, 기호가 뭘 의미하는지 어떻게 다뤄야 하는지 본격적으로 살펴보도록 하겠습니다.
'macOS 터미널 테크닉' 카테고리의 다른 글
macOS 터미널_명령줄, 그래픽 인터페이스로 가져오기_06 (0) | 2022.07.06 |
---|---|
macOS 터미널_파일, 디렉터리 작업_05 (0) | 2022.07.04 |
macOS 터미널_둘러보기_04 (1) | 2022.06.30 |
macOS 터미널_둘러보기_03 (0) | 2022.06.28 |
macOS 터미널_터미널로 맥 활용성을 높이세요_01 (0) | 2022.06.24 |