하드웨어와 응용프로그램을 이어주는 운영체제의 핵심 시스템소프트웨어 == OS(Operating System)과 사용자 사이에서 실행되는 시스템소프트웨어
sh(Bourne shell) : AT&T Bell 연구소의 Steve Bourne이 작성한 유닉스 쉘
csh : 버클리의 bill Joy가 작성한 유닉스 쉘
bash(Bourne Again Shell) : Brian Fox가 작성한 유닉스 쉘 / 다양한 운영체제에서 기본 쉘로 채택
zsh : Paul Falstad가 작성한 유닉스 쉘 / sh 확장형 쉘 / 현재까지 가장 완벽한 쉘
$ cd (dir_name)
$ cd .. //상위 디렉터리로 이동
$ cd ../.. //상위의 상위 디렉터리로 이동
$ mkdir (new_dir_name)
$ touch (file_name)
txt 기반의 파일만 생성 후 열기 가능 (다른 확장자의 파일도 생성이 가능하나 열리지 않음)
$ mv (file_name) (new_loc)
$ mv ../(file_name) . ##상위 디렉터리 파일을 현재 위치로 이동
$ cp (file_name) (new_loc)
$ cp (file_nmae) ./(new_file_name) ##현재 위치에 다른 이름으로 복사
$ rm (file_name)
$ rm *.(file_form) ##동일할 확장자의 모든 파일 삭제
$ rm (file_name).* ##동일한 이름의 모든 파일 삭제
Delete는 물리적 삭제, Remove는 논리적 삭제에 가까움
$ rm -r (dir_name) ##디렉터리 내의 파일을 포함하여 모두 삭제
directory는 object의 개념보다는 path의 개념이 더 알맞음
$ cat (file_name)
$ vi (file_name)
normal mode : press esc on any mode
insert mode : press i on normal mode
visual mode : press v on normal mode
command mode : press : on normal mode
Git은 VCS (Version Control System) 혹은 SCM (Source Code Management)이라 할 수 있다.
단순한 구조로 속도가 빠름
분산형 저장소 지원
비선형적 개발(수 천개의 브랜치) 가능
Source Code 동시 작업이 가능해 생산성 증가
수정 내용은 commit 단위로 관리하며 배포 뿐만 아니라 원하는 시점으로 checkout 가능
새로운 기능 추가는 Branch로 개발하여 편안한 실험이 가능하며 성공적으로 개발이 완료되면 Merge하여 반영
인터넷이 연결되지 않아도 개발 가능
Blob : 파일 하나의 내용에 대한 정보
Tree : Blob이나 subtree의 metadata(dir 위치, 속성, 이름 등)
Commit : 커밋 순간의 스냅샷
Commit를 구성하는 Blob과 Tree
$ git config --global user.name "user_name"
$ git config --global user.email "user_email"
$ git config --global core.editor "vim"
$ git config --global core.pager "cat"
Github -> Settings -> Developer Settings -> Personal Access Token 순으로 클릭하여 토큰 생성 후 입력
새로운 repo를 생성하여 README.md를 수정한 다음 commit 후, push하기
$ git clone {repo address}
## Edit README.md
$ git add README.md
$ git commit
$ git push origin main
git commit 시, 제목은 commit을 설명하는 하나의 구나 절로 완성하며 prefix를 사용
feat: 기능 개발 관련
fix: 오류 개선 혹은 버그 패치
docs: 문서화 작업
test: test 관련
conf: 환경설정 관련
build: 빌드 관련
gitignore 는 git이 파일을 추적할 때, 어떤 파일이나 폴더 등을 추적하지 않도록 명시하기 위해 작성하며, 해당 문서에 작성된 리스트는 수정사항이 발생해도 git이 무시함.
LICENSE에는 MIT LICENSE, Apache License 2.0, GNU General Public License v3.0가 존재함.
분기점을 생성하여 독립적으로 코드를 변경할 수 있도록 도와주는 모델
$ git branch ##현재 branch 확인
$ git branch (new_branch_name) ##새로운 branch 생성
$ git switch (new_branch_name) ##branch 변환(check_out)
$ git branch
$ git switch main ##branch의 default == main
$ git merge (new_branch_name) ##branch 병합
$ git branch -D (new_branch_name) ##branch 삭제