-
얄코 리눅스 +wslLinux 2021. 8. 7. 18:23
옮
리눅스를 사용한다 = 윈도우나 맥 대신 리눅스를 깔아서 쓴다는 얘기가 아니라
프로그래밍을 하고 서비스 운영을 할 때 리눅스로 돌아가는 서버를 다루는 등 개발 중에 리눅스 관련 작업을 한다는 것
개발자라고 개인컴을 리눅스로 쓸 필요는 전혀 없다
리눅스가 뭔지에 대해선 검색하면 수두룩하니까
1.프로그래밍 세계에서 리눅스가 많이 쓰이는 이유
2.리눅스 컴퓨터를 따로 구하지 않고 실습할 수 있는 기본적인 사용법
리눅스와 타 OS들의 차이 : 윈, 맥, 안, ios는 일반인 즉 end-user들을 대상으로 만든 운영체제
때문에 가능한 어려운 조작 없이 GUI로 만들어진 화면에서 개발자들이 다 만들어놓은 기능들을 사용만 하면 되도록 환경을 제공에 초점
GUI는 모든 요소들이 화면에 그림으로 나타나서 사용자가 마우스로 클릭하는 식으로 사용할 수 있는
CLI와 반대의 개념 근데? 직접 만들어보고 조작해보고 싶은 프로그래머들의 입장에선 제한적인 부분이 많다.
요리를 직접 하는걸 좋아하는 사람에게 전자레인지용 냉동 도시락과도 같은 느낌
리눅스는 날것의 식재료다
버전에 따라 GUI도 제공하지만 메인은 이 CLI로 사용자가 할 수 있는 무궁무진한 작업들
일반인용 OS들은 프로그래머들이 이미 필요한 것을 다 만들어 놓은 상태에서 사용자들은 딱 그 의도대로 쓰는 완제품
리눅스는 프로그래밍을 할 줄 아는 개발자들이 얼마든 이것저것 만져보고 개조해볼 수 있는 조립식 제품
리눅스는 '오픈소스' 운영체제, 누구나 공짜, 설계도인 코드도 마음껏 들여다볼 수 있고, 이를 원하는대로 개조할 수도 있다는 의미
우리가 리눅스를 사용하려 할 때 우분투, 민트, CentOS 기타등등 수많은 버전들 중에서 골라야 하는 건 바로 이 때문
리누스 토발즈가 만든 리눅스에서 출발했지만 이를 필요에 따라 개조하고 발전시킨 여러 버전들이 자유롭게 만들어진것
나도 개선해서 나만의 버전을 만들어 출시할 수 있다.
그럼이게 프로그래밍과는 어떤 연관이 있을까?
서버도 컴퓨터다
웹사이트용 서버든 게임용 서버든 실험용 서버든
모두 특정 OS를 사용해서 돌아가는 컴퓨터
이 서버를 윈도우로 돌릴 수도 있겠지만 정품 라이선스를 구입해야함, 맥OS는 맥에서만 돌아가서 그 비싼 맥을 사서 서버로 써야함
돈 많은 사람들이나 회사 단위에서야 괜찮지만 일반 개발자들로서는 뭔가를 개발해보기 위한 진입장벽이 꽤나 높아질거에요
반면 리눅스는 무료이기 때문에 얼마든 서버에 깔아서 맘껏 사용할 수 있다
단지 사용하는 것만 무료인 것 뿐 아니라 필요에 따라 개조해 쓰는것도 자유이기 때문에 이처럼 다양한 서버용, PC용 리눅스 뿐 아니라 모바일이나 IoT기기용으로 무궁무진하게 파생돼요
대표적인 예가 안드로이드죠. 리눅스를 일반인 스마트폰 사용자들이 편리하게 사용할 수 있는 모바일 OS로 개조한거에요
그 외에도 운영체제의 기능들을 필요로 하는 수많은 기기들, 서버들에 리눅스가 사용되고 있어요
이런것들에 들어가는 소프트웨어를 개발하는 개발자들이 리눅스와 친해지는건 당연하겠죠
오픈소스가 아닌 윈도우 등은 소유 회사가 아닌 곳에서 소스를 살펴보거나 이를 변경해서 수정된 OS를 만들거나 하는 것이 금지되어 있기 때문에 이런 것이 불가능해요. 보다 더 복잡하고 전문적인 이유들도 많지만 이 정도만 해도 개발자들이 왜 리눅스를 쓰게 되는지 알겠지
@리눅스의 커널이란?
리눅스 커널이 곧 리눅스다 라고 생각해도 무방
리눅스가 칼이면 커널은 칼날
물리적 컴퓨터, 즉 하드웨어 요소들을 OS의 최하단, 기계를 상대하는 최전선에서 직접 다루고 관리하는게 커널
운영체제라는 소프트웨어의 존재이유이자 핵심
커널이 아닌 요소들은 손잡이나 칼집 등의 부속품
우리가 컴퓨터란 기계에게 명령을 내리고 결과를 받아올 수 있는 건 이 커널 덕분인거에요
@리눅스를 써봅시다
실제로 개발자들이 서버나 기기를 설정하고 프로그램을 돌릴 때는 대부분 CLI에 명령어를 입력하는 식으로 사용하거든요 이 방식으로 진행해볼게요
리눅스 종류는 가장 대중적인 배포판 중 하나인 우분투를 사용해서 진행할게요, 다른 종류를 사용해도 크게 다르진 않습니다.
리눅스를 사용하려면 리눅스가 깔린 기기가 있어야죠. 사용하지 않는 컴퓨터가 있다면 거기에 깔아서 써보는게 최선이겠지만
세가지 방법이 존재
- 가상머신 소프트웨어 5:30 --버츄얼박스
- 온라인 IDE 6:33 --구름IDE, AWS Cloud9..
- 터미널 : 개발용 컴퓨터로는 맥이 좋다는 이유 중 가장 큰 건 리눅스와의 호환성, 리눅스와 맥 OS 모두 유닉스라는 운영체제로부터 발전했기 때문에 맥의 터미널 명령어들이 리눅스와 공통된 것도 많고 리눅스에서 실행할 소프트웨어들을 맥에서 (일부) 바로 돌려볼 수 있는 등 리눅스 관련 작업들을 할 때 맥이 유리한 점들이 많았다
- 윈도우 10의 WSL 7:11 : 근데 MS에서 WSL이란 걸 발표한 뒤로는 아예 윈도우에서 리눅스를 CLI로 돌려볼 수 있게 됨. 타사 소프트웨어를 다운받을 필요 없이 내 컴퓨터에 리눅스를 깔아서 써볼 수 있음 --설치방법은 계속 바뀔 수 있기 때문에 고정댓글의 yalco사이트 페이지로
https://www.yalco.kr/35_linux/
가장 쉽게 배우는 리눅스
어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!
www.yalco.kr
--여기에 배울 명령어들도 다 있음.
https://www.yalco.kr/_01_install_wsl/
WSL로 윈도우에 리눅스 설치하기
어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!
www.yalco.kr
: ms사이트에 다 있는걸 정리한거라서 ms사이트가서 오류같은걸 해결하는게 좋음 난 0x80370102 오류가 생겨서 ms사이트보고 amd bios 기가바이트 가상화 라고 검색해봐야겠다 하니 나오더라 bios가서 가상화 가능하게 하는 설정하고 fTPM인가 그것도 그냥 바꿔버림 https://coding-groot.tistory.com/101 : wsl과 windows 위치 참고
@본격적 사용
clear
pwd : / 는 리눅스 환경의 최상위 디렉토리, 그 안에 들어있는 이런 이름의 폴더에 현재 내가 위치해 있다는 뜻
ls
cd / : 여기서 ls를 하면? 리눅스의 최상위 공간에서 보통 있는 디렉토리들이 있음
리눅스의 주요 디렉토리
디렉토리설명
bin 기본 명령어들이 저장된 디렉토리 boot 부팅에 필요한 가진 파일들이 저장되는 곳 dev 시스템 디바이스 관련 파일들이 저장되는 것 etc 시스템 설정에 관련된 각종 파일들이 저장되는 곳 home 사용자의 홈 디렉토리가 생성되는 곳 lib 커널과 프로그램에 필요한 각종 라이브러리가 저장되는 곳 media CD, USB같은 외부 장치를 연결하는 곳 mnt 탈부착 가능한 장치들을 임시로 연결하는 곳
(WSL의 경우 윈도우의 디렉토리와 연결)opt 추가 패키지가 설치되는 곳 root root(최고관리자)계정의 홈 디렉토리 run 실행중인 서비스와 관련된 파일들이 저장되는 곳 sbin 시스템 관리자용 명령어들이 저장되는 곳 sys 리눅스 커널 관련 정보가 있는 곳 tmp 시스템 사용중 발생하는 임시데이터가 저장되는 곳 usr 기본 실행파일, 라이브러리, 헤더 파일등이 저장되는 곳 var 시스템 운영중 발생하는 데이터, 로그가 저장되는 곳 proc 실행중인 프로세스 및 커널 정보가 저장되는 곳
디스크상이 아닌 메모리에 존재cd /var라고 해도 됨 --이거 절대 경로잖아 우리 지금 젤 위에 있으니까
ls뒤엔 고급 옵션을 붙일 수 있음, ls -F : 파일과 디렉토리 구분하기, 디렉토리 끝에 /가 붙음
ls -l : 각 항목의 정보들
ls -lF : 옵션들을 합성해서 사용할 수도 있음.
ls
list (라식)
현재 위치한 디렉토리 내 파일/디렉토리 목록을 표시합니다.
옵션설명
-a 숨긴파일을 포함한 모든 항목 표시 -d 디렉토리 정보만 표시 -F 디렉토리는 /, 실행가능 파일은 *, 소켓파일은 =, 링크인 경우 @를 파일이음 뒤에 표시 -l 각 항목의 상세 정보들을 함께 표시 -m 각 항목들을 쉼표로 구분하여 표시 -r 항목들을 역순으로 표시 -R 하위 디렉토리의 내용들도 표시 -s kb 단위로 표시 -t 최종 수정시간을 기준으로 표시 -u 최종 액세스 시간 기준으로 표시 같은 디렉토리 내의 폴더명을 적을 땐 cd뒤에 / 없이 적어도 됨 : 상대경로
밖으로 나갈 땐 cd ..
mkdir
탭키 : 자동완성
보통은 다른 곳에서 작성한 파일들을 리눅스 환경에 다운받는 방식으로 작업하기 때문에 리눅스 내에서 직접 파일을 생성하거나 편집하는 일은 필수적으로 마주치지는 않을거에요
윈도우에서 텍스트 파일을 만들 때는 메모장이나 워드패드등을 사용
리눅스에선 vi라는 에디터가 널리 쓰임. 얄코Vim영상에서 다룬 Vim모드의 오리지널
vi hello.txt : 해당 디렉토리에 바로 파일이 (예비) 생성되고 에디터가 열림.
이 vi 에디터는 키들마다 명령어가 있어서 따로 공부해야함.
이 상태로는 키들을 눌러도 입력이 되지 않음. 글자 입력 모드가 아닌 명령어 받기 모드라서.
입력모드 진입 명령어인 i를 눌러서 입력 모드로 바꿉니다. 이제 입력이 가능
적고
esc로 명령어 모드로 빠져나온 뒤
:wq를 입력햇서 저장과 동시에 에디터를 닫음
vi hello.txt로 다시 열어볼 수 있음.
변경 저장 없이 그냥 닫으려면 :q를 입력하면 됨
cp hello.txt hello2.txt : 이거를 본떠 저것 카피
mv hello2.txt [절대 또는 상대 경로] : 이동
rm hello2.txt : 파일삭제
rm -r : 폴더삭제, 안에 다른 것들이 들어있을 수 있기 때문에, 내부요소들도 recursive 재귀적으로 모두 지워준다는 의미
- 웹에서 다운
wget 다운로드할것의주소
- 프로그램 설치
윈도우의 경우 .exe 파일을 다운받아 실행하고
맥은 Applications에 앱을 넣거나 개발자들의 경우 homebrew를 사용하기도 하죠
리눅스는 계열, 종류마다 이 기능의 명령어가 다름
이 환경에 Node.js를 설치해볼게요
구글에 ubuntu install node.js를 검색하면 우분투 리눅스에 node.js를 설치하는 방법을 찾을 수 있어요
가능한 공식사이트에서 보기
Ubuntu는 리눅스 중 Debian이란 계열에 속합니다.
명령어가 나와있음
우분투 등의 이 sudo 명령어는 윈도우로 치면 관리자 권한으로 실행 같은거라 보시면 돼요
어떤 명령어를 쳤는데 Permission 관련 오류가 나면 앞에 sudo 명령어를 붙여서 다시 실행하고 관리자 계정의 패스워드를 입력하면 된다고 기억
sudo apt-get install -y nodejs
apt-get 그리고 이후 새로나온 apt는 데비안 계열의 리눅스 환경에서 소프트웨어들을 다운받아 설치하는 패키지 매니저 비유하자면 앱스토어 같은거라고 보시면 돼요.
Node.js의 NPM, 파이썬의 PIP 같은거죠
curl -sL 주소~~
sudo apt-get install -y nodejs
로 실행하면 설치됨. Node.js는 컴퓨터에서 자바스크립트를 돌리는거니까 간단한 자바스크립트 프로그램을 실행해볼까요
.js파일을 node 명령어로 실행하면 되는데
cli에서 뭔가 실행하는걸 종료하고 도로 명령어 입력모드로 돌아가려면 Ctrl + c를 입력하시면 돼요
'Linux' 카테고리의 다른 글
[따배쉘] 5.Bash shell script (0) 2022.08.25 [따배쉘] 4.Redirection, Pipeline (0) 2022.08.25 [따배쉘] 3.Metacharacters, Quoting, Nesting, Alias, Prompt (0) 2022.08.15 [따배쉘] 0.~2.Shell이란, 변수, 환경변수 (0) 2022.08.15 얄코 Vim (0) 2021.10.06