GUI / CLI / OS
>GUI 와 CLI
- GUI
: Graphic User Interface
: 눈에 보이는 아이콘 등으로 컴퓨터를 제어하는 방식\ - CLI
: Command-Line Interface
: 명령어로 컴퓨터를 제어하는 방식
>CLI를 배워야하는 이유
: 높은 안정성과 빠른 속도(GUI는 그래픽에 컴퓨터 자원을 사용해야 되기 때문에 상대적으로 CLI가 빠름.)
: 서버 컴퓨터는 효율을 위해 Linux환경에서 CLI를 쓰는 경우가 많다. 때문에 개발자라면 필수.
: git을 쓸 때도 CLI환경에서 사용하기 때문.
>그 외 용어
- I/O: Input 과 Ouput
- 프롬프트: CLI환경에서 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 뜻함.
- 디렉토리: 흔히 폴더라고 하는 것.
>OS, Operating System
OS의 실행
1. bios가 하드웨어를 체크함.
2. OS 로딩, 우리가 흔히 보는 Windows 로딩 화면
3. 바탕화면, OS가 실행되어 컴퓨터 자원과 하드웨어를 제어하고 있는 모습
OS의 논리적 구조
: 커널(kernel)과 쉘(shell)로 이루어져 있음.
Kernel
: 실질적으로 명령어를 수행하는 부분
: 명령을 하드웨어와 송수신하는 역할
Shell
: kernel이 이해할 수 있는 언어로 명령어를 해석하여 주는 역할
: 터미널을 매개로 유저와 정보를 송수신함.
CLI 기본 명령어
- pwd : 현재 작업 중인 폴더의 위치 출력, print working directory
- mkdir : 새 폴더를 생성함. (현재 디렉토리에), make directories
- ls : 특정 폴더에 포함된 파일이나 폴더 확인, list
- cd (디렉토리 명) : 디렉토리 이동 명령어, change directory
- touch (파일명.확장자) : 새 파일 생성
- > (명령어) : 실행 결과를 파일로 저장함.
- cat (파일명.확장자) : 파일의 내용을 터미널에 출력한다, concatenate
- rm (파일명.확장자) : 단일 파일 삭제하기 (휴지통을 거치지 않음), remove
- mv (파일명.확장자) (파일명.확장자) : 폴더나 파일의 이름을 변경함, move
- mv (파일명.확장자) (디렉토리) : 폴더나 파일의 위치를 이동함, move
- cp : 폴더나 파일을 복사함. 복사 후 이름 및 경로 지정 가능, copy
- (명령어) --help 혹은 man (명령어) : 해당 명령어의 매뉴얼을 확인할 수 있음.
// 자세한 풀이 및 추가적인 명령어는 따로 정리할 것.
사용자와 관리자, 그리고 경로
>사용자와 관리자
사용자
: 우리가 일상적으로 사용하는 계정.
: PC를 켜서 바탕화면에 진입하기 위해 로그인하는 계정
: 프로그램 실행만 가능함.
관리자
: 사용자가 접근할 수 없는 영역에 접근할 수 있는 권한을 가진 계정
: 프로그램 실행, 설치, 변경, 삭제가 가능함.
>사용자와 관리자가 분리되어 있는 이유
1. 보안 강화를 위해서
: 초기 사용자와 관리자가 분리되지 않았을 시기에 해킹, 악성코드에 취약했음, 모든 정보에 접근할 수 있었기 때문
2. 프로그램 충돌을 방지하기 위해서
: 시스템 설정을 변경하는 프로그램들이 충돌날 수 있음.
>UAC, User Account Control
: 사용자 계정 컨트롤
: 사용자와 관리자를 구분하는 장치
: 여러 계정을 만들 수 있고, 각 계정의 영역은 서로 침범할 수 없다.
>절대 경로와 상대 경로
절대 경로
: 최상위 디렉토리(root)가 기준인 경로
/ : 루트폴더
상대 경로
: 현재 위치가 기준인 경로(혹은 특정 위치를 기준으로 함)
. : 현재 위치
// 예시. ls ./ : 현재 폴더의 리스트 확인
.. : 상위 폴더
// 예시1. ls ../ : 상위 폴더의 리스트 확인 // 예시2. ls ../../ : 상위 폴더의 상위 폴더 리스트 확인
>관리자(root) 권한
: 루트폴더( / )는 Linux의 관리자 영역임.
: 관리자 권한을 루트 권한이라고도 함.
: Linux 관리자의 특징은 어떠한 경우에도 일반 사용자에게 관리자 권한을 완전히 넘기지 않는 것임.
: 사용자가 관리자 권한을 필요로 하는 경우(프로그램 설치, 변경, 삭제)에만 관리자 권한을 전달함.
: Linux 관리자 권한은 해당 사용자 폴더 내에서만 자유롭게 사용 가능.
>sudo: 관리자 권한을 획득하는 명령어
: 일시적으로 관리자 권한을 획득하는 명령어.
: 기본 명령어 앞에 sudo를 붙이면 사용가능.
//예시. sudo mkdir folder
//folder의 소유자는 root로 출력됨. 즉, 관리자 권한으로 생성됐다는 뜻.
패키지와 패키지 매니저
>패키지
: 포장된 상품(패키지 매니저=온라인 쇼핑몰)
: 압축 파일이다.
>패키지 구성
- 프로그램 파일
- 프로그램 설치 파일
- 프로그램 설치 설명서
- 프로그램에 대한 정보를 담은 파일
+ 추가 설명(4. 프로그램에 대한 정보를 담은 파일)
// 1. 프로그램 A를 설치하기 위해선 프로그램 B가 필요하다.
// 2. 위의 정보를 토대로 프로그램 B를 먼저 설치하고 프로그램 A를 설치함.
// 3. 이런 것을 편하게 자동으로 해주는게 패키지 매니저
>패키지 매니저
: 온라인 쇼핑몰 혹은 앱 스토어 같은 느낌
: 모든 패키지의 저장소 위치를 저장하고 있음.
: 특정 프로그램 설치를 요청하면 저장된 위치에서 패키지를 다운로드하고, 설치 프로그램을 실행함.
: 프로그램의 업데이트, 프로그램의 제거에도 사용.
>apt 패키지 매니저
: 우분투 기본 내장 패키지 매니저
: apt를 이용한 명령어를 이용하여 패키지 매니저를 사용할 수 있다.
: 일부 명령어는 관리자 접근 권한이 필요하다.
//터미널에 'apt'를 입력하여 설명서 읽기.
//다양한 패키지를 다운받아 사용해보면서 익히기.
READ, WRITE, EXECUTE
>directory & file
: 맨 앞자리가 d(directory)이면 폴더
: 맨 앞자리가 -(not directory)이면 파일
>user
: 소유자를 의미함.
: 기본적으로 파일이나 폴더를 만든 사람.
>group
: 일정 user를 group에 추가하고 권한을 제공.
: 특정 user에게만 권한을 제공하기 위한 방법.
>other
: 파일에 대한 액세스 권한이 있는 다른 user.
: 해당 파일이나 폴더를 만들지 않은 모든 user를 의미함.
: other 권한은 global 권한이라고 표현하기도 함.
>r, w, x
r: read permission, 읽기 권한
w: write permission, 쓰기 권한
x: execute permission, 실행 권한
chmod
>명령어 의미
: 권한을 변경하는 명령어
: Read, Write, Execute 권한을 변경할 수 있음.
>조건
: OS에 로그인한 사용자와 폴더 및 파일의 소유자가 같은 경우에 해당 명령어를 사용할 수 있음.
>방식
-Symbolic method
: 더하기(+), 빼기(-), 할당(=), 액세서(accessor) 유형을 표기하여 변경하는 방법
: 액세스 클래스, 연산자, 액세스 타입으로 파일의 권한을 변경함. (표 참고, 액세스 타입에 공백을 두면 모든 권한 제거)
: (액세스 클래스)(연산자)(액세스 타입) (폴더 및 파일명)
//정해진 문자로 현재 권한 상태를 기준으로 변경하는 상대적인 변경 방법
-Absolute form
: rwx를 3 bit로 해석하여 숫자 3자리로 권한을 표기해서 변경하는 방법
: Read(r) = 4, Write(w) = 2, Execute(x) = 1
: 0부터 7까지의 숫자로 각 액세스 클래스의 권한들을 표현함.
: 숫자의 의미는 r, w, e 각 권한의 합이다. (표 참고)
//정해진 숫자로 현재 권한 상태와 상관 없이 변경하는 절대적인 변경 방법
//개인적으론 absolute form이 편해보인다.
환경변수
>개요
: Linux 기반의 운영체제에는 시스템 자체에 전역변수를 설정할 수 있다.
: 시스템에 설정한 전역변수를 환경변수라고 한다.
>정의
: 프로그램의 동작에 영향을 미치는 값들
: 프로그램이 정상적으로 동작할 수 있도록 설정하는 환경.
>Windows 환경변수 설정
: Windows 환경변수는 영구적으로만 설정이 가능함.
User에 대한 사용자 변수
: 특정 사용자만 사용할 수 있는 지역 환경변수
시스템 변수
: 모든 사용자가 사용할 수 있는 전역 환경변수
// 이번 공부는 첫 공부 때 너무 어렵게 느껴져서 두번, 세번 공부했다...
// 정의와 종류 등을 아는 것도 중요하지만 이것 저것 다뤄보면서 손에 익게 만들자!
'코드스테이츠_국비교육 > [Section1]' 카테고리의 다른 글
08_Java의 기초.part(java, 변수, 타입, 문자열, 연산자, 콘솔 입출력)_22.08.30 (0) | 2022.08.30 |
---|---|
07_Git의 기초_22.08.29 (0) | 2022.08.30 |
05_Mock-up(첫 페어 프로그래밍)_22.08.25 (0) | 2022.08.25 |
04_페이지 레이아웃과 와이어 프레임_22.08.24 (0) | 2022.08.24 |
03_HTML과 CSS(CSS편)_22.08.23 (0) | 2022.08.24 |