[CS] Linux & Terminal (Git bash)

zhflsdl보보·2022년 10월 25일
1

CS

목록 보기
2/3

Linux : 프로그램이 배포되고 동작하게 하는 서버
Terminal : Linux 서버에 명령어를 전달하는 수단

GUI vs CLI

GUI (Graphic User Interface)

  • 사용자가 그래픽을 통해 컴퓨터와 소통하는 방식
  • 그림이나 아이콘을 통해 소통
  • 키보드, 마우스 모두 사용 가능
  • 윈도우

CLI (Command Line Interface) 명령어 라인 인터페이스

  • 컴퓨터가 글자의 입출력을 통해 컴퓨터와 소통하는 방식
  • ex) 윈도우의 cmd, 맥의 terminal, 리눅스의 terminal
  • 키보드, 명령어 사용 가능
  • 윈도우의 cmd 창

리눅스 구조

1) 커널?

컴퓨터는 하드웨어소프트웨어로 구분된다.
하드웨어는 눈으로 보이고 만질 수 있는 물리적인 장치를 의미하고,
소프트웨어는 반대로 눈으로 보이지않고 만질 수 없는 요소들이다.

소프트웨어는 응용 프로그램(MS Office, 웹 브라우저)과 운영체제(윈도우, 우분투)로 구분된다.

운영체제는 다시 커널시스템 프로그램으로 구분된다.

'커널'은 운영체제의 핵심 기능을 하며 컴퓨터 자원들을 관리하는 역할을 한다.
그러나 사용자와의 상호작용은 하지 않으므로 이를 위해 시스템 프로그램이 필요하다.

따라서 운영체제는 커널과 시스템 프로그램을 함께 제공한다.

대표적인 시스템 프로그램에는 쉘(Shell) 이라는 명령어 해석기가 있다.
쉘은 사용자가 컴퓨터에게 전달하는 명령을 해석하는 프로그램으로 사용자와의 상호작용을 가능하게 한다.


커널은 가장 큰 역할은 컴퓨터의 물리적 자원과 추상화 자원을 관리하는 것이다. 이러한 자원들을 관리하는 이유는 사용자가 하드웨어에 접근하고 사용할 수 있도록 매개하기 위해서이다. 컴퓨터만의 언어와 규칙으로 통신해야 하는데 사용자들은 이러한 규칙과 언어에 대해 모르므로 커널은 "번역가" 같은 역할을 하는 것이다.

추상화란? 하드웨어를 여러 사용자들이 번갈아 사용하게 중재함으로서 마치 한 개의 하드웨어가 여러개인 것처럼 보여지도록 하는 기술
추상화된 환경에서 사용자들은 하나의 하드웨어를 독점하여 활용하는 것처럼 느끼게 된다. 또한 커널은 하나의 하드웨어 자원을 여러 사용자들을 위한 복수개의 추상화된 객체로 관리한다.

핵심 개념

1) FHS (Filesystem Hierarchy Standard)

1-1) root (/)

  • 루트 폴더, 최상위 경로, / 기호로 접근한다.

1-2) /home

  • 유저의 공간, 가장 빈번하게 사용되는 경로, home으로 이동시 사용
    ~ 기호로 바로 접근 가능

1-3) /bin & /sbin

  • Binary의 약자로 OS의 최소한의 구동을 위해 필요한 프로그램이 들어있는 폴더.
    cat, chmod, chown, cp, date, echo, kill, in, is, mkdir, etx 등이 들어있다.
  • /sbin 은 /bin과 유사하지만 오직 루트유저 전용 프로그램이 포함된다.

1-4) .usr

  • user 약자, 각 유저 이름에 해당하는 폴더 이름이 존재.

2) PATH

  • / : root 디렉토리
  • ~ : home 디렉토리
  • 절대경로 : 경로를 표현하는 방식이 root 디렉토리부터 시작. /home/desktop/wecode
  • 상대경로 : 현재 자신의 위치를 기반으로 움직임. cd, . : 현재경로, .. : 상위 경로
  • 환경변수 : env 명령어로 환경변수 확인 가능.
  • $PATH : 터미널에서 사용하는 명령어의 경로
PATH=/Users/apple/miniconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

3) Configs


리눅스 명령어

1) cd

폴더 이동 cd, cd ../ - 이전 폴더 (상위경로)로 이동, cd . - 현재경로 cd /usr

2) ls

현재 경로 내 파일 목록 출력

3) pwd

현재 경로(위치) 출력, print working directory

4) mkdir/ rkdir

디렉토리 생성/ 제거, make directory

5) rm

파일/ 디렉토리 제거 rm -rf/* - 디렉토리 안의 모든 파일 삭제 !사용하지 않도록 주의!

6) touch

파일 생성 touch readme.md

7) vi

리눅스 안의 visual studio 같은 에디터

i - 파일 수정 가능 esc - 단축키 입력 가능
vi 나갈 때는 :q - 그냥 나감, :wq - 저장하고 나감

ref
ref2

profile
매일매일 성장하는 개발자

1개의 댓글

comment-user-thumbnail
2022년 10월 25일

좋은 지식 감사합니다~

답글 달기