우리는 왜 명령어를 이용해서 리눅스를 다루게 되는 걸까?
우리가 GUI와 CLI를 이용해서 컴퓨터를 이용한다면 당연히 GUI가 많은 컴퓨터의 에너지를 사용하게 된다. 일반인들이 사용하는 컴퓨터 시스템은 쉽게 사용하게 하기 위해 많은 컴퓨터 에너지가 사용에 초점이 맞춰진다.
하지만 서버 컴퓨터 같은 경우 일반인에 대한 초점이 아니기 때문에 명령에 집중하는 기능만 가지면 컴퓨터 용량, CPU, Memory 등 에너지를 효율적으로 사용할 수 있다.
두 번째 이유는 GUI 방식은 쉽다는 장점이 있지만 많은 노동이 필요하다. 예를들어 GUI 시스템에서 일을 처리한다고 가정하면 주어진 프로그램을 실행시킬 때 어떤 일을 실행한 후 기다리고 완료된 후 다음일을 진행하게 된다. 즉 배우기는 쉽지만 그걸 이용해서 순차적으로 진행하는 일을 자동화 하기가 힘들다.
반면에 CLI는 그렇지 않다. 순차적으로 진행하는 일을 자동화 하는 것이 가능하다.
이제 우리는 CLI를 사용해야 하는 이유에 대해 실습 할 것이다.
먼저 디렉토리를 하나 만들어 준다.
그 후 그 디렉토리로 들어가 준다.
우리가 기본적으로 위 프로세스를 실행한다고 하면 위 사진처럼 먼저 디렉토리를 생성한 후 그 디렉토리로 들어갈 것이다.
다시 디렉토리를 지워준 후 순차적으로 실행할 수 있도록 명령어를 입력한다. 하나의 명령어를 입력한 후 다음 명령어와의 순서 차이를 주기 위해 세미콜론을 붙여준 후 다음 명령어를 입력하면 된다.
이렇듯 두개가 순차적으로 된다는 것은 두개 뿐만 아니라 세개 네개 이상으로 가능하기 때문에 단수를 실행시키는 것과는 차원이 다른 것이다.
그 다음 우리가 마지막으로 배울 것은 파이프라인이다.
파이프라인이란 무엇일까?
어느 한 곳에서 다른 곳으로 전송하는 특성을 비유적으로 표현하는 것이다. 즉 하나의 명령의 실행 결과를 다른 명령의 입력으로 주는 것이라고 할 수 있다.
우선 nano 명령어를 통해서 txt 파일을 하나 만들 것이다.
아무 내용이나 복사한 후 붙여 넣어 준다. 이 강의 영상에서는 위키피디아의 linux 부분을 긁어서 붙여넣어 줬다.
붙여 넣은 후 Ctrl+x 를 누르고 Y를 눌러 저장 해 준다.
그 후 잘 저장되어있는지 확인하기 위해서 cat 명령어를 사용해 linux.txt를 확인 해 준다.
파일이 잘 작성 되어 있는 것을 볼 수 있다.
우리는 이제 linux.txt 라는 파일 안에서 linux라는 단어가 포함된 행만을 찾으려고 할 때 grep이라는 명령어를 사용하면 된다.
grep이라는 명령어를 입력한 후 띄어쓴 후 내가 찾으려는 단어를 입력하고 띄어쓴 후 그 찾으려는 단어가 포함된 파일을 입력해준다.
확인을 해보니 linux라는 단어가 포함된 행만을 보여주는 것을 확인할 수 있다.
우리는 grep 라는 명령어를 살펴 보았다.
만약 우리가 ls 명령어중 sorting에 관한 도움을 받고 싶다면 어떻게 해야할까?
ls --help를 입력하면 이렇게 많은 항목들이 나오게 된다. grep을 사용하면 sort만을 포함시켜 출력할 수 있다.
위에서는 grep 후 찾으려는 단어, 단어를 찾으려는 파일이었다면 이 경우에는 ls --help 뒤에 파이프(|)를 넣어준 후 grep 명령어와 찾으려는 단어를 입력해주면 된다.
이렇게 보면 잘 출력된 것을 볼 수 있다.
이 결과를 보면 먼저 ls의 사용설명서가 먼저 출력이 되고 그렇게 출력이 된 결과를 파이프(|)로 연결해서 grep 이라고 하는 명령어의 입력으로 주는 것이다.
그렇게 되면 grep은 입력에서 sort가 포함된 텍스트만을 검색해서 화면에 출력시켜 주는 것이다.
만약 이 결과에 file이라는 단어까지 포함된 행을 찾으려면 똑같이 뒤에 파이프를 붙여준 후 grep 명령어를 입력해 주면 된다. 즉 하나의 출력 결과가 새로운 명령의 입력이 되며 이를 반복할 수 있다.
출처
https://opentutorials.org/course/2598/14190
'[Linux]' 카테고리의 다른 글
[Linux 기초] 쉘 스크립트란 무엇인가? (0) | 2022.12.17 |
---|---|
[Linux 기초] 쉘과 커널 (0) | 2022.12.14 |
[Linux 기초] 다운로드 방법 (wget, git) (0) | 2022.12.11 |
[Linux 기초] Package Manager (0) | 2022.12.08 |
[linux 기초] file edit (nano) (0) | 2022.12.07 |