Command-Line Interface
CLI와 GUI의 차이
- CLI란?명령줄 인터페이스(CLI)는 Command-Line Interface 또는 Character User Interface의 줄임말로 글자를 입력하여 컴퓨터에 명령을 내리는 방식이다.
- GUI란?Graphical User Interface의 약자. 현대 운영 체제는 물론이고 온갖 게임이나 유틸리티 등에서도 모두 이용되고 있다.
리눅스의 터미널은 키보드의 입력과 모니터의 출력으로 모든 작업을 할 수 있다.
리눅스의 터미널은 GUI가 개발되기 이전부터 컴퓨터를 조작하기 위해 사용되었기 때문에 GUI가 할 수 있는 모든 작업은 CLI로 할 수 있다.
수많은 서버컴퓨터 마다 I/O소스를 부착하는 일은 불가능에 가깝다.
Linux 환경에서 CLI를 이용하는 방법은 개발자가 되기를 원하는 사람이라면 반드시 학습 📖 필요!
학습 목표
- 리눅스 터미널을 실행할 수 있다.
- CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.
- 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
- 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.
- 관리자 권한을 이해할 수 있다.
- 절대 경로와 상대 경로의 차이를 이해할 수 있다.
- 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.
CLI
프롬포트(Prompt)
- 터미널에서 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
- 명령어 실행시 Enter키를 누르면 된다.
pwd(print working directory)
- 현재 위치 확인
mkdir(make directories)
- 새로운 폴더 생성
- mkdir은 생성할 폴더의 이름과 함께 입력해야 한다.
mkdir helloWorld
helloWorld라는 이름의 폴더를 생성하라고 컴퓨터에게 명령 전달
ls(list)
- 특정 폴더에 포함된 파일이나 폴더의 리스트 출력
- 명령어 ls를 이용해 명령어 mkdir을 통해 생성한 helloWorld 폴더 확인 가능ls
- ls의 옵션 l과 a
cli에서 특정 명령어의 옵션을 사용하는 경우 -를 이용해 옵션을 입력했다고 컴퓨터에 전달한다.
- ls -l
: 옵션 l은 폴더나 파일의 포맷을 전부 표현하라는 의미- ls -a
: 옵션 a는 "all"이라는 의미, 숨겨진 폴더나 파일 등의 모든 항목을 터미널에 출력
하나의 파일 또는 하나의 폴더는 한 줄에 출력된다.
가장 왼쪽에 출력 되는 두 글자 d는 폴더, -는 파일을 의미한다.
(폴더는 cd를 통해 진입 가능하다.)- ls -al 또는 ls -la
명령어를 이용해 폴더를 GUI의 탐색기로 실행하기
- Ubuntu
- nautilus .
- macOS
- open .
cd(change directory)
- 폴더에 진입하기
touch
- 파일 생성하기ex) touch hi.txt
-> touch 명령어로 파일 hi를 생성한다.
cat
- 파일의 내용을 터미널에 출력하기
rm
- 폴더나 파일 삭제
- rm으로 삭제시 휴지통을 거치지 않고 삭제 된다.rm은 단일 파일을 삭제 할 수 있다. 폴더를 삭제하려면 옵션을 이용해야한다
- 옵션 r : recursive, 폴더를 지울 때 사용
- 옵션 f : force, 질문을 받지 않고 지울 때 사용
주로 두 옵션을 이용하여 삭제한다. rm -rf
mv(move)
- 폴더나 파일의 이름을 변경, 또는 폴더나 파일의 위치 변경mv bye.txt bye/
bye.txt 파일을 bye 폴더 안으로 이동시킨다. - mv [폴더나 파일의 이름][도착 폴더의 이름]
- mv [변경할 폴더나 파일의 이름][변경하고자 하는 폴더나 파일의 이름]
cp(copy)
- 폴더나 파일을 복사
- cp [원본 파일 이름][복사할 파일 이름]폴더를 복사하려면 옵션을 이용해야한다
- 옵션 r : recursive, 폴더를 복사할 때 사용
- 옵션 f : force, 질문을 받지 않을 때 사용
주로 두 옵션을 이용하여 삭제한다. cp -rf
절대경로와 상대경로
절대경로
ex) /Users/[username]/helloWorld/hello/
폴더 진입 과정을 한 줄로 줄여놓은 구문이 절대 경로이다.
상대경로
특정 폴더 또는 파일의 위치를 현재 위치를 기준점으로 나타낸다.
. : 현재 위치한 폴더
.. : 상위 폴더
/ : 폴더 내부
./ : 현재 폴더 아래의
ex)
./hi : 현재 폴더 아래의 폴더 hi
관리자 권한
절대 경로의 기준점인 루트 폴더 /는 Linux의 관리자 영역이다.
루트 폴더는 관리자의 영역이기 때문에 사용자 권한으로 할 수 있는 일은 없다
sudo
- 관리자 권한을 획득하는 명령어
- sudo를 이용하여 생성한 폴더의 소유자는 root이다.
brew 명령어
brew 자체 업데이트: brew update
업데이트 필요한 파일 조회: brew outdated
프로그램 업그레이드(업데이트): brew upgrade 프로그램 이름
프로그램 검색: brew search 검색어
프로그램 정보 확인: brew info 프로그램 이름
프로그램 설치: brew install 프로그램 이름
프로그램 삭제: brew uninstall 프로그램 이름
설치된 프로그램 보기: brew list
프로그램 설치
오늘 node.js, nvm, npm을 설치하였다.
npm을 설치하다 오류가 발생하였다. node_modules 폴더가 생성이 되지 않았기 때문이다.
검색하니 다음과 같은 해결책이 나와 해결하였다.
npm 설치 오류
문제점 : node_modules 폴더 생기지 않음
- 프로젝트 최상단 디렉토리로 이동
- npm init 을 통해서 package.json 을 생성
- npm install express 를 통해서 설치
npm과 package.json
: 협업을 위해 어떤 모듈을 사용하고 있는지 알려주는 안내서, 메타정보를 담고 있다.
npm init 명령어를 입력하면 새로운 package.json을 생성할 수 있다.
package.json에서 중요한 점
- devDependencies
key : 모듈 이름
value : 버전
프로젝트를 개발하는 환경에서 필요한 모듈을 알려준다.
--save-dev 을 사용하여 모듈 추가시 자동으로 devDependencies에 추가됩니다. - dependencies
devDependencies와는 다르게, 이 프로젝트가 돌아가기 위해 반드시 필요한 모듈이 적혀있다.
--save을 사용하여 모듈 추가시 자동으로 dependencies에 추가됩니다. - scripts
CLI에서 사용 가능한 명령을 기술한다.
CLI에서 실행할 때에는 "npm run <스크립트 이름>"으로 실행한다.
작업 내용실행 스크립트
node.js 앱 실행 | npm run start |
테스트 실행 | npm run test |
코드 검사 | npm run lint |
Git
Git과 Github의 차이
- Git : 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템.
- Github : Git Repository를 관리할 수 있는 클라우드 기반 서비스.
Code Review 등을 통해 협업이 가능하다.
즉, Git으로 버전을 관리하는 폴더에 대해서 Github를 통해 여러 사람들이 공유하고 접근할 수 있다.
Git 용어
Git repository : Git으로 관리 되는 폴더. Remote Repository와 Local Repository 두 종류의 저장소를 제공한다.
- Local Repository에서 작업 할 수 있으며 다른사람들이 올려놓은 소스 코드를 내 Local로 가져올 수 있다.
- Remote Repository에 업로드하여 내가 작업한 코드를 공유할 수 있다.
Fork : 다른 사람의 코드에 contribute 하기 위해서 내 Remote로 소스를 가져오는 작업을 말한다.
Clone : Fork한 코드를 수정하기 위해 내 컴퓨터로 가져오는 작업
Push : 코드 변경 작업을 완료 후 변경된 내용을 Commit을 통해 저장해준 후 Remote Repository에 반대로 올려주는 작업
Pull request : 내가 제안한 코드 변경사항에 대해 반영 여부 요청
Pull : Remote Repository에서 변경 사항이 있을 때 Local Repository로 가져오는 작업
'🐹 TIL > Daily' 카테고리의 다른 글
[코드스테이츠/12DAY] Unit8 - [JavaScript] 객체 (0) | 2023.03.10 |
---|---|
[코드스테이츠/11DAY] Unit8 - [JavaScript] 배열 (0) | 2023.03.10 |
[코드스테이츠/9DAY] Unit6 - 간단한 웹앱 만들기 (0) | 2023.03.10 |
[코드스테이츠/8DAY] Unit5 - [JavaScript] 기초 // 조건문 반복문 (0) | 2023.03.10 |
[코드스테이츠/7DAY] 일상 (0) | 2023.03.10 |