ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Linux & Terminal
    Server/기타 2022. 10. 28. 15:22

    Linux & Terminal

    1. 운영체제

    • OS의 역할? 유저와 컴퓨터를 연결시켜준다.

    사람과 기계 사이의 통역관! 컴퓨터는 생각보다 멍청하다. 0과 1밖에몰라 근데 계산은 되게 잘해.

    그래서 0과 1 밖에 모르는 컴퓨터가 알아들을 수 있게 사용자의 명령을 OS가 변환해준다. 이건 OS의 부분적인 역할이고 OS는 컴퓨터의 자원관리도 해주고, 자원 보호까지 해준다. 그리고 효율적으로 컴퓨터를 사용할 수 있게끔 인증도 해준다.

    1.1 커널과 쉘

    사용자 ↔ 쉘 ↔ 커널 ↔ 하드웨어

     

    터미널을 실행하면 뜨는 화면이 쉘이다. 쉘에는 여러가지가 있다 bash, zsh 근데 요새는 zsh를 많이 쓴다. 쉘은 사용자 입장에서 컴퓨터에게 명령을 내리는 곳이다.

    그 명령을 커널이 가져다가 하드웨어에 전달을 해주고 하드웨어는 그 명령을 실행하고 그 결과를 커널→쉘을 통해서 우리가 볼 수 있는 것이다.

    커널은 하드웨어와 관련되어 있는곳, 직접적으로 하드웨어를 제어하는 곳이다. 윈도우에 새로운 장치를 연결하거나 할 때 드라이버가 설치가 되는데 드라이브가 설치되면 커널이 그 드라이브를 이용해서 내가 설치한 외부 하드웨어와 내 컴퓨터를 이어준다. 그리고 이 커널이 컴퓨터의 프로세스 관리, 자원 관리를 한다.

    그래서 모든 OS의 중심이 바로 이 커널이다.

    1.2 Linux

    • why 쓸까? : 오픈소스라 누구나 자유롭게 확인, 수정, 배포할 수 있는 코드이다.
    • linux 종류 : ubuntu, CentOS, Red Hat, android → 이런 것들을 배포판이라 한다.
    • 근데 리눅스를 처음 만든 리눅스 토발즈는 위 배포판을 만든 것이 아니라 커널을 만든 것이다. 그 이후 많은 개발자들이 커널에 여러 용용 프로그램을 붙여서 배포판을 만들어서 배포한 것이다.
    • 이 아저씨가 Git도 만들었다. Git은 버전관리 툴이다.
    • 리눅스는 아래 두 가지로 구성되어 있다.
      • CLI(Command Line Interface) vs GUI(Grapic User Interface)
      • 근데 우리는 CLI를 쓸 것이다 왜냐,
      • 과거에는 내가 만든 프로그램을 공개용 서버 컴퓨터가 있었고 그것을 공개해서 사람들이 쓸 수 있게 했다. 지금은 클라우드 서버들을 사용하지.
      • 그래서 보통 내 컴퓨터를 다른 컴퓨터와 연결시킬 때 터미널과 터미널로 연결시킨다. 그리고 서버 컴퓨터는 대부분 모니터가 없다. 즉, GUI를 이용할 수 없다.
      • 또한 AWS등 SaaS를 쓸 때도 GUI를 활용할 수 없다.
      • 따라서 CLI를 알고 있어야 배포할 수 있다.

    1.3 Linux의 기본 개념

    • 파일 구조!!! : 리눅스의 모든 명령어는 파일 기준으로 명령어를 실행 시킨다. 그래서 이 구조를 잘 알아야 한다.

    디렉토리 = 폴더

    cd 뒤에 파일명을 쓰는데, 그건 엄밀히 말하면 파일의 경로이다!

    2. 터미널 명령어

    출처 : https://nam-ki-bok.github.io/backend/Backend_6/

    다양한 명령어들이 있는데 이 중에서 아주 기초적인 명령어를 정리해봤다.

    $ pwd

    Print Working Directory 로 현재 자신이 있는 디렉토리를 표시한다.

    $ cd + [경로명]

    Change Directory 로 가고자 하는 디렉토리로 이동 할 수 있다.

    • $ cd / : 루트 디렉토리로 이동한다.
    • $ cd ~ : 홈 디렉토리로 이동한다.
    • $ cd ~/Desktop : 데스크탑으로 이동한다.
    • $ cd .. : 부모 디렉토리로 이동한다.$ cd k/p/pr 만 입력 한 뒤 Tab 을 누르면 다음과 같이 경로가 자동으로 완성된다.
    • cd 명령을 사용 하는 경우에 zsh 의 자동완성 기능이 아주 많은 도움을 준다. 가고자 하는 디렉토리의 일부만 입력해도 자동으로 완성 해 준다.

    $ ls + [옵션명] + [경로명]

    List Segment 로 경로의 구성요소를 보여준다.

    • $ ls : 현재 경로의 하위 파일 / 디렉토리를 보여준다.
    • $ ls -l : 현재 경로의 하위 파일 / 디렉토리의 자세한 정보 (사용권한, 소유자, 그룹, 크기, 날짜) 를 보여준다.
    • $ ls -la : 숨김 파일까지 모두 보여준다.
    • $ ls -l 경로명 : 해당 경로의 하위 파일 / 디렉토리를 보여준다.

    $ cp [원본파일] [대상파일] / $ mv [원본파일] [대상파일]

    • $ cp ~/Test/testFile ~/Test2/
    • Test 폴더에 있던 testFile 이 Test2 디렉토리에 복사된다.
    • $ mv ~/Test/testFile ~/Test2/모두 파일 대상 명령어이기 때문에 디렉토리를 다루고 싶다면 명령어 뒤에 -r 을 붙여 사용하면 된다.
    • Test 폴더에 있던 testFile 이 Test2 디렉토리로 이동된다.

    $ touch / $ mkdir

    • $ touch ~/Test/testFile
    • Test 디렉토리에 testFile 의 이름을 가진 빈 파일을 생성한다.
    • $ mkdir ~/Test/test
    • Test 디렉토리에 test 의 이름을 가진 빈 디렉토리를 생성한다.

    $ rm

    • $ rm ~/Test/testFile
    • Test 디렉토리에 있는 testFile 을 삭제한다.
    • $ rm -rf ~/Test/디렉토리를 삭제하고 싶다면 $ rmdir 명령어를 사용해도 가능하다.$ rm -rf 명령을 사용하면 디렉토리가 없는 경우 아무 일도 일어나지 않는다.
    • 또 $ rm -r 명령을 사용하면 삭제하고자 하는 디렉토리가 없는 경우 에러메시지가 출력 되지만
    • Test 디렉토리를 삭제한다.

    댓글