1. 리눅스란 무엇인가?
리눅스는 운영체제 (OS)입니다. 1991년 리누스 토르발스(Linus Benedict Torvalds)가 개발했습니다.
- 유명한 리눅스 배포판: Ubuntu, CentOS, SUSE, Fedora 등 다양한 배포판이 존재합니다.
- 공통점: 리눅스 커널을 사용하고 GNU 소프트웨어를 탑재합니다.
- 차이점: 데스크탑 관리자, 패키지 매니저, 기본 파일 시스템 등에서 차이가 있습니다.
- 리눅스 배포판은 각기 다른 특징이 있어 다양한 필요에 맞춰 사용됩니다. 예를 들어, Ubuntu는 가장 상용화되어 있습니다.
- 각 리눅스 배포판은 다양한 계열과 역사를 가지고 있으며, 서로 다른 목적에 의해 만들어졌습니다.
- 리눅스는 버전별로 출시됩니다 (예: Ubuntu 20.04는 2020년 4월에 출시됨).
2. 운영체제(Operating System)
운영체제(OS)는 컴퓨터의 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어입니다.
- 주요 구성 요소:
- 커널(kernel): 핵심 역할을 수행하며, 대부분의 작업을 제어합니다.
- 프로그램 실행과 멀티 테스킹: 여러 소프트웨어를 동시에 실행할 수 있습니다.
- 인터럽트: 하드웨어가 운영체제에 데이터가 도착했음을 알리는 메시지 패킷을 보냅니다.
- 메모리 관리: 메모리 사용 상태를 관리하여 효율적으로 운영합니다.
- 파일 시스템: 저장 장치에 파일 단위로 데이터를 저장하고 관리합니다.
- 디바이스 드라이버: 각 하드웨어를 제어하는 소프트웨어입니다.
- 네트워킹: 네트워크 연결 및 관리를 담당합니다.
- 사용자 인터페이스: 사용자로부터 명령을 받는 인터페이스 (예: 마우스, 모니터, 터치 기능 등).
3. 패키지 관리 시스템(Package Management System)
- 패키지 관리: 새로운 소프트웨어를 설치, 업데이트, 삭제하는 작업을 관리합니다.
- 리눅스 패키지: 실행 파일, 설정 파일, 라이브러리 등 소프트웨어 실행에 필요한 파일들을 포함합니다.
- 패키지 간 의존성: 특정 라이브러리나 다른 패키지가 필요한 경우 패키지 의존성(Package Dependencies)이라고 합니다.
- 라이브러리: 동적 로딩과 의존성을 관리합니다. 정적 라이브러리와 동적 라이브러리가 있습니다.
4. 가상화와 가상머신
- 가상화: 하나의 컴퓨터에 여러 운영체제를 설치하여 사용하는 기술입니다.
- Host OS: 기존에 설치된 운영체제입니다.
- Guest OS: 추가로 설치되는 운영체제입니다.
- 리눅스 가상머신 설치: 호스트, 가상머신 관리자, 리눅스 이미지가 필요합니다.
5. 리눅스 설치
리눅스 설치하는 방법에 대해 설명한 강의라서 딱히 정리할 내용은 x
6. 리눅스 데스크탑 둘러보기
- 터미널을 띄우기 위해 마우스 오른쪽 버튼 > Open in Terminal 클릭.
- 쉘에서 명령어를 입력하여 리눅스를 조작합니다 (예: Ctrl + Alt + Tap).
7. 리눅스 터미널
- 쉘: 운영체제 커널과 사용자 간의 인터페이스 역할을 수행하는 텍스트 기반 명령어 해석기입니다.
- 터미널 프로그램을 통해 쉘을 사용합니다.
- 쉘의 종류: 다양한 쉘이 존재하며, bash는 리눅스 표준 쉘로 사용됩니다.
- Docker: Go 언어로 작성된 리눅스 컨테이너 기반 오픈소스 가상화 플랫폼입니다.
- GUI vs CLI: 우리는 CLI 방식을 통해 리눅스에 명령을 내립니다.
8. 리눅스 기본 쉘 명령어 강의 소개
- 메뉴얼 조회: man
- 파일 목록/내용 조회: ls, cat, head, tail
- 검색/탐색: grep, find
- 압축/해제: tar, gzip/gunzip, zip/unzip
- 시간 관련: date, cal
- 기타 명령어: echo, exit, history
- 관리자 권한 실행: sudo
- 패키지 매니저: apt
- 텍스트 에디터: nano
9. 터미널 사용 및 man
- 터미널에서 명령어 입력.
- man: 다른 명령어의 메뉴얼을 조회합니다 (예: man ls).
- 종료: 'q' 누름.
- 검색: '/' 키 사용 후 검색어 입력 (예: /help).
10. 디렉터리 내용 조회/이동/확인
- ls: 디렉터리 내부의 파일 및 디렉터리 목록을 표시.
- cd: 디렉터리 이동 (예: cd 다운로드).
- pwd: 현재 위치 확인.
- clear: 화면 지우기.
- ~: 홈 디렉터리 의미.
- cd -: 직전 디렉터리로 이동.
11. 파일 내용 조회
- cat: 파일 내용을 출력.
- head: 파일의 앞부분 출력 (기본 10줄).
- tail: 파일의 뒷부분 출력.
- more: 파일 내용을 위에서 아래로 출력.
12. 파일 내용 검색
- grep: 파일에서 특정 문자열 검색 (예: grep "hello" dpkg.log).
13. 파일 검색
- find: 파일 검색 (예: find /etc -print).
절대경로와 상대경로
- /: 최상위 root 디렉터리 (절대경로 기준).
- ./: 현재 디렉터리 (상대경로 기준, 생략 가능).
- ../: 상위 디렉터리.
- ~/: 각 사용자의 홈 디렉터리.
14. 압축 관련 커맨드
- tar로 압축하기:
tar -cvf [파일명.tar] [폴더명]
- tar 압축 풀기:
tar -xvf [파일명.tar]
- tar.gz로 압축하기:
tar -zcvf [파일명.tar.gz] [폴더명]
- tar.gz 압축 풀기:
tar -zxvf [파일명.tar.gz]
15. 시간 및 기타 커맨드
- date: 현재 시간 출력.
- exit: 쉘 종료 및 터미널 닫기.
- echo: 지정한 문자열 출력 (예: echo aaa).
16. 관리자 권한 실행
- sudo: 관리자 권한으로 명령어 실행.
- 리눅스에는 root라는 관리자 계정이 존재하며, 중요한 설정 변경 시 관리자 권한이 필요합니다.
17. 패키지 매니저 사용법(apt)
- 설치:
sudo apt install [패키지명]
- 제거:
sudo apt remove [패키지명]
- 설치된 패키지 목록:
apt list --installed
18. 나노(nano) 편집기 사용법
- nano: 텍스트 에디터 실행 (새 버퍼 생성).
- 다양한 키 조합 사용 가능 (예: Ctrl + O: 저장, Ctrl + X: 종료).
19. 파일과 디렉터리의 구조
- 파일시스템: 파일을 관리하기 위한 시스템
- Tree형태의 계층 구조를 갖고 있는 리눅스
20 . 파일의 종류
-운영체의 관점에서 바라보는 파일의 종류
파일의 종류
일반파일 (regular file)
말그대로 일반파일.
텍스트 파일이나 동영상 파일
디렉터리(directory)
디렉터리도 파일의 한 종류입니다.
윈도우의 폴더와 같은 개념입니다.
심볼릭 링크 파일(symbolic link file)
어떤 다른 파일을 가리키는 파일입니다.
윈도우의 바로가기와 같은 개념
블록 디바이스 파일 (block device file)
블록 디바이스를 제어하기 위한 파일
문자 디바이스 파일 (character device file)
문자 디바이스를 제어하기 위한 파일
파이프 파일 (pipe file)
파이프를 나타내는 파일. 프로세스간 통신에 사용됨
소켓(socket)
소켓을 나타내는 파일. 프로세스간 통신에 사용됨
21 . 대표적인 디렉터리
디렉터리
설명
/
루트 디렉터리. 모든 디렉터리의 최상위 부모입니다.
/bin
모든 사용자가 사용할 수 있는 여러가지 실행 파일 위치
/sbin
시스템 관리자 권한으로 실행해야 하는 실행 파일 위치
/etc
여러가지 설정 파일(주의!!)
/lib
공유 라이브러리 디렉터리
/home
사용자들의 홈 디렉터리
/mnt
일시적으로 파일 시스템에 마운트하는 경우 사용하는 디렉터리
/proc, /sys
시스템 정보를 설정/조회할 수 있는 디렉터리
/tmp
임시 디렉터리
/usr
사용자가 추가한 실행파일, 라이브러리 등의 소프트웨어 저장
/dev
디바이스 드라이버가 사용하는 디바이스 파일 디렉터리
22. 디렉터리 개념
-현재 작업 디렉터리(CWD: Current Working Directory)
-홈 디렉터리(home directory) : 계정마다 따로 홈디렉터리가 정의됨
-상대 경로 vs 절대경로