CLI(Command-Line Interface)는 명령어를 입력해 컴퓨터를 조작하는 방식.
CLI와 같은 기능을 담당하지만, 대부분의 PC에서는 GUI를 적용하고 있다.
GUI(Graphical User Interface)는 윈도우즈나 macOs, 또는 Linux에서 사용자가 화면을 통해
컴퓨터와 소통하는 방식이다.
GUI(Graphical User Interface)로 생성한 폴더는 CLI에서 확인할 수 있다.
CLI 기본 명령어
컴퓨터를 조작하기 위해서는 다양한 입력(Input)이 필요하다.
입력을 담당하는 키보드나 마우스를 입력소스(Input source)라고 한다.
카메라나 마이크 등 컴퓨터에 새로운 명령하는 모든 소스가 입력소스이다.
반대로, 입력소스에 의해 또는 작성된 프로그램에 의해 모니터에 화면을 나타내거나, 음악을 재생하면 스피커로 전달하여 사용자가 인식할 수 있도록 하는 일을 출력(Output)이라고 한다. 시각적 출력을 담당하는 모니터나 청각적 출력을 담당하는 스피커를 출력 소스(Output source)라고 한다.
모니터나 스피커 외에도 스마트 홈을 연결하여 전등이나 공기청정기, 세탁기 등을 조작하는 경우에 전등 공기청정기 세탁기도 출력 소스가 될 수 있다.
컴퓨터를 조작하기 위한 입력과 출력을 간단하게 I/O(Input/Output)라고 표기하며, "아이오"라고 읽는다.
리눅스의 터미널은 키보드의 입력과 모니터의 출력으로 모든 작업을 할 수 있다.
GUI가 PC(Personal Computer, 개인 컴퓨터)시장을 지배하게 되었지만, CLI는 여전히 여러가지 측면에서 유리함.
예를 들자면 서버 컴퓨터를 집이나 사무실에서 개인 모니터로 소통할 수 있는 효율적인 방법
Linux 환경에서 CLI를 이용하는 방법은 개발자가 되기를 원하는 사람이라면 반드시 학습해야함!
터미널 (Terminal) : 개발자가 사용하는 검은 화면
프롬프트 (Prompt) : 터미널 화면에서 글자가 입력되는 공간. CLI의 명령줄 대기모드. 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
리눅스 터미널의 기본적인 명령어들 소개
- pwd (print working directory): 현재 위치를 확인하는 명령어. 현재 작업 중인 폴더의 위치 출력!
- mkdir (make directories): 새로운 폴더를 생성하는 명령어.
- mkdir helloWorld // 명령어 mkdir은 생성할 폴더의 이름을 함께 입력해야함
- ls (list): 특정 폴더에 포함된 파일이나 하위 폴더의 리스트를 출력하는 명령어
- ls -l 의 l은 폴더나 파일의 포맷을 전부 표현하라는 의미
- ls -a 의 a = "all"이라는 의미로 숨어이는 폴더나 파일을 포함한 모든 항목을 터미널에 출력.
- ls -al or ls -la
- nautilus(Ubuntu), open(macOS): 현재 폴더를 파일 탐색기로 여는 명령어
- open . 을 터미널에 치면 바탕화면이 나온다!
- cd (change directory): 폴더에 진입하는 명령어
- cd helloWorld 를 터미널에 치면 cd를 이용해 폴더 helloWorld로 진입하는 것!
- touch: 새로운 파일을 생성하는 명령어
- touch bryan.txt 를 치면 빈 텍스트 파일 "bryan.txt"를 생성한다
- 본래 용도는 (이미 존재하는 파일의)파일의 접근 시간 혹은 수정 시간을 변경하는 일이지만 빈 파일을 만드는 용도로 많이 사용함
- 책상에 a4용지 하나 갖고온다...?
- cat (concat ? catch?): 파일의 내용을 터미널에서 출력하는 명령어
- cat bryan.txt 를 치면 작성한 내용 확인가능. 파일의 모든 내용을 출력하니까 큰 파일을 출력하면 매우 비효율적임!
- 그래서 대신 쓰는 명령어들이 head, tail, more, less 명령어
- rm (remove): 폴더나 파일을 삭제할 때 사용. 명령어 rm으로 삭제한 폴더나 파일은, 휴지통을 거치지않고 바로 즉시 삭제됩니다. 조심!
- rm -rf bryan // bryan이라는 폴더 삭제
- 명령어 rm은 단일 파일을 삭제할 수 있다. 폴더를 삭제하려면 옵션(r & f)을 이용해야하는데 대시 ( - )를 사용하면 됨
- 옵션 r은 "recursive--재귀: 자기 자신을 이용하여 정의하거나 응용하는 것"를 뜻하고, 폴더를 지울 때 사용
- 옵션 f는 "force--강제, 무력"를 뜻하는데, 질문을 받지 않고 폴더나 파일을 지울 때 사용.
- mv (move): 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어
- mv bryan.txt bryan/ // bryan.txt를 폴더 bryan으로 옮김
- mv bryan.txt iWantIpad.txt // bryan.txt의 이름을 iWantIpad.txt로 변경
- cp: 폴더나 파일을 복사하는 명령어
- cp bryan.txt iWantIpad.txt // bryan.txt를 복사해서 iWantIpad.txt를 생성
- cp -rf bryan shutUp // 폴더 bryan을 복사해 폴더 shutUp을 생성
- cp 를 이용해 폴더를 복사할 때에는 옵션 -r 반드시 포함
- 컴퓨터는 파일의 내용을 잠시 어딘가에 저장했다가 그 내용으로 새로운 파일을 생성함
- sudo: 관리자 권한을 일시적으로 획득하는 명령어
- help: 명령어들의 사용법이 궁금하거나, 어떤 기능이나 옵션이 있는지 궁금할 때
- 도움말을 -h, -help, --help로 사용법 출력
명령어를 사용할 때 등장하는 키워드
- / : 루트 디렉토리
- ~ : 홈 디렉토리 .
- 사용자 폴더의 경로(path)는 ~/로 표시.
- 물결기호 ( ~ )는 루트폴더 ( / )로부터 사용자 폴더(username)까지의 경로를 축약한 형태
* 리눅스 권한(Permission)
drwxr-xr-x // 이 메세지를 둘로 나눠서 보면,
[d] 1번 부분
[rwxr-xr-x] 2번 부분 // rwx는 해당 파일에 읽기 쓰기, 실행 권한이 있다. r-x는 읽기, 실행 권한은 있으나 쓰기 권한은 부여되지 않았다.
첫번째 r-x --- 그룹, 두번째 r-x --- 다른 유저 특정함
- d는 폴더를 의미
- 'r'은 read의 약자로 읽기 권한을 의미. 파일 및 폴더안에 있는 데이터 속성, 서브 폴더 등에 접근 가능
- 'w'는 write의 약자로 쓰기 권한을 의미. 파일 및 폴더의 속성과 데이터를 변경 가능
- 'x'는 execute의 약자로 실행 권한 의미. 해당 파일을 실행해서 사용 가능
- '-'는 권한 없음을 나타냄
- r--는 오직 읽기 권한만 존재함을 의미함
절대 경로와 상대 경로의 차이
경로는 명령어 pwd로 확인할 수 있는 절대 경로와, 현재 위치로부터 상대적인 위치를 나타내는 상대 경로로 나뉜다.
- 절대 경로의 시작이 루트 ( / ) : 루트폴더를 기준점으로 절대적인 위치를 나타냄!
- 관리자(root) 권한, 관리자의 영역: 일반 사용자의 권한으로는 어떤 폴더나 파일도 생성, 변경, 삭제할 수 없는 곳
- Linux 관리자의 가장 큰 특징은, 어떤 일이 있더라도 일반 사용에게 관리자 권한(루트 권한)을 완전하게 넘기지 않는다는 것
- 프로그램을 설치하거나 변경 또는 삭제할 수 있도록 하는 부분만 권한 전달해줘서 사용자의 실수로 발생할 수 있는 시스템 에러로부터 운영체제를 보호함. 마치.. tv나 인덕션, 김치냉장고나 냉장고같은 곳에 아이를 위해 보호자 잠금 모드가 있듯이..
- 상대 경로의 시작이 현재 디렉토리 ( . ) : 현재 위치한 폴더는 점( . )으로 표현한다.
- 사용자 폴더의 경로(path)는 ~/로 표시.
- 상위 폴더는 두개의 점 ( .. )으로 표현
- 현재 폴더 아래는 ./
- cd ./bryan // 현재 폴더 아래의 bryan 폴더로 진입하는 명령
- mv byran.txt ../ 현재 폴더 아래에 있는 파일 bryan.txt를 상위 폴더로 이동
- cd ../ 현재 폴더에서 상위 폴더로 진입
텍스트 에디터 nano
가장 사용하기 쉬운 에디터 !
나중에는 vim 에디터의 아주 기본적인 사용법을 알아놓는게 좋음
- nano hello.js // hello.js 를 nano에서 엽니다.
- nano // 그냥 열거나 파일 이름 추가
'Linux > 기초' 카테고리의 다른 글
Linux 이것저것 (0) | 2021.05.24 |
---|---|
패키지와 패키지 매니저, 런타임, nvm, npm 그리고 Package.json (1) | 2021.05.20 |