Command-Line Interface
I/O
input output
컴퓨터 조작을 위한 입력과 출력을 의미
텍스트로 컴퓨터와 소통하는 인터페이스
CLI 명령줄 대기모드, 터미널화면에 글자가 입력되는 줄 공간
pwd
print working directory
현재위치 확인
mkdir
새로운 폴더 생성하기mkdir helloWorld //helloWorld라는 폴더 생성
ls
list
특정 폴더에 포함된 파일이나 폴더 확인하기ls -l : 폴더, 파일 포멧을 전부 표시 ls -a : 모든 항목 표시(숨긴 파일,폴더 포함) ls -al 또는 ls -la /* - dash는 특정 옵션 상용을 의미, 순서X : -la 와 -al은 같은 기능 drwxr-xr-x : 폴더 -> cd를 통해 폴더는 진입 가능 -rw-r--r-- : 파일 */
open
현재 위치 GUI로 열기open .
cd
change directory
폴더로 이동ls cd helloWorld pwd /* 현재 위치의 폴더 확인 후, 하위폴더 helloWorld로 이동, 현재위치 확인 */
touch
파일 생성touch hello.txt /* touch <file_name> 공백은 \(백슬래시)를 사용하여 표시 */cat
파일의 내용 출력(실행보다는 내용 확인 용도)cat hello.txt cat text1.txt text2.txt text3.txt /* cat <file_name> 한번에 여러파일 출력 가능 */cf. 폴더나 파일 이름의 공백은
\백슬러시를 사용하여 표기
rm
remove
휴지통으로 이동 없이 바로 폴더나 파일 제거rm -rf bye rm bye.txt /* bye는 폴더 : 폴더를 삭제할때는 -rf옵션 필요 recursive, force bye.txt는 파일 */
mv
move
폴더나 파일을 이동하거나 이름을 변경
cf. 파일 복사하여 이동할 폴더에 저장 후 원래 위치의 파일 제거하는 과정은 같음mv bye.txt bye/ /* bye.txt를 bye폴더로 이동 mv <file_name> <folder_name> : 파일을 폴더로 이동 mv <file_name> <file_name2> : 파일2로 이름 수정 mv <folder_name> <folder_name2> : 폴더2로 이름 수정 */
cp
copy
(이름을 변경하여) 폴더나 파일 복사cp helloWorld.txt hiComputer.txt /* helloWorld을 새로운 hiComputer로 복사 cp <file_name> <file_name2> : 원본파일을 파일2 이름으로 복사 */cp -rf bye hi cp -rf hello ../ /* bye폴더를 새로운 hi폴더로 복사 hello폴더를 상위 폴더에 복사 파일 복사할 때는 제거(rm 명령)와 마찬가지로 -rf 옵션 추가 */
해킹의 위험과 프로그램 충돌 등의 이유로 관리자라는 개념을 도입하여, 사용자와 관리자를 구분
-> 특정 명령어를 통해 관리자 권한을 사용
cf. Linux의 관리자 권한은 설치, 삭제 등의 일부 권한만 부여
절대경로 : 경로가 구체적으로 명시되어있음
ex./Users/[username]/helloWorld/hello/
상대경로 : 현재 위치를 기준으로.등을 사용하여 경로를 표기
ex../hello
. 위치
: 현재 폴더의 위치
.. 위치
: 현재 경로에서 앞에 있는 폴더(상위 폴더)
~ 위치
: 맥에서의 /Users/[사용자설정이름] 의미(사용자 경로)
~/helloWorld/hello/bye/
= /Users/[username]/helloWorld/hello/bye/
절대 경로의 기준점인 폴더 /
-> 관리자 권한으로 막혀있어서 변경, 삭제 불가
: 루트 폴더에서 폴더를 생성하면 'Read-only file system' 메세지 뜸
whoami
현재 로그인 중인 사용자 확인whoami # 사용자이름 뜸
- [username]폴더 내에서만 사용자가 자유롭게 수정 가능
관리자 권한을 획득하는 명령어
ex. 프로그램 설치, 변경, 삭제 등
sudo mkdir sudoMkdir
# 관리자 권한으로 sudoMkdir파일 생성
# -> root 권한 파일은 사용자가 수정할 수 없음
# 입력 후 비밀번호 입력(타이핑할때 화면에 안보임)

CLI에서 텍스트 편집할수 있는 에디터
ex. vim, emacs
nano <file_name> # nano에디터로 파일 열기
nano # 에디터 실행
# 종료방법 : ctrl + X -> 안내문뜨면서 저장 여부 확인
# 파일열기 : ctrl + R
# 파일저장: ctrl + O
nano의 TAB은 Enter이다!!!
: ctrl+O 저장 후 아래의 사진처럼 TAB으로 안내되지만 Enter키를 누르면 저장이 된다.

패키지 구성
패키지 매니저
: 프로그램을 설치, 업데이트 등 관리를 편하게 해주는 도구
MacOS에서 brew 설치
xcode-select --install설치 스크립트 복사, 설치
: 홈페이지에서 코드 복사 후 터미널에 설치 -> 암호 입력후 Enter
-> ==> Installation successful! 뜨면 설치 완료
cf. 비밀번호 입력 표시 안뜸
cf. 설치 중간 화면에 문구를 잘 읽고 설치(강제종료/작업취소 : ctrl + C )


로컬 컴퓨터의 Next steps 안내 문구에서 echo ~ 부분을 복사하여 터미널에 입력
설치 확인 : brew help

