SEB(10일차, Linux 기초)

Jogi's 코딩 일기장·2021년 6월 24일

10일차 (Linux 기초)

10일차가 되는 날 linux 기초에 대해 배우기 시작했다. CLI와 node.js에 대해 가볍게 알아봤다.
우선 CLI(Command Line Interface) 는 명령어를 입력해 컴퓨터를 조작하는 방식이라는 것을 알고가야겠다.
이제 배운 것들을 토대로 다시 정리 및 회고를 해보겠다.

CLI 기본 명령어

우선 우리가 흔히 아는 Windows의 실행창과 Linux의 Terminal은 CLI다. 또 프롬프트라는 말도 들어봤을텐데 프롬프트는 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간이다.(명령줄 대기모드) Ubuntu Terminal에서 프롬프트라고 생각하면 되겠다. 이제는 명령어들에 대해 간략히 살펴보겠다.

  • pwd : print working directory의 약자로 현재 위치를 확인한다.
  • mkdir : make directories의 약자로 새로운 폴더를 생성한다. 폴더 이름에 공백이나 특수문자가 있으면 '\'을 이용한다.
  • ls : list로 특정 폴더에 포함된 파일이나 폴더를 확인한다. 여기에는 옵션이 올 수 있다.
    ex) ls -l, ls -a, ls -al, ls -la 의 형식으로 사용할 수 있다.
    -a 옵션 : all이라는 뜻으로 숨어잇는 폴더나 파일을 포함한 모든 항목을 터미널에 출력한다.
    -l 옵션 : 폴더나 파일의 포맷을 전부 표현하라는 의미이다. 가장 왼쪽에는 d나 -로 출력되는데 d는 폴더의 경우이며,
    -는 파일의 경우이다

위와 같이 확인할 수 있다. 파란색은 폴더, 흰색은 텍스트 파일이다. 그 옆은 권한의 표시지만 이는 다음에 배운다고 한다. 간략하게 3개씩 나눠서 소유자, 그룹, 다른유저에게 주어지는 권한이라고 한다.(read, write, execute)

  • nautilus(ubuntu), open(MacOS) : 이를 이용해 현재 폴더를 GUI 탐색기로 실행한다.

  • cd : change directory로 폴더에 진입하는 것을 의미한다.

  • touch : 파일을 생성한다. touch [파일명]

  • cat : 파일의 내용을 터미널에 출력한다. CLI는 텍스트 기반으로 소통하기 때문에 GUI편집기가 실행되지 않는다. cat [파일1] [파일2] ... 이렇게 하면 내용이 순서대로 출력된다.

  • rm : remove로 폴더나 파일을 삭제한다. 이는 휴지통을 거치치 않고 바로 삭제된다. 이는 단일 파일을 삭제할 수 있으며, 폴더를 삭제하고 싶다면 -r, -f의 옵션을 달아서 사용하면 된다.

  • mv : move로 폴더나 파일 이름을 변경 또는 위치를 옮긴다. mv [폴더나 파일 이름] [도착폴더 or 파일의 바뀔 이름]

  • cp : copy로 폴더나 파일을 복사한다. cp [원본 파일 이름] [복사할 파일 이름], 여기에도 -r, -f의 옵션이 있다.

  • sudo : 관리자 권한을 획득하는 명령어이다. sudo [명령어]의 형식이다.

node.js

  • 런타임 : 프로그래밍언어가 구동되는 환경. 즉 어떤 프로그램이 작동할 때, 프로그램이 동작하는 곳이다.
  • node.js라는 새로운 javascript 런타임의 등장으로, js가 브라우저가 아닌 곳에서 실행될 수 있었으며, 서버와 같은 다른 프로그램도 만들 수 있어졌다.
  • nvm(node version manager) : 다양한 node version을 설치하고 관리할 수 있는 프로그램

구글 크롬 개발자 도구에서 실행한 javascript
linux 터미널에서 실행할 js파일(코드는 똑같다)

이제 터미널창에서 node를 이용해 실행해보겠다.

