CLI (Command-line Interface) : 커맨드라인 인터페이스
사용자가 텍스트로 명령어를 입력하면 결과를 텍스트로 화면에 출력해주는 컴퓨팅 인터페이스를 말합니다. 구체적인 프로그램을 가리키는 단어는 아니며, 특정 방식의 애플리케이션 인터페이스에 대한 통칭입니다.
MS-DOS나 리눅스 초기의 컴퓨팅 환경은 텍스트 기반의 CLI가 유일한 사용자 인터페이스였습니다. 현재는 GUI(Graphical User Interface)가 더 보펴적으로 사용되고 있습니다.
하지만 개발 환경이나 서버 관리 용도로는 여전히 CLI가 많이 사용되고 있습니다. 그렇기 때문에 서버 개발자가 되기 위해서는 CLI를 이해하고 다룰 줄 알아야한다고 생각합니다.
CLI의 장점은 프로세스간 입출력 전달이나 자동화에 최적화가 되어 있으며, 텍스트 입출력만으로 프로그램을 작성할 수 있기 때문에 개발이 매우 편리하다는 점입니다. 이런 이유로 많은 개발 도구들은 CLI를 기본적으로 채택하고 있습니다.
Terminal : 터미널
입력과 출력이 가능한 하드웨어 장비를 의미하며, 콘솔이라고도 부릅니다. 좀 더 정확히 말하면 운영체제 커널과 연결가능한 문자 입출력 기능을 가진 물리 장비를 의미합니다. 리눅스나 맥 OS에 있는 터미널은 물리 하드웨어를 소프트웨어로 구현한 애플리케이션입니다. 그렇기 때문에 가상 터미널 혹은 터미널 애뮬레이터라는 이름이 더 정확합니다.
Terminal Usage : 터미널 사용방법
Terminal 실습 : JSLinux
Shell : 셸
CLI로 구현된 가장 대표적인 프로그램입니다. 특정한 목적을 가지고 실행되는 프로그램이라기보다, 컴퓨터에 명령을 내리기 위한 인터페이스 역할을 합니다. 커맨드라인이라는 표현은 셸 자체를 지칭한다고 생각해도 좋습니다.
Read-eval-print loop : REPL
사용자가 입력한 명령어를 읽어들이고(Read), 평가하고(Eval), 결과를 출력하는(Print) 과정을 반복하는(Loop) 명령줄 인터페이스의 특징을 잘 나타냅니다. 셸은 리눅스 환경에서 사용하는 가장 기본이 되는 프로그램입니다.
[참고]
2. 커맨드라인 사용법
'Backend > OS' 카테고리의 다른 글
[OS] Process Management (3) _ 쓰레드, 쓰레드 동기화, 세마포어 (0) | 2022.07.31 |
---|---|
[OS] Process Management (2) _ CPU 스케줄링 (0) | 2022.07.27 |
[OS] Process Management (1) _ 프로세스, 멀티프로그래밍 (0) | 2022.07.26 |
[OS] How OSs work in General (0) | 2022.07.22 |
[OS] Terminal Usage (2) _ Terminal 명령어 (0) | 2022.07.19 |