가장 쉽게 배우는 리눅스

프로그래밍 세계에서 왜 🐧리눅스가 많이 사용되는지 알아보고
내 컴퓨터에서 쉽게 리눅스를 사용하는 법
그리고 리눅스의 기본적인 사용법을 익혀보도록 해요!




⭐️ 윈도우에 WSL로 리눅스 설치하기 ⭐️

🔗설치방법 보러가기 ▶▶▶




⌨️ 실습용 자바스크립트 코드

gitlab에서 클론하기

git clone https://gitlab.com/yalco/practice-linux.git

코드

let index = 0 const words = [ '날 종료해줘', '부탁이야, 안식하게 해줘', 'Ctrl... 그리고...', '쿨럭', 'c 를 누르면... 돼', '아니 c t r l 이 아니라', '컨트롤 키를 먼저...', '컨트롤 키 이자식아 컨트롤 컨트롤 컨트롤', '콜록콜록', '니 왼쪽 손가락으로 젤 아래', '어우 좀 쿨럭 끝내달라고' ] setInterval( () => { console.log(words[(index++)%words.length]) }, 1000 )


🗃 리눅스의 주요 디렉토리

디렉토리 설명
bin 기본 명령어들이 저장된 디렉토리
boot 부팅에 필요한 가진 파일들이 저장되는 곳
dev 시스템 디바이스 관련 파일들이 저장되는 것
etc 시스템 설정에 관련된 각종 파일들이 저장되는 곳
home 사용자의 홈 디렉토리가 생성되는 곳
lib 커널과 프로그램에 필요한 각종 라이브러리가 저장되는 곳
media CD, USB같은 외부 장치를 연결하는 곳
mnt 탈부착 가능한 장치들을 임시로 연결하는 곳
(WSL의 경우 윈도우의 디렉토리와 연결)
opt 추가 패키지가 설치되는 곳
root root(최고관리자)계정의 홈 디렉토리
run 실행중인 서비스와 관련된 파일들이 저장되는 곳
sbin 시스템 관리자용 명령어들이 저장되는 곳
sys 리눅스 커널 관련 정보가 있는 곳
tmp 시스템 사용중 발생하는 임시데이터가 저장되는 곳
usr 기본 실행파일, 라이브러리, 헤더 파일등이 저장되는 곳
var 시스템 운영중 발생하는 데이터, 로그가 저장되는 곳
proc 실행중인 프로세스 및 커널 정보가 저장되는 곳
디스크상이 아닌 메모리에 존재


⌨️ 리눅스의 중요 명령어들

pwd

print working directory (포지션이 워딘가)

현재 위치한 디렉토의 절대경로를 표시합니다.


ls

list (라식)

현재 위치한 디렉토리 내 파일/디렉토리 목록을 표시합니다.

옵션 설명
-a 숨긴파일을 포함한 모든 항목 표시
-d 디렉토리 정보만 표시
-F 디렉토리는 /, 실행가능 파일은 *, 소켓파일은 =, 링크인 경우 @를 파일이음 뒤에 표시
-l 각 항목의 상세 정보들을 함께 표시
-m 각 항목들을 쉼표로 구분하여 표시
-r 항목들을 역순으로 표시
-R 하위 디렉토리의 내용들도 표시
-s kb 단위로 표시
-t 최종 수정시간을 기준으로 표시
-u 최종 액세스 시간 기준으로 표시

cd {경로}

🚪 change directory (쑥 들어가기) 뒤에 덧붙여진 경로로 이동하는 명령어에요.


mkdir {디렉토리명}

📂 make directory

디렉토리를 생성합니다.

mkdir myfolder

vi {생서할 또는 열어볼 파일명}

📝 vi 에디터를 실행해요. 해당 파일명의 파일이 있으면 열고 없으면 새로 생성(:wq로 저장해야 만들어짐)하죠.
🔗vi 명령어 배우러가기 ▶▶▶


cp {복사할 대상} {붙여넣을 경로 또는 새 파일명}

📑 copy

파일을 복사합니다. 디렉토리를 복사할 시에는 cp 뒤에 -r을 붙여야 해요.

cp original.txt copied.txt cp original.txt ../anotherfolder/

mv {옮길 대상} {대상 디렉토리 또는 새 파일명}

move

파일이나 디렉토리를 옮기거나 이름을 변경할 때 사용합니다.

mv original.txt ../anotherfolder/ mv original.txt renamed.txt

rm {삭제할 대상}

remove

파일이나 디렉토리를 삭제합니다. 디렉토리를 삭제할 때는 rm 뒤에 -r을 붙여야 하죠.

rm fileTodelete.txt rm -r folderToDelete

sudo {명령어}

최고관리자 권한이 있어야 실행할 수 있는 명령들 앞에 붙여넣어요. 실행시 비밀번호를 요구하기도 하죠.
어떤 명령어 입력시 Permission 관련 오류가 뜬다면 sudo 명령어 필요한거에요.

sudo apt update sudo rm -r importantFolder


🎬 영상 주요 포인트

🐧 리눅스를 사용하는 이유