이과 같이 node.js를 이용해서 터미널 창에서 바로 확인을 할 수 있다.

npm과 package.json

npm (Node package manager)

  • 일종의 앱스토어이다. 필요한 모듈을 다운로드 할 수 있는 모듈들이 모여있는 모듈스토어다.
  • node.js 생태계의 패키지 매니저이다.

package.json

  • npm 모듈을 활용하기 위해 해당 모듈에 대한 정보를 담은 파일이다. 즉, 프로젝트 전반에 관한 정보가 들어있다.
  • package.json에는 이 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 테스트하는 방법 등이 명시돼있다.
  • 프로젝트 폴더에서 npm install을 하면 모듈들이 저장되며, 이 모듈들은 node_modules라는 폴더가 생기고 여기에 저장된다.
  • package.json 파일을 보면 dependencies라는 곳이 보이는데, 이는 프로젝트가 돌아가기 위해 반드시 필요한 모듈들이 무엇인지 명시돼있다. 여기에 명시돼있는 모듈들은 npm install <모듈명>으로 커맨드를 입력해 다운로드를 받을 수 있다.

실습(짝수생성기)

부트캠프 과정에서는 위에서 배운 내용을 기초로 간단한 실습을 할 수 있도록 해줬다. 짝수를 생성하는 프로그램이었는데, 인자로 넘겨주면 인자이하의 짝수들을 모두 뽑는 프로그램이었다.
처음에는 js파일을 실행시켜주는 것이었는데 바로

node index.js

를 입력하니 오류가 떴었다. 오류를 확인하니 모듈을 불러오지 못한 것이고, 그것 때문에 오류가 난 것이었다. 그래서 위에서 배운 것과 같이

npm install

을 해준 뒤에 우리가 사용할 모듈은 range모듈이었다. 그래서 아래와 같이 모듈을 받았다.

npm install range

그리고 어떤 홈페이지에서 나온 사용법을 알려줬는데 거기에선 range.range(인자)를 해주니 배열의 값들이 출력이 됐다. 그래서 이것을 따라하면 되겠다 싶어서 바로 했더니 오류가 났다. 변수가 잘못된 것인지 모듈을 내가 잘못사용하는 건지 이것저것 많이 해봤다. 다 해결하고 봤더니 내가 했던 오류는 리턴도 해주지 않았으며, 사용법도 제대로 알지 못했다. 그냥 맨 땅에 헤딩마냥 이것저것 해보니 됐다.

위와 같이 변수에 그냥 range 모듈을 사용해주면 되는 것이었고, 그 배열을 저장해 반환을 해주는 것이었다. 물론 아직 익숙하지 않고 어리버리했지만 리턴을 까먹은건 너무했다... 나한테 완전 실망했다..

마치며...

이번 유닛은 CLI와 node.js의 완전 기초 중에 기초를 배우고 실습해봤다. CLI는 아직 GUI를 많이 사용해와서 그런지 많이 불편하기도 했다. 그리고 node.js는 서버를 위한 클라우드 이런 것일 줄만 알았는데 그저 런타임일 줄은 꿈에도 몰랐다. 학교를 다니면서 같은 프로젝트를 진행하며 한 팀원이 node.js를 통해 서버를 만든 기억이 있는데 그 때도 저와 같이 알았는데 엄청난 오류를 가지고 있었다. 다시 한번 배우게 된 것 같다. 그리고 실습을 하면서도 CLI가 익숙하지 않아서인지 기본적인 것도 까먹으며 실습을 진행했다. 기본적인 것을 제대로 익혀야 실수를 많이 안할텐데 이 점은 항상 생각하면서 조심해야겠다. 또 아직 module사용에 있어서 익숙하지 않은데 앞으로 많은 실습을 하며 module사용법을 제대로 알고 적재적소에 맞는 module을 사용할 수 있도록 해야겠다.

Reference

  • 코드스테이츠(CodeStates) 강의자료
profile
프로그래머로서의 한걸음

0개의 댓글