요약정리한 파일을 잃어버렸다가 다시 찾아서 지금 업로드함
1. Command-Line Interface
입력소스 : 컴퓨터에 새로운 명령을 전달하는 모든 소스. (키보드, 마우스, 카메라, 마이크 등)
출력 : 입력 소스에 의해 또는 작성된 프로그램에 의해 사용자가 인식할 수 있도록 하는 일 (모니터에 화면 출력, 음악 재생시 스피커에서 소리가 나는 것 등) 모니터와 스피커는 출력소스.
I/O(Input/Output) : 컴퓨터를 조작하기 위한 입력과 출력.
리눅스의 터미널은 키보드 입력과 모니터 출력으로 모든 작업을 할 수 있다. 리눅스 터미널은 GUI 이전부터 컴퓨터 조작을 위해 사용되었기 때문에 GUI로 가능한 모든 작업은 CLI로도 가능하다. 다만 키보드 입력시 모니터에 글자로 출력하기때문에 GUI에 익숙한 사용자에게는 낯설게 느껴질 수 있다.
1) CLI 명령어
(1)기본 명령어 1
* 터미널 실행 : macOS 기준으로 실습
런치패드 - 검색창에 terminal 검색 / 스포트라이트 - terminal 검색
터미널은 CLI. 입력하는 글자와 출력하는 글자로 컴퓨터와 소통할 수 있다. 그러므로 컴퓨터가 출력하는 글자를 읽을 수 있어야 한다.
* 프롬프트 : 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
터미널을 사용할때는 프롬프트에 명령어를 입력하며 사용한다. 명령어를 입력하고 엔터를 누르면 실행할 수 있다.
pwd(print working directory) : 현재 폴더가 위치한 경로를 확인하기
디렉토리는 폴더.
CLI에서 폴더를 열거나 닫으면서 이동하면 현재 위치가 헷갈릴수 있기 때문에 사용한다.
mkdir(make directories) : 새로운 폴더 생성하기
mkdir 폴더이름
ls(list) : 특정 폴더에 포함된 파일이나 폴더 확인
CLI에서 특정 명령어의 옵션을 사용할때는 -를 이용한다.
ls -l / ls -a / ls -al, ls -la(이 예시의 옵션순서는 기능에 영향을 미치지 않는다)
ls -a(all) : 숨겨진 폴더나 파일을 포함한 모든 항목을 터미널에 출력
ls -l : 폴더나 파일의 포맷을 전부 표현한다. 하나의 파일 또는 하나의 폴더는 한 줄에 출력된다.
파일의 포맷 : d로 시작(폴더를 의미), -로 시작(파일을 의미)
Open . : 명령어를 이용해 폴더를 GUI의 탐색기로 실행하기
cd(change directory) : 폴더에 진입하기
현재 위치확인 (pwd) - 폴더 구조 확인(ls) - 진입(cd)
touch : 파일 생성.
touch 파일이름.확장자 형태로 사용
touch test.txt
cat : 파일의 내용을 터미널에 출력하기
이어지는 파일이 있다면 순서대로 읽고 터미널에 출력한다. cat 파일이름.확장자 형태로 사용
cat touch.txt
gui로는 클릭해서 텍스트 편집기를 열고 내용을 확인하고 수정할 수 있다. 하지만 cli와 gui가 편집하는 파일은 같은 파일이다.
하지만 cat을 이용해 터미널에 출력하면 파일의 모든 내용을 출력하기 때문에 너무 큰 파일을 출력하게 된다면 매우 비효율적이다.
rm : 폴더나 파일 삭제하기
rm으로 삭제한 폴더나 파일은 휴지통을 거치지 않고 삭제된다.
rm 만 사용할시 단일 파일만 삭제할 수 있다! 폴더 삭제는 옵션을 사용해야 한다.
rm -r(recursive) 폴더 지우기에 사용 / rm -f(force) 질문 받지 않고 지울때 사용
=> 폴더 파일 삭제할때는 두가지 옵션을 같이 쓰면 된다 rm -rf
mv(move) : 폴더나 파일의 이름을 변경하기, 또는 폴더나 파일의 위치를 옮기기
mv [폴더나 파일의 이름] [도착 폴더의 이름] 으로 사용.
이름 변경시에는 mv [폴더나 파일 이름] [변경할 이름]
✅ 컴퓨터가 파일을 옮기거나 복사하는 방법
파일을 옮길때
1. 파일의 내용을 잠시 저장한다
2. 원래 위치의 파일을 삭제한다
3. 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다.
컴퓨터는 파일을 옮기기 위해 잠시 저장해둠으로, 파일을 복사하는 경우 파일을 옮기는 과정중에서 원래 위치의 파일을 삭제하는 과정이 제외된다.
1. 파일의 내용을 잠시 저장한다
2. 원래 위치의 파일을 삭제한다(X)
3. 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다.
cp(copy) : 폴더나 파일을 복사하기
파일 복사의 경우 cp [원본파일이름] [복사할파일이름] 형태로 사용.
폴더 복사의 경우 cp -rf [원본파일이름] [복사할파일이름] 형태로 사용. -r은 반드시 포함되어야 한다.
cli에서 .은 현재 폴더. ..는 현재폴더(.)을 기준으로 앞에 있는 폴더.
명렁어의 옵션은 명령어 이름만 작성하거나 -h / --help 옵션을 통해 확인할 수 있다.
(3) 관리자 권한과 경로
* 사용자와 관리자
사용자 : 일상적으로 pc를 켜서 바탕화면에 진입하기위해 로그인하는 계정
관리자 : 사용자가 접근할 수 없는 영역에 접근할 수 있는 높은 권한이 잇는 계정.
관리자가 필요한 이유?
: 윈도우즈의 초기버전에는 관리자 권한이 없었음. 사용자 없이 항상 관리자 권한으로 프로그램을 설치/변경/삭제가 가능했음. => 개발에 대한 지식이 없는 일반 사용자가 정보를 탈취당하는 일 발생(해킹당함).
악성코드(Malicious Code) : 공격자가 나쁜 의도로 작성한 코드.
항상 관리자 권한으로 pc가 실행되다 보니 악성코드가 삽입된 프로그램이 어떤 안전장치도 없이 설치되었고 사용자는 어떤 프로그램에 악성코드가 심겨있는지도 파악할 수 없었음.
시스템 충돌(conflict) : 두 프로그램이 하나의 시스템을 놓고 다투는 과정.
=> 블루스크린이 출력됨.
이러한 악성코드와 프로그램 충돌로 생기는 문제를 방지하기 위해 사용자 계정 컨트롤이 탑재되었음. 시스템을 관리하는 관리자와 일상적으로 pc를 사용하는 사용자를 구분함. 관리자는 프로그램 설치, 변경, 삭제 권한이 있고 사용자는 프로그램 실행은 가능하지만 변경할 수 없도록 제한된 권한을 가지고 있다. 또한 사용자가 모르는 사이에 시스템 설정을 변경하는 악성코드가 실행될때 접근 권한을 막아 사용자를 보호한다.
새 프로그램을 설치하거나 변경, 삭제할때 관리자 권한이 반드시 필요하기 때문에 (ubuntu의 경우) 특정 명령어를 입력해 관리자 권한을 빌려온다.
절대 경로와 상대 경로
절대경로 : 기준점으로부터의 절대적인 위치. 기준점은 루트폴더(/). 특정 폴더나 파일이 루트 폴더로부터 어떤 폴더로 진입하는 경우 만날 수 있는지 나타낸다. ex) /home/[username]/helloWorld/hello/
상대경로 : 특정 폴더 또는 파일의 현재위치를 기준점으로 한다. 현재 위치(.) 상위폴더(..)로 표현.
./ = 현재 폴더 아래의. .(현재폴더)/(폴더내부)
관리자(root) 권한
!! 관리자 영역 변경시 운영체제가 먹통이 될수 있고 망가지면 재설치를 해야할 경우도 있으므로 주의해야 한다. !!
관리자는 일반 사용자에게 관리자 권한(루트 권한)을 완전하게 넘기지 않는다.
루프 폴더는 관리자의 영역임으로 사용자 권한으로는 아무것도 할 수 없다.
whoami : 현재 로그인 된 사용자 확인
ㄴ 이를 통해 확인할 수 있는 사용자는 폴더의 형태로 존재한다. 해당 폴더로 이동해 내용을 확인하면 처음 설치할때 입력한 username이 폴더의 형태로 생성되어있다. 사용자 권한은 username 폴더 안에서만 자유롭게 사용할 수있다. 반면 관리자권한 사용시 다른 사용자 폴더에도 영향을 끼칠 수 있고 시스템 자체에도 접근이 가능하다. 관리자 권한으로 변경한 내용은 사용자 권한으로 해결할 수 없다.
사용자 폴더의 경로 = ~/(루트폴더부터 username폴더까지의 경로 축약형)
*sudo : 관리자 권한을 획득하는 명령어
ls -l. 특정 폴더나 파일이 사용자 또는 관리자 소유로 생성되었는지 확인할 수있다.
(4) 텍스트 에디터 nano
nano : cli 환경의 텍스트 에디터. 대부분의 리눅스 환경에는 nano가 탑재되어 있다.
'study > TIL' 카테고리의 다른 글
23.02.23 - 상태 관리 (0) | 2023.02.23 |
---|---|
23.02.20 - Component Driven Development, Styled Components, Storybook, useRef (0) | 2023.02.20 |
23.02.16 - Figma (0) | 2023.02.16 |
230215 - UI/UX (0) | 2023.02.15 |
230214 - JSON.stringfy (0) | 2023.02.14 |