brew updatebrew outdatedbrew upgrade 프로그램 이름brew search 검색어brew info 프로그램 이름brew install 프로그램 이름brew uninstall 프로그램 이름brew listMacOS에서 wget 설치
1. brew install wget 로 brew설치
wget -O goodjob.txt <https://bit.ly/37sJqCo>
wget -O goodjob.txt "https://bit.ly/37sJqCo" 로 설치해보기
brew install neofetch 로 neofetch 설치javascript의 런타임
-> 웹브라우저가 아닌곳에서 javascript 실행 가능
runtime
: 프로그래밍 언어가 실행되는 환경
ex. 크롬, 사파리 등
Node Version Manager
node.js의 버전을 관리
MacOS에서 NVM 설치
NVM 공식문서에서 wget 코드를 터미널에 입력
-> 아래와 같은 문구가 보인다면 설치 성공
-> 터미널 종료 후 재실행, nvm --version 코드로 설치 버전이 보이면 성공
cf.
빨간 영역 입력 실행이 안된다면 파란영역 코드로 설치
설치 중 Command 'wget' not found 로 에러가 발생하면 wget을 재설치
brew update
brew install wget
nvm으로 Node.js 설치
공식사이트에서 LTS(Long-Term Support) 버전 설치
터미널에서 nvm install --lts로 설치
-> node -v 으로 설치 버전 조회되면 성공
nvm 사용법
nvm ls
# nvm으로 설치한 버전 조회
nvm install <버전>
# 버전 설치
nvm install 12.18.3
# nvm으로 12.18.3 버전 설치
nvm use <버전>
# 사용할 버전 선택
nvm use 12.18.3
nvm use 14.15.5
node <파일이름>
# 터미널에서 javascript 파일 실행
node runnode.js
# 터미널에서 node.js로 runnode.js파일 실행
자바스크립트 런타임 환경 Node.js의 패키지 관리
-> 필요한 모듈 다운로드 가능
package.json 파일
: 패키지의 정보를 담은 파일(패키지 관련 정보)
-> 해당 프로그램을 실행시키기 위한 모듈의 정보, 실행 방법, 테스트 방법 등이 명시
-> 협업을 위한 명시
cf. 필요한 실제 모듈은 node_modules 파일에 저장되어있고, package.json은 정보만 표현
ex. 해당 패키지를 실행하기 위해 필요한 모듈 리스트, 실행 방법 등
npm install 로 npm 설치npm install <패키지>dependencies 항목
: 프로젝트 실행을 위해 필요한 모듈에 대한 정보
ex. react
npm install react
npm install --save react
# react 패키지 설치
# --save : 설치와 함께 dependencies에 추가하는 옵션(생략 가능)
npm install mocha --save-dev
# mocha 패키지 설치
# --save-dev : 설치와 함께 devDependencies에 추가하는 옵션(생략 가능)script 항목
: CLI에서 사용할 수 있는 명령어들에 대한 정보

npm run <키>
# value에 해당하는 내역이 실행됨
npm run test
npm run report
npm run submit
Chapter1. Command-Line Interface
Chapter2. 패키지와 패키지매니저
Chapter3. node.js
Chapter4. Git
이해도 자가 점검 리스트의 결과를 토대로 자기주도적 학습 계획을 수립하고 실천해 보세요.
오늘 학습이 어려웠다면(0~12개)
오늘 학습이 수월했다면(13~14개)
추가적인 학습을 하고 싶다면(15~16개)
느낀점
오늘 너무 빠듯했다. 블로그 필기하면서 공부하다가 늦어지기도 했고, 설치 오류 발생해서 해결하느라 한참걸려서 깃 파트는 거의 알고있는 내용으로만 문제풀은 것같다. 쉽지 않네 CLI.. 게다가 내가 만든 계산기에 테스트해보려고 한참 붙잡고 있다가 결국 모카테스트 파일은 html파일 변경되면 안되는것 같아서 원래 제출했던 것으로 과제를 냈다. 그 과정에서 계산기 js 적용 안되는거 해결은 했지만 오래 걸리고 마무리가 깔끔하지 않았다. 복습은 언제하고 문제 못풀었던거는 언제 풀지;; 매일 컨디션 조절하려고 늦게까지 안하려고 노력은 하는데... 항상 늦어.. 오늘은 산책도 못갔다. 정말 바쁜 하루였다. 그래도 소통 1시간 수업있어서 조금 덜 답답한 것 같다.
무엇보다... 블로그 당일날 배운건 당일에 포스팅 하자는게 목표였는데... 공부하면서 내용정리하니까 너무 늦어진다. 내일은 심지어 문제풀이 시간이 있으니 정리보다 내용 습득에 더 초점을 맞춰야겠다.
그리고 부트캠프 수업 진행하면서 느낀게 있다. 자세하게 설명이 된 게 아니라 해야할 것이 모호하게 나와있는 것처럼 느껴질 때가 많은데, 뭘 하라는 건지 유추하는 연습을 좀 해야겠다. 오늘도 a파일 얘기만 해서 이걸 어떻게 하라는건지 잘 몰랐는데 다른 파일 보니까 거기에 함수 정의하고 a파일로 링크 걸어서 진행했어야했다. 중간에 끊긴 다리 상상하며 문제를 해결하려는 노력을 해봐야겠다.
개선점 및 리마인드