--Linux
1. CLI 명령어
pwd(print working directory) 현재위치확인
mkdir(make directories) 폴더생성
ls(list) 폴더확인 (-a =숨어있는것 포함 전부, -l포맷 표현, -la/-al 둘다)
-l의 포맷 표현은 drwxr-xr-x / -rw-r--r-- 등으로 볼 수 있는데 해석은 간단하다.
1/2,3,4/5,6,7/8,9,10 4가지로 끊어서 읽어야 하며 맨 앞줄은 d는 derectories(폴더)의 자리로
d는 폴더를 의미하며 -는 공백을 의미해 폴더가 아닌 파일임을 알 수 있다. 또한 나머지 3개의
rwx/rwx/rwx 위치는 소유자(rwx),그룹(rwx),모든사용자(rwx)를 의미하며 r은 읽기권한,
w는 쓰기권한, x는 실형권한으로 대부분이 r인 읽기는 가능하지만 x인 실행은 폴더만 자유롭게 할
수 있으며 파일에는 실행 및 쓰기 권한을 주지 않는 경우가 많다.
이는 sudo라는 최고/관리자/루트권한이라고 하며 rwx를 자유롭게 다룰 수 있는 명령어를 따로
입력하게 만들어 외부에서의 해킹이나 사용자의 부주의 또는 미숙함으로 인한 프로그램
충돌 등을 예방할 수 있다.
nautilus . 현재 위치를 GUI로 실행
touch 파일 생성하기
cat 파일의 내용을 터미널에 출력하기
rm(remove) 폴더나 파일 삭제하기(-r(recursive) =폴더적용, -f(force) =액세스권한이
없는 파일도 강제하는 옵션이다.
일반적으로 rm -rf를 묶어서 사용하는 습관을 들이라고 한다. 그렇지 않으면 권한이 없는 파일이
섞여있는 경우 삭제가 제대로 되지 않을 수 있기 때문일 것 같다.
@@@@추가적으로 rm -rf /* 혹은 rm -rf . /*를 치면 정말 다 날아간다. 하드뿐만 아니라
EFI 이미지까지 날아가는, 완전 말 그대로 머리속까지 싸그리 포맷. 앞의 명령어는 /[9]
디렉토리 내의 * 모든 걸 삭제, 뒤의 명령어는 현재 디렉토리 . 와 / 디렉토리의 모든
내용 * 을 삭제한다. 별명은 "악마의 힘"이라고 한다.
이런 실수를 방지하기 위하여 rm -rf ./*보다는 rm -rf *가 선호된다.
의미는 똑같으면서 위와 같은 참사가 일어나지 않는다.
mv(move) 폴더나 파일의 이름을 변경, 또는 폴더나 파일의 위치 옮기기 '이름 도착지점or변경이름'
mv bye.txt bye/ = bye.txt -> bye폴더로 이동
mv bye.txt helloWorld.txt -> bye텍스트명 helloWorld로 변경 후 기존파일 삭제(아래 참고)
cp(copy) 폴더나 파일을 복사하기 '원본이름 복사할이름'
파일을 옮길 경우 1. 옮길파일 a 저장, 2. a삭제, 3. 저장된 기록(a) 생성이지만
파일을 복사할 경우 2번 절차인 원본파일 삭제가 생략된다.
위에서 언급된 것과 유사하게 폴더를 옮기거나 저장하기 위해서는 -rf를 추가해줘야 한다.
도움말 또는 사용법은 명령어 이름만 입력하거나 -h, --help등의 옵션을 통해 확인할 수 있다.
2. 절대경로는 기준점으로서의 절대적인 위치를 나타내는데, 이 절대적인 위치는 루트폴더(/)다. 또한
상대경로는 현재 자신이 있는 위치(pwd로 확인가능)에서 위, 또는 아래로 몇칸이동 같은 방식으로 사용할 수 있다. (.)은 현재폴더, (..)은 상위폴더를 나타내며 (./)는 현재 폴더 아래, 그리고 (./a)는 현재폴더의 아래인 a폴더라고 볼 수 있다.
루트(절대경로의 시작)에서 사용자 폴더로의 경로는 ~/로 표시할 수 있는데 시작지점에서 현 위치를
간략하게 표현할 수 있다. ( 예시 ~/현재폴더명 )
3. 루트폴더는 관리자권한이 없을 경우 읽기밖에 할 수 없다.
whoami를 통해 로그인된 사용자를 확인할 수 있으며 sudo를 통해 관리자권한을 이용할 수 있다.
4. Ubuntu는 apt, macOS는 brew라는 패키지 매니저를 사용한다.
apt는 우분투에 기본적으로 설치되어 있는데 아래와 같은 주요 명령어가 있다.
패키지 목록 갱신: apt update(관리자 권한 필요)
패키지를 다운로드할 수 있는 여러 저장소의 최신 정보를 업데이트합니다. 새로운 저장소를
추가하거나, 패키지를 설치하기 전, 최신 정보를 갱신합니다.
설치된 프로그램이 새로운 버전으로 변경되지 않습니다.
업그레이드 가능한 패키지 목록을 출력: apt list -—upgradable
전체 패키지 업그레이드(버전 업): apt upgrade (관리자 권한 필요)
특정 패키지만 업그레이드(버전 업): apt --only-upgrade install 패키지 이름 (관리자 권한 필요)
패키지 설치: apt install 패키지 이름 (관리자 권한 필요)
설치된 패키지 보기: apt list --installed
패키지 검색: apt search 검색어
패키지 정보 확인: apt show 패키지 이름
패키지 삭제: apt remove 패키지 이름(관리자 권한 필요)
5. nvm은 Node Version Manager의 줄임말으로 이름처럼 Node.js의 버전을 관리하는 프로그램이다.
Node.js는 수많은 버전이 있는데 각 개발 환경에 따라 다른 버전이 필요할 수 있다. 이 때 각 버전을
쉽게 관리할 수 있게 해주는 것이 nvm이다. 사용법은 간단한데 아래와 같은 명령어로 사용할 수 있다.
nvm ls nvm에 설치된 버전들이 나온다. 예시)14.15.5
nvm install (버전) nvm에 (버전)을 설치한다.
nvm use (버전) nvm에서 (버전)을 실행한다.
6. node a.js를 입력시 a파일이 node환경에서 실행된다. 이를 통해 웹이 아닌 환경에서도 JavaScript를 사용할 수 있게 한다.
7.npm은 Node Package Manager로 node의 패키지들을 관리해준다. package.json에서 어떤 모듈들이 필요한지 알려주는데 이를 npm으로 확인하고 명령어 하나로 해당하는 모든 모듈들을 쉽게 다운받을 수 있다. 또한 필요한 모듈만 package.json에 저장될 뿐 실제 모듈은 따로 node_modules이라는 폴더에 저장된다.
package.json에는 프로젝트 관련 정보, cli에서 사용 가능한 명령, 개발과 관련된 dependency들이 기록된다.
npm install명령어를 통해 package.json에 적힌 모듈들을 node_modules로 다운받아 저장한다.
npm install --save-dev 명령어로 설치하면 자동으로 devDependencies에 추가된다.
npm install X 명령어로 X모듈을 다운로드 시 자동으로 dependencies에 저장된다.(--save 자동사용)
또한 scripts 항목에는 start, test, lint정도를 기술하는 편이 좋다.
--배열
1.JavaScript에는 array, null타입이 없기 때문에 array와 null은 typeof에서 object로 표기된다.
2.재미있는 사실은 arr이 빈 배열일 경우 arr[0]은 undefined가 나온다. 하지만 Reference에서는 if문으로 길이가 0일경우 undefined를 따로 표기하고 있다. 처음으로 내가 이긴 것 같다!(문의해볼것)@@@
3.다른곳에 기록하지 않았지만 이 부분에서 의문을 가졌던 let을 적지 않아도 자동적으로 선언이 되서
let을 빼먹던 습관이 있었고 그러면 작동이 안되지 않냐는 동기분의 의문에 실행시 작동이 되서
동기분이 의아해 하셨던 부분이 있는데 알고보니 var로 선언이 되서 주의해야 하는 부분이었다.
let을 빼고 값을 바로 할당해 var로 자동 선언되게 하지 말자. 오류의 원인이 된다.
4.메서드를 사용할 경우 어떤 부분을 가르키고 있는지 어떤 값을 반환하는지를 주의깊게 봐야 하는데 string타입 또는 Number타입의 경우는 대충 호환이 될 수 있어 놓치기 쉽지만 주의해야 하고 결과가 배열 또는 객체로 나와서 오류가 발생하거나 값으로 나왔지만 배열이 필요한 상황 등이 있을 수 있어 입력과 출력에 유의하여 함수 및 값을 선언, 할당해줘야 한다.
5. for(let el of arr){}등으로 arr배열에 있는 내부값(element)를 내부 함수에 넣어 사용할 수 있다.
또한 for(let key in obj){} 방식으로 obj배열에 있는 내부값들을 key를 통해 호출해 사용할 수 있다.
6.pop(), shift()는 뺀 값을 반환하는 함수이기 때문에 뺀 후의 배열값을 받으려면 arr을 호출해야 한다.
7.splice는 (start,갯수,넣고싶은 값)으로 사용하기 때문에 갯수부분이 비어있다면 끝까지 지워버린다.
생각보다 리눅스에 대해서 대충 넘어갔던 것 같아 반성하게 된다.
f에 대해 궁금한 점과 내용 명령어 사용법등에 대해 조금씩 추가하다보니 리눅스에 대해서 좀 더 알 수 있는 시간이 되었지만..
5일중 2일치 복습밖에 하지 못해 상당히 시간적인 압박을 느끼게 되었다.
내일 3일치(수,목,금)복습과 30문제중 15문제라도 풀었으면 좋겠다.
'회고' 카테고리의 다른 글
| [JavaScript]koans? (0) | 2022.05.16 |
|---|---|
| 복습(객체,자료형,스코프,클로저,ES6) (0) | 2022.05.15 |
| [JavaScript]클로저/ES6 (0) | 2022.05.13 |
| [JavaScript]원시자료형과 참조자료형/스코프 (0) | 2022.05.12 |
| [JavaScript] 객체 (3) | 2022.05.11 |
