CLI 환경과 유닉스

타키탸키·2021년 3월 31일
1

영화 매트릭스를 생각해 보면 검은 화면에 녹색 글자들이 비처럼 내리는 모습이 떠오릅니다. 이 녹색 글자들은 명령어 혹은 커맨드라고 불리는데요. 마우스가 등장하기 전 사람들은 커맨드를 통해 컴퓨터를 사용했습니다.

마우스가 등장한 현대에도 소프트웨어 개발 환경은 커맨드만으로 컴퓨터를 사용하는 경우가 많아 개발자라면 커맨드를 잘 사용할 수 있어야 합니다.

Linux, macOS, Ubuntu, 안드로이드 등은 유닉스라는 것에서 시작되었는데요. 이제부터 우리는 이 유닉스를 통해 커맨드를 배워보도록 하겠습니다.

💻 Command

우리가 컴퓨터나 모바일을 사용할 때, 흔히 볼 수 있는 Windows, macOS, 안드로이드, iOS는 운영체제입니다. 이는 기기에서 프로그램이 실행될 수 있도록 도와주는 역할을 합니다. 위 운영체제들은 주로 일반 사용자가 사용합니다.

개발자를 위한 운영체제들도 따로 있는데요. Linux, ubuntu 등이 바로 그 예이죠. 사실 개발을 본격적으로 시작해보면 이와 같은 운영체제를 사용하는 경우가 많습니다.

일반 사용자를 위한 운영체제와 다르게 이 운영체제들은 검은색 화면에 하얀 색 글자를 입력하는 환경을 가지고 있습니다. 이때, 이 하얀 색 글자들은 명령어, 영어로는 command라고 합니다.

진정한 개발자가 되려면 앞으로 이 검은 화면에 익숙해져야 합니다. 그렇지 않으면 윈도우나 맥에서는 아주 간단히 사용했던 파일 삭제나 이름 변경 같은 기능조차 제대로 할 수 없게 됩니다.

물론 이 운영체제들의 내부까지 다 알 필요는 없습니다. 그러나 적어도 커맨드는 알아야 이 운영체제를 동작시킬 수 있습니다. 그런데 이렇게 다양한 운영체제들의 커맨드를 다 공부해야 하는 걸까요?

사실 이 운영체제들은 모두 하나의 뿌리에서 시작되었습니다. 바로 UNIX라는 운영체제로부터 말이죠. 그렇기 때문에 UNIX의 커맨드만 알아도 나머지 운영체제들을 다 사용할 수 있습니다.

커맨드는 총 1000개 가량이라고 하지만 이들 중 단 스무 개에서 서른 개만 알아도 업무에 전혀 지장이 없습니다. 1000개에 비하면 훨씬 해볼만 하죠?

💻 유닉스와 유사 유닉스

유닉스에 대한 역사를 알고 싶은 분은 이 자료를 읽어 보면 좋을 것 같습니다.

자료의 내용을 요약하자면 이렇습니다.

1970년대에 사람이 이해하기 쉬운 고급 프로그래밍 언어인 C로 작성된 UNIX가 다른 컴퓨터에 적용하기 쉽다는 장점으로 인해 큰 인기를 얻게 됩니다. 이로 인해 UNIX를 수정해서 다른 컴퓨터에 적용하는 사례들이 많아져 'POSIX'라는 UNIX 표준이 만들어지기도 했습니다.

그런데 UNIX의 연구소가 'AT&T'라는 기업에 소속되어 있는 만큼 UNIX를 사용하기 위해서는 라이센스 비용을 지불해야 했습니다. 당시, 공유의 문화를 중요시하던 개발자들은 'AT&T'의 정책에 반대하였고 그 여파로 '자유 소프트웨어 재단'이라는 곳에서 UNIX의 코드를 단 하나도 사용하지 않고 UNIX와 유사한 운영체제를 직접 만들기로 했습니다. 이렇게 시작된 운영체제의 이름은 바로 'GNU'입니다.

