22.03.28-TIL

조은지·2022년 4월 1일
0
post-thumbnail

Kernel

  • 하드웨어와 응용프로그램을 이어주는 운영체제의 핵심 시스템 소프트웨어
  • CLI(마우스 사용X) <-> GUI(마우스 사용O)

Shell

  • 운영체제의 커널과 사용자를 이어주는 소프트웨어
  • sh: AT&T Bell 연구소의 Steve Bourne이 작성한 유닉스 쉘
  • csh: 버클리의 Bill Joy가 작성한 유닉스 쉘
  • bash: Brian Fox가 작성한 유닉스 쉘
    - 다양한 운영체제에서 기본 쉘로 채택
  • zsh: Paul Falstad가 작성한 유닉스 쉘
    - sh 확장형 쉘
    - 현재까지 가장 완벽한 쉘

명령어

- git명령어 참고자료

#위치 및 이동(change directory)
  • $ cd [디렉토리명]: 해당 디렉토리로 이동
  • $ cd ~: 홈 디렉토리로 이동
    cf) -~ : (최상위폴더)
    - .. : (상위 폴더)
    - . : (현재 디렉토리)
  • $ pwd :현재 위치 출력(print working directory)
  • $ ls :리스트 나열(현 위치에서 아래로 내려갈 수 있는 폴더 나열)
  • -(하이푼): 옵션(flag라고 함)
    cf) -는 뒤에 축약형/ --는 풀네임
    ex) $ ls -l :한줄 한줄 상세 정보 표현
    $ ls -a :모든 파일 표시(숨김까지)
    $ ls -al :모든 파일을 한줄씩 상세 정보 표현
    $ --help : 각 옵션에 대한 설명글
#생성(make, touch)
  • $ mk : 만들기(make)
  • $ mkdir [디렉토리명] : 해당 이름의 디렉토리 만들기(mkdir=make directory)
  • $ touch [파일명].[확장명] : 새 파일 만들기
    ex) $ touch intex.html
    $ touch style.css
    $ touch readme.txt
#이동(move) 및 복사(copy), 삭제(remove)
  • $ mv [파일] [디렉토리명]/ : 원하는 디렉토리 안으로 파일을 이동(move)
    ex) $ mv readme.txt practice/
    : practice폴더로 readme.txt파일 이동
    $ mv style.css ../
    : style.css를 .. 즉, 상위폴더로 이동('/' 생략 가능)
  • *(에스테리스크) : ‘모든’이라는 뜻
    ex) $ mv *.js .. : 확장명이 .js인 모든 파일을 상위폴더로 이동
  • $ cp [파일명] [디렉토리명] : 파일을 원하는 디렉토리 안에 복사(copy)
    ex) $ cp main.py practice/ : main.py를 practice폴더 안에 복사
    즉, 현재 위치에 1개 practice안에 1개가 되는 것!
  • $ rm [파일명] : 삭제하기(remove)
    ex) $ rm main.* : main이 붙은 모든 파일 삭제
  • $ rm -r [디렉토리명] : 파일이 있는 디렉토리 지우기
    - 해당 디렉토리의 하위를 다 지우고, 나와서 너 자신까지 지운다는 뜻
    내부 파일 있는 디렉토리는 바로 지우는 게 안됨!

Vim

  • 메모장과 비슷한 역할을 하며 git에서 txt를 수정할 때 사용한다.

    $ vi [파일명.확장자] : vi 편집기로 파일을 작성

  • normal mode : 첫 화면
  • insert mode : normal모드에서 'i' 누름
  • visual mode : normal모드에서 'v'누름
  • command mode : normal모드에서 콜론 ':' (shift+;) 누름
    :q =나가기
    :q! =저장하지 않고 나가기(처음 상태)
    :w =저장(write)
    :wq =저장하고 나가기
    :[숫자] = 해당 라인으로 이동 
  • $ cat [파일명] : shell 상에서 txt파일 출력

Git

  • VCS의 일환으로, 버전을 왔다갔다 할 수 있다.

  • SCM(Source Code Management)의 개념

    * VCS = 버전을 다루는 관리도구
    * SCM = Source Code Management / Software Configuration Management(형상관리)
    cf) 소스코드 SCM은 형상관리 SCM의 하위분류임
  • 소스 코드 관리

    • 소스코드 주고받기 없이 동시작업이 가능해져 생산성 증가
    • 수정내용은 commit 단위로 관리, 배포 뿐 아니라 원하는 시점으로 Checkout 가능
    • Branch를 통해 편안한 실험이 가능하며, 개발이 완료되면 Merge(병합)하여 반영
    • 인터넷이 연결되지 않아도 개발 가능
  • git GUI Clients

    git GUI
    sourcetree
    kraken
    smartGit

  • git objects

    • -Blob: 파일 하나의 내용에 대한 정보 = 수정사항?
      -Tree: Blob이나 subtree의 메타데이터(디렉토리 위치, 속성, 이름 등)
      -Commit: 커밋 순간의 스냅샷 = Blob+Tree

      ex) 사진을 찍는다
      -> 사진 속 피사체(내용) = Blob
      -> 사진 크기, 위치 등(속성) = Tree
      -> jpg 사진 파일 자체 = commit
      ex)
      1. Working directory에서 만들어진 작업물(Blob)을 $ git add 해서 자료를 추리기 위한 임시 공간인 staging area에 올려둔다.
      2. 올라온 작업물을 $ git commit해서 Local repo에 commit을 만든다.
      3. 마지막으로 $ git push해서 저장소(Remote repo)에 올린다.

        다른 예시) 이사로 비유하자면, 이사할 짐들(blob)을 주방 용품, 사무 용품, 욕실 용품 등의 박스(staging area)에 분류하고 이름 지어준 뒤(git commit) 운반하는 것(git push)
  • git =! github
    : git과 github는 다른 것이다!!!
    git은 tool / github는 웹저장소

  • git 환경 설정

    • $ git -v : git 설치 확인
      • $ git config --global user.name "[github유저네임]"
      • $ git config --global user.email "[github메일주소]"
      • $ git config --global core.editor "vim"
      • $ git config --global core.pager "cat"
      • $ git config --list : 정상 설정 확인
    • 수정이 필요할 경우, $ vi ~/.gitconfig 에서 수정 가능

0개의 댓글