Linux 보고서
By lewing@isc.tamu.edu Larry Ewing and The GIMP, Attribution, https://commons.wikimedia.org/w/index.php?curid=80930
Linux는 리누스 토르발즈가 미닉스를 쓰면서 마음에 안드는 기능을 직접(!) 만들다가 오픈소스로 공개하여 탄생한 커널 / 운영체제를 지칭하는 말이다.
오늘은 Linux에 대해서 알아보겠다!
Linux의 역사와 같은 내용은 제쳐두고, 장점과 단점, 명령어는 어떤게 있고 어떤 특징을 갖는지와 같은 실용적인 내용을 다루어 보겠다.
0. 리눅스? 그거 검정화면에 글자만 겁나 많은거 아닌가요?
CLI(CUI)와 GUI
먼저 CLI와 GUI의 차이를 이해하고 넘어가야 할거같다. 세간에 퍼져 있는 안타까운 오해 하나가 있는데, 그게 바로 "Linux는 명령어를 전부 알아야 동작 시킬 수 있는 어려운 운영체제" 라는것이다.
CLI는 Command-Line Interface의 줄임말로, 한국어로는 명령줄 인터페이스 정도로 번역 할 수 있을것이다.
대충 머릿속에 그려지는 이런 화면 맞다.
GUI는 우리가 Windows를 사용하며 보는 익숙한 화면, 그러니까 대충 이런화면을 말한다.
본인은 macOS 사용자라 모양은 다를 수 있다.
어찌되었든 GUI란 Graphic User Interface의 약자로 그래픽을 사용하는 인터페이스를 말한다.
Linux와 CLI의 관계에 대한 오해는 먼저 Windows의 구동 방식에 대해서 설명할 필요가 있을것 같다.
Windows는 서버 버전을 제외하면 GUI가 기본 탑재되며 MS에서 개발 및 관리한다.
그러나 Linux는 다르다. Linux 프로젝트 자체는 GUI를 포함하고 있지 않다.
흔히 생각하는 배포판 Linux는 Linux 커널 위에 여러가지 프로그램을 올린 상태로 배포한다.
저 프로그램 안에, GUI를 담당하는 프로그램도 탑재되어 올라간다. 그래서, GUI도 Linux에게는 프로그램이 만들어 내는 사용자 경험일 뿐이다.
GUI환경이 3rd-party 인 만큼, 종류가 많다.
본론으로 돌아와, 대부분의 Linuxer들은 CLI 환경에서만 사용하는 경우는 드물기 때문에 "검정화면에 글자만 겁나 많은것" 는 정확히 틀린 말 이라고 할 수 있다.
물론 콘솔창에서 명령어 치는게 Linux를 사용하다보면 익숙해질거다. 자연스레.
1. 그렇군요! 그럼 Windows 말고 Linux 배포판 쓰면 뭐가 좋아요?
Linux의 장점은 "매우 넓은 사용자의 선택권" 로 요약 할 수 있다.
Linux는 앞서 말했듯 오픈소스라는 특징을 갖고 있다. 그래서 당신도 지금 당장 리눅스의 소스를 볼 수 있다!
이러한 특징은 프로그래머들의 많은 참여를 이끌어냈고, 그래서 시스템의 여러 부분을 자유롭게 커스터마이징 할 수 있다. 귀찮으면 이미 존재하는 배포판 중 본인과 맞는것 같은것을 깔아 입맛에 맞게 특정 부분만 커스터마이징 할 수 있다.
이 예시가 너무 추상적이였다면, 일단 다른 이야기로 넘어가자.
다중사용자 친화적
Linux는 Windows와 달리 다중사용자에게 최적화 되어있다는 특징을 갖고있다.
그래서 Windows에 비해 권한 관리에 있어 더 철저히 되어있다.
예를 들어보자. 당신은 A부서에 속해있는 프로그래머이고, B부서와 하나의 프로젝트를 두고 경쟁을 해야하는 상황이라고 치자. 그리고 각각의 프로젝트는 한 서버컴퓨터에 올려두고 관리를 해야한다고 치자.
Windows가 서버컴퓨터라면, B부서의 직원은 A부서의 프로젝트에 접근하는것이 가능하다. 왜냐하면 Windows의 권한 관리는 그렇게 상세한 권한 관리 기능이 없기 때문이다.
그러나 Linux가 서버 컴퓨터라면, A부서의 직원끼리만 A부서의 프로젝트가 위치해있는 디렉토리에 권한을 설정 함으로써 A부서의 직원만 프로젝트에 접근이 가능하게 설정해두는것이 가능하다. B부서도 마찬가지이다.
명령어 작성의 편안함
"엥? 위에서는 그런 운영체제 아니라면서요!" 라는 질문이 나올지도 모르겠다.
그러나 위에서 말한것은 GUI환경을 지원하고, 또 많은 사용자들이 그렇게 사용한다는 의미였지, CLI를 사용하는 경우가 없다는 뜻은 아니였다.
명령어는 일단 진입장벽만 높을뿐이지, 사용하다보면 자연스레 외워진다는 점은 여러분히 단순히 상상만 해 보아도 알 수 있을것이다.
마우스가 필요했던 작업을 명령어 한 줄로 해결 할 수 있고, 나중가면 마우스를 만지기 싫어지는 지경까지 오게되어 Linux를 끊을 수 없게 된다. (나도 그래서 3년째 Linux를 썼고, 그래서 POSIX표준(명령어 표준) 을 준수하는 macOS를 쓰게 되었다!)
그래서 사실 자유도와 명령어 작성이 편하다는 점이 리눅스의 인기가 높은 이유에 많은 비율을 차지 할 것이다.
업데이트 및 프로그램 패키지 관리의 편안함
대부분의 리눅스 배포판에는 pkg나 yum과 같은 패키지 관리 프로그램들이 있다.
브라우저 중 하나인 Firefox를 Windows에서 설치한다고 치자. Windows에서는 다음과 같은 과정으로 설치를 진행 할 것이다.
포털엔진에서 Firefox검색 -> Firefox 웹에 접속 -> 다운로드
그러나 Debian Linux를 기준으로, 다음 명령어 한 줄 이면 끝난다.
"sudo apt install firefox"
삭제도 다음 한 줄 이면 끝난다.
"sudo apt remove firefox"
운영체제 버전 업과 다운로드도 지원해주는 회사의 메뉴얼에 따라 명령어 몇줄이면 해결 가능하고, 깔아져있는 프로그램들의 업데이트를 하고싶으면
"sudo apt upgrade"
한 줄이면 끝나기 때문에 Windows에 비해 편안하다. 매우!!
2. 근데 그럼 장점밖에 없어요? 왜 Windows를 쓰죠?
Linux에도 물론 단점은 많다.
일단, 주 사용층이 프로그래머 혹은 IT업계에서 일하는 사람들이다 보니 예술쪽과 관련된 프로그램의 지원이 빈약하다. 물론 여러가지 좋은 대체제들이 없는것은 아니지만, 예술쪽에서는 산업의 표준이 되는 프로그램들이 지원되지 않을 가능성이 매우 크다.
또한 지원하는 프로그램의 수가 macOS나 Windows에 비해 적은편이다. 당장 우리가 사용하는 카카오톡만 해도, Linux 배포판을 지원하지 않아 비공식적인 방법으로 강제로 설치하는 방법 뿐이다.
그리고 결정적으로, 돈으로 굴러가는 프로젝트가 아니기 때문에 안정성이 좀 떨어진다. Red Hat과 같이 돈받고 운영체제와 사후지원을 파는 기업의 Linux를 제외하면 별것 아닌 작업에서 버그가 발생한다거나 GUI 환경을 담당하는 프로그램이 이상하게 동작해서 화면이 깨진다거나..
물론 업데이트가 잦기 때문에 이런 오류가 잘 생기지도 않고, 생기더라도 바로 해결 되지만 일상적으로 사용하기에는 조금 거슬릴 수도 있다.
3. 그정도면 괜찮네요!! 근데 뭘 깔아야 Linuxer가 될 수 있죠?
리눅스는 말했듯 그 자체로는 커널이고, 여러가지 커스텀이 된 배포판 중 골라야 한다.
출처: http://kde-files.org
그렇다. 겁나 많다.
그래도 대중적인 배포판의 갈래를 꼽아본다면 데비안, 레드헷이 있을것이다.
이 배포판들에 대한 설명까지 다루면 너무 글이 길어지니 생략하도록 하고, 처음이라면 보통 Ubuntu를 추천하는게 일반적이다. Ubuntu는 데비안 기반의 운영체제로, 사용하기 쉬운 Linux로 꼽힌다. Windows처럼 필요한 기능들은 다 미리 설치 되어있고, 리눅스의 특성 덕택에 원하는 부분을 자유롭게 커스터마이징 할 수 있으며 가장 대중적인 Linux 배포판인 탓에 지원하는 프로그램도 많고 Ubuntu를 타겟으로 프로그램을 제작하는 경우도 많다.
4. 리눅스를 깔았어요! 그런데 저도 명령어로 뭔가 해 보고싶은데 어떻게 하죠..?
Linuxer가 되신것을 환영한다! 터미널을 열고싶다면, Ctrl+Alt+T를 누르면 된다.
Linux의 모든 명령에 대한 간략한 설명은 help를 치면 나온다.
특정 명령어에 대해서 상세한 설명을 원한다면 man [명령어]를 입력하면 된다.
일단 기본적으로 알아두어야 할 명령어는 이곳에서 소개하겠다.
ls
list segments의 약자로, 디렉토리 내의 파일들을 표시하는 명령어다.
ls -al 로, al 옵션을 주게 되면 숨김처리 된 파일들을 표시하고(a), 파일의 권한과 같은 세부 정보를 표시한다.(l)
cd
change directory의 약자로, 디렉토리를 이동하는 명령어이다. 그래서, cd [이동하고 싶은 디렉토리] 를 치면 된다.
mv
move라는 뜻으로, 파일을 이동시킬때 쓰이지만 다른 용도로 활용 할 수 있다.
예를 들어 a라는 파일을 옮기려고 해보자.
"mv a target" 이런식으로 작성할 것 아닌가?
이 target에 mv a b 를 입력하게 된다면, a의 이름이 b가 된다.
그리고 디렉토리를 다룰때는 -r 옵션을 사용해야한다.
cp
copy라는 뜻으로, 특정 파일 및 디렉토리를 복사하는 명령어이며 mv와 사용법은 동일하다.
rm
remove라는 뜻으로, 특정 파일 및 디렉토리를 삭제하는 명령어이며 mv와 사용법은 동일하다.
who
현재 접속해있는 유저를 보는 명령어이다.
pwd
현재 디렉토리를 확인하는 명령어이다.
whoami
자신이 누군지 볼 수 있는 명령어이다.
이정도면 기초적인 작업은 커맨드라인으로도 할 수 있는 자신을 발견하게 될 것이다!
Comments
Post a Comment