22.03.28-TIL
Kernel
- 하드웨어와 응용프로그램을 이어주는 운영체제의 핵심 시스템 소프트웨어
- CLI(마우스 사용X) <-> GUI(마우스 사용O)
Shell
- 운영체제의 커널과 사용자를 이어주는 소프트웨어
- sh: AT&T Bell 연구소의 Steve Bourne이 작성한 유닉스 쉘
- csh: 버클리의 Bill Joy가 작성한 유닉스 쉘
- bash: Brian Fox가 작성한 유닉스 쉘
- 다양한 운영체제에서 기본 쉘로 채택 - zsh: Paul Falstad가 작성한 유닉스 쉘
- sh 확장형 쉘
- 현재까지 가장 완벽한 쉘
명령어
#위치 및 이동(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+Treeex) 사진을 찍는다
-> 사진 속 피사체(내용) = 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
에서 수정 가능
Author And Source
이 문제에 관하여(22.03.28-TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@iceunji/22.03.28-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)