그런데 운영체제의 핵심 부분인 커널을 개발하기가 쉽지 않았습니다. 그때 마침 Linus Torvalds라는 대학생이 UNIX의 교육용 버전인 'MINIX'로부터 아이디어를 얻어 새로운 커널을 만들었는데요. GNU가 이 커널을 채택하면서 하나의 새로운 운영체제 'GNU/Linux'가 개발되었습니다. 지금은 'Linux'라고 부르는 사람들이 더 많지만요.

인기가 많았던 UNIX를 무료로 자유롭게 쓸 수 있다는 말에 Linux의 파급 효과는 날이 갈수록 커졌습니다. 그리하여 대부분의 이름 있는 운영체제들은 이 Linux를 기반하여 만들어졌다고 해도 과언이 아니게 되었습니다.

앞서 POSIX라는 표준이 있다고 했었죠? 이 표준에 부합해서 공식적으로 인증을 받으면 'Unix-certified' 즉, 공식 유닉스가 되고 이 표준을 인증 받지 않았지만 사용하기에 기능적으로 거의 차이가 없다면 'Unix-like' 즉, 유사 유닉스가 됩니다.

모든 운영체제가 하나의 뿌리로부터 나왔기 때문에 운영체제 내부와 직결된 부분을 개발하지 않는다면 그 차이를 느끼기가 어렵습니다. 중요한 것은 이로 인해 여러 운영체제들에서 공통적으로 유닉스 커맨드를 사용할 수 있다는 점입니다.

💻 GUI와 CLI

컴퓨터를 사용하는 환경은 크게 두 가지로 나뉘는데요. 마우스를 통해 사용하는 그래픽 환경GUI(Graphical User Interface)와 유닉스, 리눅스와 같이 키보드를 통해 커맨드를 입력해서 사용하는 CLI(Command Line Interface)입니다.

컴퓨터가 처음 사용되던 시절에는 마우스 사용과 그래픽 구현이 어려웠습니다. 즉, CLI 환경만 존재했었죠. 그러던 중 기술이 발전하여 일반 사용자들이 쓰기 편하도록 GUI 환경이 만들어졌고 이를 기점으로 컴퓨터가 대중화되었습니다.

한 눈에 보기에도 그래픽 환경을 사용하는 GUI가 더 편한 것 같은데 왜 개발에서는 CLI를 주로 사용하는 걸까요? CLI가 계속 사용되고 있는 이유CLI만의 장점이 있기 때문입니다. 어떤 것들이 있을까요?

우선, 성능이 뛰어납니다. GUI 환경을 구현하기 위해서는 컴퓨터가 해야할 일들이 늘어납니다. 그러나 CLI 환경에는 오로지 텍스트만 존재하기 때문에 컴퓨터가 할 일이 줄어들게 되죠. 그리고 그만큼 더 빨리 동작합니다.

다음으로 명확성이 있습니다. GUI 환경에서는 파일을 선택할 때 여러 작업을 거쳐야 하는데요. 그러는 도중 실수하는 경우도 생깁니다. 하지만 CUI 환경에서는 단순히 정해진 명령어만 입력하기 때문에 실수할 확률이 줄어듭니다. 또, 여러 단계에 걸친 실행을 단 한 줄의 코드로 줄일 수도 있는데요. 개발자들은 워낙 복잡한 프로그램들을 설치하고 설정해야 하기 때문에 이런 부분이 꽤 중요합니다.

그래서 CLI가 처음 배울 때는 어려워도 익숙해지면 오히려 단순하기 때문에 정확하게 컴퓨터를 사용할 수 있게 됩니다.

💻 Windows 사용자를 위한 설치 메뉴얼

  • 작성자가 Windows를 사용하고 있는만큼 Windows 사용자를 위한 매뉴얼만을 작성한다는 것에 양해 부탁 드립니다.

유닉스 커맨드를 배우려면 컴퓨터에 리눅스 배포판 중 하나를 운영체제로 설치한 상태이거나, macOS가 깔린 맥(MAC)이 있어야 합니다. Windows 사용자는 두 상황 모두에 해당되지 않습니다.

