[Linux] 8. 왜 CLI인가?
왜 배우기 어려운 명령어(CLI)를 사용하는 것일까?
GUI (graphical user interface) vs CLI (command line interface)
리눅스는 사용하기 쉬운 GUI방식이 있지만 CLI방식을 고수하고 있다. 그 이유는 무엇일까?
GUI 방식 :
1. 에너지를 훨씬, 훨씬 많이 쓴다.
일반인들은 쉽게 사용하기 위해 아이콘이나 마우스, 즉 사용성을 높인다.
2. GUI방식은 쉽지만 상당히 많은 노동이 필요하다.
주어진 프로그램을 실행할 때 일이 끝날 때까지 기다려야 한다. 순차적인 작업을 할 때 적합하지 않다.
CLI 방식 :
1. 훨씬 더 적은 ‘컴퓨터 파워’(CPU나 메모리를 덜 차지함)를 이용해서 컴퓨터 동작시킨다.
서버컴퓨터나 데이터를 분석하는 시스템들은 일반인들이 쓰는게 아니므로
명령어로 컴퓨터 제어 능력만 가지면서 컴퓨터 용량도 덜 차지하고 CPU, 메모리를 덜 차지하는 방식이 좋다.
Heavy한 작업을 하는 사람들
2. 여러 일을 동시에 시키면 한 일이 끝나고 차례로 다른 일을 진행한다.
결과만 받으면 된다. 순차적 일을 잘 처리해낸다.
순차적으로 실행
CLI를 통해 얻을 수 있는 강력한 효과를 봐보자
세팅
1. 디렉토리를 하나 만든다. mkdir why 엔터
2. 그 디렉토리로 들어간다. cd why 엔터
3. 이전으로 돌아 온다 cd .. 엔터
4. 만들었던 디렉토리를 삭제한다. rm -rf why
이렇게 따로 따로 할 수도 있지만 이걸 한번에 실행시킬 수 있다.
각 명령 사이에 ; 로 구분지어주면 명령을 헷갈리지 않고 실행시켜준다.
첫 명령 실행 후에 ; 다음의 명령을 실행한다는 의미이다.
mkdir why; cd why (4개, 5개 … 여러 개 가능하다)
내가 순차적으로 명령을 지시하면 컴퓨터는 명령을 순서대로 실행하여 결과를 보여준다.
프로그래밍 : 순서대로 명령이 실행된다.
파이프라인
무언가를 어느 한 곳에서 다른 곳으로 전송한다.
하나의 명령의 실행 결과를 다른 명령의 입력으로 준다.
하나의 프로그램의 결과를 다른 프로그램에 입력으로 준다.
하나의 프로세스의 출력을, 결과를 다른 프로세스의 입력으로 준다.
이런 기능을 통해 굉장히 강력한 효과를 만들어 낼 수가 있다.
greb (그랩) : 어떠한 정보에서 나에게 필요한 정보가 포함되어 있는 줄, 행을 찾는 명령
//그랩에 대한 예시
텍스트파일을 하나 만든다.
nano linux.txt 엔터
위키피디아 linux 내용 복사 붙어넣기
ctrl + X Y 엔터 하면 저장된다.
linux.txt 내용을 확인하고 싶으면
cat linux.txt 엔터 하면 cat이라고 하는 것이 화면에 출력해준다.
여기 linux.txt 파일 안에서 linux라는 텍스트가 포함되어 있는 행만을 출력하고 싶다.
하면 이 때 greb을 사용한다.
greb linux linux.txt 엔터하면
linux가 포함되어 있는 행만을 화면에 표시해준다.//
리스트를 출력하고 싶을 때 ls를 사용한다.
이 때 정렬과 관련된 설명이 궁금하다.
ls --help 에서 sort가 포함된 행을 화면에 출력할 수 있다면 편리할 것이다.
이 과정에서 파이프 |를 사용한다.
ls --help | grep sort
ls --help 를 하면 출력이 될 텐데 그것을 grep이라고 하는 명령에 입력으로 주는 것이다.
grep은 그 입력 중 sort 텍스트만을 검색해서 그것을 화면에 표시해 준다.
그럼 그 결과에서 다시 file이라는 키워드 찾고 싶으면 다시 파이프로 연결
ls --help | grep sort | grep file
grep 라는 유용한 프로그램과 | (파이프) 라는 것을 배웠다.
자신의 컴퓨터에서 현재 실행되고 있는 프로그램들의 리스트는 ps를 통해 확인 할 수 있다.
process라는 뜻이다.
ps aux 엔터하면 현재 실행 중인 많은 프로그램들이 출력된다.
이 경우 원하는 프로그램만을 찾아보고 싶으면
ps aux | grep apache 엔터하면 apache 라는 텍스트가 포함되어 있는 것만 화면에 가져온다.