- UNIX라는 os가 AT&T 데니스 리치, 켄 톰슨이 개발을 해서 지배적으로 있을 당시 미국 내 히피문화가 활성화되고, 오픈 소프트웨어의 자유성을 확보하고자 했으나 UNIX는 여러가지 제한사항으로 하지 못했음
- 리차드 스톨먼이 오픈 소프트웨어 자유성 확보를 위해 GNU프로젝트를 하면서 오픈 소프트웨어를 만들기 시작했음.
- 그러나 GNU프로젝트에는 커널이 없다는 치명적 문제가 있었음
- Kernel이란, 하드웨어와 응용프로그램을 이어주는 운영체제의 핵심 시스템소프트웨어이다.
- 리누스 토발즈가 작성한 커널 혹은 GNU 프로젝트의 라이브러리와 도구가 포함된 운영체제
- pc와 모바일, 서버, 임베디드 시스템 등 다양한 분야에서 활용됨 (ex. 안드로이드)
- 운영체제의 커널과 사용자를 이어주는 소프트웨어
csh : 버클리의 Bill Joy가 작성한 유닉스 쉘
bash : 다양한 운영체제에서 기본 쉘로 채택
zsh : 현재까지 가장 완벽한 쉘
- 유저인터페이스
CLI기반의 쉘 vs GUI기반의 쉘
CLI(Command Line Interface) : 마우스 없이 커맨드 혹은 터미널로만 작업가능
GUI(Grapgical User Interface) : 그래픽을 활용하여, 마우스로 클릭,드래그 등으로 작업가능
- 쉘 앞에 $ 혹은 % 표시가 있으면 준비가 되어있다는 뜻
- ~ 표시는 유저폴더를 뜻하고, 특별한 권한을 갖지 않고도 특정 일을 수행할 수 있음.
hyeonbyeongtaeg@hyeonbyeongtaegs-MacBook-Air ~ %
왜 터미널을 활용해야하는가?
커맨드, 터미널을 잘 활용할 줄 알아야 나중에 서버에서 데이터를 끌어오는 등의 전문적인 작업을 할 때 더 능숙하게 활용할 수 있다.
초반에 힘들더라도 터미널로 하는 연습을 꾸준히 해야한다.
ls // list segment로 현재 리스트를 볼 수 있음
ls - a // 숨김 파일도 보고 싶을 때 사용
ls - l // 상세정보 보기
cd Ducments/ // change directory의 줄임말. 다큐먼트 디렉토리로 이동
cd .. // 상위 디렉토리로 이동
cd . // 현재 디렉토리로 이동
cd // 최상단 디렉토리로 이동
mkdir 파일명 // '파일명'이라는 새로운 디렉토리 만들기
touch 파일명 // 새로운 파일 만들기. 디렉토리 만드는 것과 다름
touch 파일명 && touch 파일명 // 여러개 파일 만들때
mv 파일명 폴더명
mv style.css src
mv ../server.js ./ // 이렇게 입력하면 상위폴더의 파일인 server.js를 현재 폴더로 옮긴다.
mv ../server.* ./ // 애스터리스크*를 이용하면 server가 들어간 모든 것을 지운다는 뜻
cp 파일명 폴더명 // 파일을 해당 폴더에 복사함
cp 파일명 ./파일이름명 // 파일을 현재 폴더에 복사함
mv ../server.* ./
rm -r 파일명
rm -rf 파일명
sudo rm -rf 파일명
mv 파일명 변경명
ex) mv hello.md bye.md
vim 파일명
vi 파일명
cat learn-markdown.md
vcs 버전 컨트롤 시스템 다른 말로는 == 소스 코드 매니지먼트 SCM
(source code management)
주의! 프로그래밍 전반을 관리하는 형상관리로서의 SCM
(software configuration management)과 다르다.
우리의 소스코드를 사진을 찍는다고 생각하면?
- blob : 파일 하나의 내용에 대한 정보
- tree : blob이나 subtree의 메타데이터(디렉토리 위치,속성, 이름 등)
- commit : 커밋 순간의 스냅샷
왜 GitHub의 메인브랜치는 main인가?
Git의 흐름
Git은 각각의 작업단위가 중요하다!
- git을 활용할 때는 각각의 작업단위를 나누는 것이 중요함. commit을 할 때는 독립적인 작업단위에 대한 고민을 해야함. 작업단위들이 잘 못 구분이 되면 그 파일이 히스토리가 남기기 어려워짐
- commit의 제목은 commit을 설명하는 하나의 구나 절로 완성
- Importance of Capitalize
- prefix(앞머리)를 꼭 달아주기
- feat : 기능 개발 관련
- fix : 오류 개선 혹은 버그 패치 (아예 고장난 상태
- docs : 문서화 작업
- refactor : Refactor user classes (개선하는 것. 코드 품질의 개선을 가져왔다)
npm install -g hexo-cli
git clone <깃헙내의 깃 주소>
hexo init <폴더명>
cd <폴더명>
npm install
hexo generate
hexo server
hexo new post "파일이름"
hexo server
hexo clean && hexo generate
vi \_config.yml
npm install hexo-deployer-git --save
vi \_config.yml
hexo clean && hexo generate
hexo deploy