따라서, Windows 사용자들은 가상 머신(Virtual Machine)을 사용해야 하는데요. 또 다른 컴퓨터를 컴퓨터에 설치하는 거죠. 그리고 이 가상 머신 안에 리눅스 배포판을 설치하면 됩니다. 많은 배포판 중 우리가 사용해볼 것은 우분투(Ubuntu)입니다.

❗ 가상 머신 및 우분투 설치하기

그럼 이제 가상 머신부터 만들어 보겠습니다. 가상 머신을 위한 프로그램을 설치해야 하는데요. VirtualBox라는 프로그램을 사용해봅시다.

  1. 먼저, VirtualBox 설치 파일을 다운로드합니다. 이 사이트에서 다운로드 받으면 됩니다.

  • 이들 중, 맨 위의 Windows hosts를 선택하면 됩니다.
  1. 설치 파일을 열어 별다른 설정 없이 설치를 완료합니다.
  2. Finish를 누르면 VirtualBox의 화면이 나타납니다.

다음으로, 우분투를 설치해보겠습니다. 이 사이트로 들어가서 우분투를 다운로드하면 됩니다. ubuntu-(최신버전)-amd64.iso를 다운로드 하세요.

❗ 가상 머신 생성하기

이제 가상 머신을 생성해보겠습니다.

  1. VirtualBox에서 새로 만들기 버튼을 클릭하세요.

  2. 그럼 기본 정보를 설정하는 창이 뜹니다. 가상 머신 이름은 원하는대로 작성하시고 종류는 Linux, 버전은 Ubuntu를 선택하면 됩니다. 설정을 완료했으면 다음으로 넘어가세요.

  3. 메모리 크기는 4GB(=4096MB)로 설정해주세요.

  4. 이후에는 파일 크기 설정 전까지 다음을 눌러주세요.

  5. 파일 크기 설정에서 넉넉하게 20GB를 설정해줍니다.

가상 머신 하나가 생성되었습니다.

❗ 우분투 설치하기

생성된 가상 머신에 우분투를 설치하겠습니다.

  1. 가상 머신의 정보를 보여주는 창에서 스크롤을 조금 내려서 저장소 섹션의 [광학 드라이브] 비어 있음이라는 부분을 클릭합니다.
  2. 디스크 파일 선택을 클릭합니다.
  3. 앞서 설치한 우분투.iso를 선택하고 열기를 누릅니다.
  4. VirtualBox 화면에서 상단의 시작을 누릅니다.
  5. 아래와 같은 창이 뜰 때까지 조금만 기다려주세요.
  6. Install Ubuntu를 눌러 설치를 진행합니다.
  7. Install Now가 뜰 때까지 계속 다음 버튼을 눌러주세요.
  8. 하드디스크에 우분투를 설치한다는 알림 창이 뜹니다. continue를 누릅니다.
  9. 국가 설정까지 마쳤으면 사용자 계정을 만드는 창이 뜹니다. 원하는대로 작성해주세요.
  10. 본격적으로 설치가 진행됩니다. 조금 오래 걸려요!
  11. 설치를 마치면 가상 머신을 재부팅합니다.
  12. 재부팅 후 생성한 계정으로 로그인합니다.
  13. 다음으로 뜨는 창은 안내 사항이므로 next를 눌러 넘겨줍니다.
  14. 설치가 완료되었습니다. 아래가 바로 우분투의 GUI 환경입니다. Windows와는 조금 다른 모습이죠?

❗ VirtualBox 화면 조정

VirtualBox를 사용하다면 약간의 문제가 있습니다. 바로 우분투의 화면 크기가 변하지 않는다는 것인데요.

  1. VirtualBox의 '장치' 탭의 '게스트 확장 CD 이미지 삽입'이라는 탭을 클릭합니다. 이 과정은 가상 머신에 가상 CD를 삽입하는 것입니다. 이 CD에는 사용자가 VirtualBox를 편하게 사용할 수 있도록 도와주는 프로그램이 들어 있습니다.
  2. 조금 기다리면 CD에 자동 실행 프로그램이 있다는 알림창이 뜹니다. Run 버튼을 클릭합니다.
  3. 비밀번호를 입력합니다.
  4. 프로그램 하나가 실행될 텐데요. 마지막 줄에 Press Return to close this window가 뜰 때까지 기다렸다 문구가 나오면 엔터를 누릅니다.
  5. 그럼 화면 조정이 가능해집니다.