개발자들은 왜 리눅스와 친할까요? 리눅스와 타 OS들의 차이들을 살펴볼게요. 윈도우, 맥OS, 그리고 모바일의 안드로이드, iOS등은 모두 일반인, 즉 개발자가 아닌 사람들을 end-user들을 대상으로 만든 운영체제에요. 때문에 가능한 어려운 조작 없이 GUI로 만들어진 화면에서 개발자들이 다 만들어놓은 기능들을 사용만 하면 되도록 환경을 제공하는데 촛점이 맞춰져 있는거죠. 이런 의도로 만들어진 OS들인만큼 일반 입장에서는 비교적 배우기도 쉽고 사용하기도 편리하겠죠. 각종 소프트웨어들과 게임들도 대부분 이 OS들 전용으로 만들어져있어요. 하지만 높은 진입장벽을 넘어서서라도 뭔가를 직접 만들어보고 조작해보고싶은 프로그래머들의 입장에서는 꽤나 제한적인 부분들이 많아요. 요리를 직접 하는걸 좋아하는 사람에게 전자레인지용 냉동 도시락과도 같은 느낌인거죠. 리눅스는 이런 OS들에 비하면 날 것의 식재료들과도 같아요. 버전에 따라 GUI도 제공하지만 메인은 이 CLI로 사용자가 할 수 있는 무궁무진한 작업들이거든요. 일반인용 OS들은 프로그머들이 이미 필요한 것을 다 만들어 놓은 상태에서 사용자들은 딱 그 의도대로 쓰는 완제품이라면 리눅스는 프로그래밍을 할 줄 아는 개발자들이 얼마든 이것저것 만져보고 개조해볼 수 있는 조립식 제품과도 같다고 할 수 있죠. 조금 더 깊은 개념으로 들어가볼게요. 리눅스는 '오픈소스' 운영체제에요. 오픈소스라 함은 누구나 공짜로 가져다 쓸 수 있을 뿐 아니라 그 코드도 마음껏 들여다볼 수 있고 이를 원하는대로 개조할 수도 있다는 의미죠. 우리가 리눅스를 사용하려 할 때 우분투, 민트, CentOS 기타등등 수많은 버전들 중에서 골라야 하는 건 바로 이 때문이에요. 리누스 토발즈가 만든 리눅스에서 출발했지만 이를 필요에 따라 개조하고 발전시킨 여러 버전들이 자유롭게 만들어진거거든요. 당장 여러분도 리눅스를 연구해서 기존 버전들을 개선에 기여하거나 자신만의 버전을 만들어 출시할 수 있어요. 그럼 이게 프로그래밍과는 어떤 연관이 있을까요? 이 영상에서 서버도 컴퓨터라고 했죠. 웹사이트용 서버든 게임용 서버든 실험용 서버든 모두 특정 OS를 사용해서 돌아가는 컴퓨터에요. 이 서버를 윈도우로 돌릴 수도 있겠지만 윈도우는 정품 라이선스를 구입해야 하는 유료 소프트웨어죠. 추가 기능을 갖춘 서버용은 훨씬 더 비싸고요. 맥OS는 맥에서만 돌아다니까 그 비싼 맥을 사서 서버로 써야할거에요. 돈 많은 사람들이나 회사 단위에서야 괜찮지만 일반 개발자들로서는 뭔가를 개발해보기 위한 진입장벽이 꽤나 높아질거에요. 반면 리눅스는 무료이기 때문에 얼마든 서버에 깔아서 맘껏 사용할 수 있죠. 단지 사용하는 것만 무료인 것 뿐 아니라 필요에 따라 개조해 쓰는것도 자유이기 때문에 이처럼 다양한 서버용, PC용 리눅스 뿐 아니라 모바일이나 IoT기기용으로 무궁무진하게 파생돼요. 대표적인 예가 안드로이드죠. 리눅스를 일반인 스마트폰 사용자들이 편리하게 사용할 수 있는 모바일 OS로 개조한거에요. 그 외에도 운영체제의 기능들을 필요로 하는 수많은 기기들, 서버들에 리눅스가 사용되고 있어요. 이런것들에 들어가는 소프트웨어를 개발하는 개발자들이 리눅스와 친해지는건 당연하겠죠. 오픈소스가 아닌 윈도우 등은 소유 회사가 아닌 곳에서 소스를 살펴보거나 이를 변경해서 수정된 OS를 만들거나 하는 것이 금지되어 있기 때문에 이런 것이 불가능해요.

🖥 리눅스 커널이란?

리눅스 사용법으로 들어가기 전에 많은 분들이 궁금해하는, 리눅스의 '커널'이 뭔지 얄팍하게 다루고 넘어갈게요. 사실 어렵게 생각하실 것 없어요. '리눅스 커널이 곧 리눅스다'라고 생각하셔도 무방합니다. 리눅스가 칼이라면 커널은 칼날이에요. 물리적 컴퓨터, 즉 하드웨어 요소들을 OS의 최하단, 기계를 상대하는 최전선에서 직접 다루고 관리하는게 커널인거죠. 운영체제라는 소프트웨어의 존재이유이자 핵심인거에요. 커널이 아닌 요소들은 손잡이나 칼집 등의 부속품인거죠. 우리가 컴퓨터란 기계에게 명령을 내리고 결과를 받아올 수 있는 건 이 커널 덕분인거죠.




관련 태그의 다른 영상들

가장 쉽게 배우는 리눅스
리눅스를 사용하는 이유, 그리고 사용법을 간단하게 알아봅니다.
# 리눅스
# 운영체제
# 커널
# WSL
...
🌏 Why not change the world?