Linux(Ubuntu) 공부 방법
개발을 조금 하다 보면 리눅스 이야기가 심심치 않게 들립니다. 왠만한 개발 관련 내용들은 리눅스를 기반으로 설명하고 있습니다. 도대체 리눅스, 우분투 등등이 무엇이고 어떻게 배워야하는 걸까요?🤔
리눅스를 배운다는 것
리눅스를 배운다는 것은, 아마 두 가지 의미 중 하나일 것입니다.
- 리눅스의 구조와 원리를 배우는 것 리눅스를 기반으로 자신만의 운영 체제를 만들거나 리눅스가 전혀 지원하지 않는 CPU, 하드웨어 등등에서 리눅스가 동작할 수 있도록 수정하는 등의 목적을 위한 학습입니다.
- 리눅스의 사용 방법을 배우는 것 처음 개발을 시작하는 분들이나 학생분들이 배워야하는 부분입니다. 리눅스 환경에서 필요한 프로그램을 설치하고, 폴더와 파일을 만들고 수정하며, 프로그램을 실행시키는 방법 등을 말합니다.
비유를 하자면, 1번은 자동차의 구조와 원리에 대해 학습하는 것이고 2번은 자동차의 운전 방법을 공부하는 것입니다. 우리가 자동차의 구조와 원리를 몰라도 운전방법을 배워서 원하는 목적지까지 운전할 수 있듯이, 리눅스 역시 구조와 원리를 모르더라도 사용 방법만 배우면 원하는 대로 사용할 수 있습니다. 그리고 구조와 원리를 배우기 이전에, 사용 방법을 먼저 배워야 더 익숙하고 쉽게 구조와 원리를 공부할 수 있습니다.
본 글에서는 두 번째에 초점을 맞춰 설명합니다.
리눅스와 배포판
리눅스 (Linux)
리눅스는 운영체제의 이름입니다. 이미 여러분은 여러 종류의 운영 체제를 사용하고 있습니다. 여러분들은 윈도우, 안드로이드, 맥OS, iOS등 여러 운영 체제를 익숙하게 사용하고 있지요. 리눅스 역시 또 다른 운영체제의 한 종류입니다. 이정도만 알고 있어도 리눅스를 사용하는데 충분합니다.
배포판
리눅스에다 여러 소프트웨어를 섞어서 만든 운영체제를 리눅스 배포판이라 부릅니다. 쉽게 말해 리눅스라는 운영체제를 취향에 맞게 커스터마이징 후 제공하는 것이죠. 종류가 여러 가지가 있으며 무료인 경우도 있고 유료인 경우도 있습니다. 데비안 계열, 레드햇 계열 등이 있고 종류가 많습니다만, 개발에 입문하시는 분들에게 당장은 중요하지는 않습니다. 리눅스 배포판에 대해서는 여기를 참고해주세요. 저는 개인적으로는 우분투를 쓰고 있으며, 회사에서는 센토스를 사용하고 있습니다. 개인 개발자들과 처음 리눅스를 사용하시는 분들은 우분투를 사용하시는 것을 추천드립니다.
리눅스 사용이 불편한 이유
여러분은 이미 윈도우, iOS 등 여러 종류의 운영 체제를 배우지 않고도 익숙하게 다루고 있습니다. 그런데 왜 리눅스의 사용 방법은 다들 어려워 할까요? 그 이유는 리눅스는 CLI를 주로 사용하기 때문입니다.
GUI와 CLI
컴퓨터와 스마트폰을 사용하기 위해서는 이를 위한 인터페이스가 있어야 합니다. 컴퓨터의 키보드와 마우스, 스마트폰의 터치패널이 그 예입니다. 이러한 인터페이스의 종류는 크게 두 가지가 있는데, GUI와 CLI입니다.
GUI
Graphic User Interface의 약자입니다. 우리에게 모두 익숙한 인터페이스죠. 그림이나 도형, 사진 등을 기반으로 한 인터페이스로, 윈도우나 안드로이드 등의 운영체제가 GUI입니다. 창을 닫기 위해 X모양 아이콘을 클릭하고, 프로그램을 실행하기 위해 해당 프로그램의 아이콘을 누르는 등의 동작이 모두 GUI인 것이죠.
CLI
Command Lind Interface의 약자입니다. 문자열 기반의 인터페이스입니다. 아마 대부분의 일반인들은 이러한 인터페이스에 익숙하지 않죠. 프로그램을 실행하거나 폴더를 만들고, 파일을 복사하는 것 모두 글자를 입력해서 동작시켜야 합니다. CLI는 아래와 같이 생겼습니다.
위 화면에서 수행한 내용은 아래와 같습니다. 물론 이해하지 않으셔도 괜찮습니다.
- fa.wikipedia.org에 ping을 날려봅니다.
- pwd 명령어를 통해 현재 위치를 확인합니다.
- /var 디렉토리로 이동합니다.
- 현재 위치의 모든 파일 리스트를 봅니다.
- wiki 패키지를 검색합니다.
이런 명령들을 마우스 없이 키보드만으로 문자열을 입력하여 동작시킵니다.
CLI를 사용하는 이유
대부분의 리눅스 배포판은 GUI와 CLI를 모두 지원합니다. 그런데 보통 개발자들은 CLI를 사용하죠. CLI를 사용해보시면 알겠지만 처음 사용하면 매우 불편합니다. 디렉토리를 원하는 위치에 만드는 것도 쉽지 않고 파일들이 어디에 있는지 확인하는 것도 쉽지 않습니다. 도대체 왜 CLI를 사용할까요?
-
CLI는 모든 컴퓨터에서 사용가능합니다. GUI가 지원되지 않는 컴퓨터도 있습니다. 클라우드에서 컴퓨터를 사용하거나, 외부 컴퓨터에 접속하거나, 시스템 사양이 낮은 리눅스 기반의 임베디드 시스템을 사용하는 등, 개발을 하다 보면 GUI가 지원되지 않는 여러 종류의 컴퓨터를 사용하게 될 경우가 있습니다. 이런 경우 CLI를 사용해야만 합니다.
-
CLI는 개발자 친화적입니다. 무수히 많은 사례가 있지만 몇 가지 예를 들어보면,
- GUI에서 100개의 디렉토리를 만드려면 어떻게 해야할까요? 윈도우를 예로 들면, 오른쪽 클릭 후 새 폴더 만들기를 100번 반복해야겠죠? 그러나 CLI를 사용한다면 이러한 반복적인 명령어를 스크립트로 만들어 자동적으로 실행시킬 수 있습니다.
- 어떤 프로그램 설치 방법을 다른 사람에게 알려주려면 어떻게 해야할까요? GUI의 경우 일일이 프로그램 설치 과정을 스크린샷으로 찍어 보여줘야 할 것입니다. 그러나 CLI를 사용한다면 설치를 위한 연속된 명령어들을 알려주기만 하면 됩니다.
-
다른 개발자들은 모두 CLI를 사용합니다. 물론 여기서 말하는 개발자는 개발을 시작한 사람이 아닌 어느 정도 경험이 있는 사람을 말합니다. (물론 CLI가 필요없는 분야도 있습니다.)
어떻게 배워야 할까요?
리눅스의 사용 방법은 낯선 것일 뿐 어려운게 아닙니다. 여러분들이 윈도우, 맥OS, 안드로이드 등을 자주 사용하면서 익숙해졌듯이, 리눅스도 자주 사용하면서 익숙해지면 됩니다. 그때그때 필요한 명령어들을 검색해가면서 말이죠. 그러나 더 빨리 효과적으로 익숙해지기 위해서는 책과 함께하는 방법도 좋을 것 같습니다.
도서관이나 서점에 가면 여러 리눅스 배포판에 대한 책들이 많이 있습니다. 저는 우분투를 추천드립니다. 우선 사용하고싶은 리눅스 배포판에 대한 책을 하나 고르세요. 그냥 마음에 드는 책 아무거나 고르시면 될 것 같습니다. 그 후 책에 나와있는 내용을 쭉 따라해봅니다. 책을 따라하는것은 아마 하루이틀이면 충분히 하실 수 있을거에요. 일단은 이해하지 않으셔도 괜찮습니다. 낯선 것일 뿐 어려운게 아니니까요! 책을 끝까지 그냥 이해하지 말고 쭉 따라한다는 느낌으로 CLI를 사용하다보면, 리눅스에 금방 익숙해지실거라 생각합니다. 그 후에는 리눅스를 사용하면서 그때그때 모르는 사용법이나 필요한 기능들을 찾아서 사용하면 됩니다.
Leave a comment