❗ 터미널(Terminal) 실행하기

마지막으로 CLI 환경에서 컴퓨터를 사용하기 위한 터미널이라는 프로그램을 실행해보겠습니다.

  1. 우분투의 왼쪽 하단에 9개의 점으로 된 사각형이 있습니다. 클릭해줍시다.
  2. 검색창에 terminal이라고 입력합니다.
  3. 그럼 아래와 같은 화면이 뜰 텐데요. 이것이 바로 터미널의 화면입니다. 여기서 커맨드를 작성하여 컴퓨터를 사용하는 환경을 CLI 환경이라고 합니다.

    그림에 보이는 tataki26@tataki26-VirtualBox는 현재 접속한 사용자가 tataki26, 컴퓨터 이름이 tataki26-VirtualBox라는 뜻입니다.

이제 모든 준비가 완료되었습니다.

💻 macOS의 역사

본격적으로 유닉스 커맨드를 배우기에 앞서 macOS의 역사를 간단히 살펴보고 갑시다.

Windows 사용자와 다르게 macOS 사용자는 별다른 노력 없이 CLI 환경을 구축할 수 있습니다. 그 이유는 macOS가 유닉스 계열에 속하고 유닉스 관련 표준을 준수하는 Unix-certified 운영체제이기 때문입니다.

사실 리눅스 말고도 유닉스를 기반으로 만들어졌던 운영체제가 하나 더 있었습니다. 바로 BSD(Berkerly Software Distribution)입니다. 이는 리눅스보다 더 이전에 등장한 운영체제입니다.

유닉스가 여러 곳에서 사용되고 있던 1978년에 미국 UC 버클리 대학의 대학원생이었던 빌 조이와 척 핼리는 기존의 유닉스를 개량하여 BSD라는 운영체제를 개발했습니다. 이 BSD는 계속해서 업그레이드하여 현재는 4.3BSD까지 개발된 상태입니다.

그리고 NeXT라는 컴퓨터 회사에서 이 4.3BSD를 기반으로 NeXTStep이라는 운영체제를 개발했는데요. 사실 이 회사는 그 유명한 스티브 잡스가 Apple 내에서 여러 갈등을 겪고 쫓겨난 후에 설립한 회사입니다. Apple에서 쫓겨난 이후 자신만의 통찰력을 가지고 새로운 시도를 위해 만든 회사였죠.

NeXTStep은 그 안에 구현된 진보적인 기술들로 인해 많은 주목을 받았습니다. 그 즈음에 잡스가 빠진 Apple은 기존에 가지고 있던 운영체제의 한계를 극복할 차세대 운영체제를 만들기 위해 노력하던 중이었죠. 그러나 끝끝내 실패하고 결국 외부에서 개발된 운영체제를 가져와야겠다는 판단을 내렸습니다.

결국에는 당시 후보였던 NeXTStep이 선택되었고 그와 동시에 스티브 잡스는 다시 Apple로 돌아오게 되었습니다. 그 뒤로 Apple은 이 운영체제를 자사 기기에 이식하기 위한 프로젝트를 시작했고 그 결과 NeXTStep은 오늘날 iOS, macOS, watchOS의 기초가 되었습니다.

정리하자면 유닉스로부터 BSD가, 그로부터 NeXTStep이, 최종적으로는 macOS가 나온 것입니다. 그렇기 때문에 역사적으로 macOS의 뿌리를 유닉스라고 할 수 있는 것이죠.


이번 시간에는 개발자라면 꼭 익혀야 하는 CLI 환경과 커맨드, 그리고 각종 운영체제의 뿌리인 유닉스의 역사와 Windows 환경에서 우분투를 사용하기 위한 환경 구축 방법 등을 알아봤습니다.

다음 시간에는 본격적으로 CLI 환경을 실습해보도록 하겠습니다.

* 이 자료는 CODEIT의 '유닉스 커맨드 라인' 강의를 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글