# CLI(Command Line Interface) - CLI(Command Line Interface): 텍스트 명령어를 입력하여 시스템을 제어하는 인터페이스 - CLI를 사용하면 텍스트 명령을 입력하여 모든 서버 또는 컴퓨터 시스템에서 프로그램을 구성, 탐색 또는 실행할 수 있다 - Linux, macOS와 Windows를 포함한 모든 운영 체제는 시스템과 더 빠르게 상호 작용할 수 있는 CLI를 제공한다 - GUI(Graphical User Interface): 아이콘, 이미지 등을 시각적으로 탐색하고 클릭하여 작업을 수행하는 인터페이스 - GUI를 사용하면 아이콘과 이미지를 시각적으로 탐색하고 클릭하여 작업을 수행할 수 있다 - 그러나 GUI는 시스템 관리 작업에 비효율적이며, 가상 또는 원격 환경에서는 더욱 효율이 떨어진다 컴퓨터 사용자들은 주로 GUI를 통해 컴퓨터와 상호작용한다. 하지만, 컴퓨터의 더 깊은 수준의 작업을 수행하거나, 자동화된 스크립트를 실행하기 위해서는 CLI에 익숙해져야 한다. ## CLI의 이점 - 속도: GUI보다 명령어를 입력하여 작업을 수행하는 것이 종종 더 빠르다. - 자동화: 반복적인 작업을 스크립트로 만들어 자동화할 수 있다. - 유연성: 복잡한 작업을 단순화시키고, 맞춤형 작업을 수행할 수 있다. - 리소스 사용: CLI는 GUI보다 적은 시스템 리소스를 사용한다. ## CLI의 단점 - 학습 곡선: GUI에 비해 배우기 어렵고, 명령어를 기억해야 한다. - 사용자 친화성: 텍스트 기반 인터페이스는 일부 사용자에게 덜 직관적일 수 있다. ## CLI의 작동방식 명령줄 인터페이스(CLI)는 컴퓨터의 운영 체제와 상호 작용하는 명령을 입력할 수 있는 텍스트 기반 인터페이스다. CLI는 운영 체제와 사용자 사이에 있는 기본 쉘을 사용하여 작동한다. 쉘은 사용자와 운영 체제 사이의 중개자 역할을 하는 프로그램을 말한다. 예를 들어 보다 구체적인 기능을 위한 `Bash`, `cmd.exe`, `PowerShell` 등이 있다. ## CLI 사용법 ### Windows 1. 윈도우 키와 `S`를 누른다. 2. 검색 필드에 `cmd`를 입력한다. 3. `명령 프롬프트`를 마우스 오른쪽 버튼으로 클릭하고 `관리자 권한으로 실행`을 선택한다. 4. 이제 명령 프롬프트를 입력할 수 있다. ### Mac 1. 일반적으로 도구 모음에 있는 Finder 애플리케이션을 찾는다. 2. 애플리케이션/유틸리티로 이동한다. 3. `터미널`을 선택한다. 4. 이제 명령 프롬프트를 입력할 수 있다. ### Linux - `CTRL`+`ALT`+`T`를 사용하여 CLI에 엑세스한다. - 또는 `Alt`+`F2`를 사용한 다음 `gnome-terminal`을 입력할 수 있다. ## CLI 명령어 대부분의 CLI 명령어는 다음과 같은 구조를 따른다. ```bash 명령어 [옵션] [인자] ``` - 명령어: 수행할 작업을 지정 - 옵션: 명령어의 동작을 변경. 일반적으로 하이픈(-)으로 시작한다. - 인자: 명령어의 대상이 되는 파일이나 디렉토리를 지정. ### 파일 및 디렉토리 관련 명령어 | 명령 | Windows | Linux | | -------------- | ------------------------- | ------------------------ | | 디렉토리 변경 | `cd 경로` | `cd 경로` | | 디렉토리 목록 | `dir` | `ls` | | 디렉토리 생성 | `mkdir 디렉토리명` | `mkdir 디렉토리명` | | 디렉토리 제거 | `rmdir 디렉토리명` | `rmdir 디렉토리명` | | 파일 복사 | `copy 원본파일 대상위치` | `cp 원본파일 대상위치` | | 파일 이동 | `move 원본파일 대상위치` | `mv 원본파일 대상위치` | | 파일 이름 변경 | `ren 원래파일명 새파일명` | `mv 원래파일명 새파일명` | | 파일 삭제 | `del 파일명` | `rm 파일명` | ### 네트워크 관련 명령어 | 명령 | Windows | Linux | | ------------- | ------------------- | ------------------- | | Ping | `ping 주소` | `ping 주소` | | 경로 추적 | `tracert 주소` | `traceroute 주소` | | 네트워크 구성 | `ipconfig` | `ifconfig` | | 라우팅 테이블 | `route PRINT` | `route` | | DNS 조회 | `nslookup 도메인명` | `nslookup 도메인명` | | 네트워크 진단 | `netsh` | `netstat` | ### 정보 명령어 | 명령 | Windows | Linux | | --------------- | -------------------------- | ----------------- | | 프로세스 목록 | `tasklist` | `ps -ef` | | 프로세스 종료 | `taskkill /PID 프로세스ID` | `kill 프로세스ID` | | 시스템 정보 | `systeminfo` | `uname -a` | | 시스템 모니터링 | `perfmon` | `top` | ### 변수 및 환경 관련 명령어 | 명령 | Windows | Linux | | ------------------ | --------------- | ------------------ | | 환경변수 보기 | `set` | `printenv` | | 특정 환경변수 보기 | `echo %변수명%` | `echo $변수명` | | 환경변수 설정 | `set 변수명=값` | `export 변수명=값` | | 지역 변수 설정 | `set 변수명=값` | `변수명=값` | | 환경변수 제거 | `set 변수명=` | `unset 변수명` |