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.)