
command line
why *NIX(LINUX/UNIX) ?
USEFUL COMMAND
[ls] : 파일 보기. 현재 위치한 속성 파일을 볼 수 있다
[cd] : 디렉토리로 이동하기
디렉토리로 이동하는 방법
[cd ~] : 홈 디렉토리로 이동 (현재 사용자의 개인화 파일들이 있는 디렉토리를 의미)
[cd /] : 루트 디렉토리로 이동 (시스템의 최상위 디렉토리를 의미)
[cd .] : 현재 디렉토리로 이동
[cd ..] : 부모 디렉토리로 이동
[pwd] : 현재 디렉토리 위치 확인
주요 명령어 모음
유의할 명령어 rm : 이 명령어는 삭제 전 확인이 없으며, 한번 삭제된 파일은 복구할 수가 없다. 신중히 써야할 명령어.
관리자 권한으로 실행하기
✦ sudo ✦
- 관리자만 읽을 수 있는 파일 읽기
- 새로운 프로그램 설치 (Ubuntu Linux)
- Notes ; 새로운 프로그램 설치 시에 Package Manager 를 이용하는 것이 보편적이다.
- sudo 는 권한 문제를 해결하는 솔루션이 아님. 그러므로 필요에 따라 현명하게 사용할 것. (가능한 user 권한으로 해결할 수 있어야 함)
- sudo 는 한번만 인증하면 그 이후는 생략한다.
✦ ls -al 명령어로 표기되는 상세내용 ✦
- 접근 권한(읽기/쓰기/실행가능) 여부 확인이 가능함 (chmod 명령어 쓰기)
- 링크된 파일 갯수
- 소유자
- 소유그룹
- 파일 크기
- 만든 날짜
- 만든 시간
- 파일/디렉토리 name
✦ 파일 소유권을 변경하는 명령어 ✦
[chown owner : group file]
✦ GUI 프로그램의 실행을 더 간편하게 할 때 쓰는 명령어 ✦
✦ 자주 사용하게 될 CLI 프로그램 ✦
- 버전 관리 시스템인 Git
- package Manager (프로그램 추가 / 삭제 할 때)
- Ubuntu : apt
- MacOs : homebrew
- Windows : chocolatey
- 텍스트 에디터인 vim
- 클라우드 서비스 관리 AWS CLI
✦ 버전 관리 시스템 ✦
why use version control?
- strong versions
- Restoring Previous Versions
- Understanding what happend
- Collaboration
- Backup
: 각각의 버전을 저장하고 다시 되돌릴 수 있다. 이 과정에서 자동으로 저장이 된다, (자동 백업 기능) 또한 어떤 변경사항이 있었는지도 확인 가능하다. 즉, 어떤 파일이 어떻게 바뀌었는지 설명하는 게 가능해진다.
✦ Git ✦
- Version Control System 을 의미한다
- github : social platform for git users.
즉, 다른 사람들이 나의 코드를 보고 의견을 주고 받기가 가능해진다, 개발자들의 소셜 네트워크를 말한다.- 유명 오픈 소스에는 github가 항상 존재한다.
✦ Features ✦
- Branching & Merging
- Distributed (분산 시스템)
- Data Assurance (데이터 보증)
- Staging Area
✦ Git Workflow ✦
- key terms
- Staging Area : 이전에 충돌을 해결하거나 선택적으로 버전 관리를 받게 하기 위해 만들어졌다. 어떤 파일 혹은 디렉토리를 버전 컨트롤 시스템Version Control System 에 의해 버전관리를 받게끔 하려면 반드시 Staging Area 에 올려야 한다.
~ 기억해야 할 git 용어 정리 ~
✦ Staging Area ✦
ex) git commit -m "Add headline to index page"
커밋 메세지를 잘 적어주면
1. 변경사항을 파악하기가 쉽고,
2. 다른 사람들과 효과적으로 작업할 수 있으며
3. 작업 기록을 추적하는데 유리하다.
✦ Repository ✦
기록과 작업 기록을 모두 포함하고 있는 개념을 말한다.
✦ Branching & Merging ✦
가지를 치는 것을 Branching
가지를 합치는 것을 Merging
✦ 꼭 기억해야 하는 Branch ✦
master : 사용자들이 버그 없는 프로그램을 사용하게 될 소스 코드
develop : 개발 중인 버전의 소스 코드 (충분한 테스트와 버그를 잡는 것이 중요함)
feature : 하나 하나의 기능들을 담고 있는 소스 코드
A. Repository 예시
B. Repository 예시 : 필요에 따라서 branch를 추가할 수도 있다.
Distributed : 분산 시스템