리눅스는 각각의 명령어가 가능한 작고 간단한 동작만 실행하고, 여러 가지 명령어를 조합하여 더 큰 동작을 실행하도록 한다. 즉, 각각의 작은 기능을 하는 명령어들의 조합으로 전체 시스템이 동작하도록 한다.
명령어들을 조합하는 두가지 방법인 리다이렉션과 파이프에 대해 알아보자.
표준 입출력(Standard Stream)
리눅스는 CLI(Command Line Interface)라는 명령어 기반 운영체제이다.
셸에 입력하는 command로 실행되는 운영체제 이기 때문에 가장 기본적인 명령어 입력, 출력, 오류 세가지의 스트림이 존재한다.
- 표준 입력 스트림(Standard Input Stream) - stdin
- 표준 출력 스트림(Standard Output Stream) - stdout
- 오류 출력 스트림(Standart Error Stream) - stderr
표준 출력, 오류 출력 스트림은 plain text로 콘솔에 출력되게 된다.
이러한 입출력을 리다이렉션과 파이프를 이용해서 다룰 수 있다.
리다이렉션 (redirection)
리다이렉션은 영어 그대로 방향을 변경하는 것을 말한다.
즉, 리다이렉션을 이용하면 표준 스트림의 흐름을 바꿔줄 수 있다.
키보드로 표준 입력을 받거나, 화면으로 표준 출력을 하는 것이 아니라,
파일로 표준 입력을 받고, 파일에 표준 출력을 받는 등의 기능을 제공한다.
' > ' , ' < ' 기호를 사용해서 리다이렉션을 나타낸다.
(명령어) > (파일)
명령어의 결과(표준 출력)를 파일에 덮어 쓴다.
(명령어) < (파일)
파일의 내용을 명령어의 입력으로 사용한다.
(명령어) >> (파일)
명령어의 결과를 파일에 추가한다.
기존에 있는 파일의 끝에 해당 명령어의 출력 결과를 추가해서 저장한다.
(ex)

위와 같이 pwd 명령어로 현재 위치를 찾고,
/home/ubuntu 디렉터리에서 ls 명령어를 실행해서 list.txt, temp.txt 파일이 존재하는 것을 찾았다.
' > ' 리다이렉션 명령어를 이용해서 ls 결과를 redirectionTest.txt라는 파일에 입력해 보자.

cat 명령어로 redirectionTest.txt를 확인해 보니 해당 파일에 ls 명령어에 대한 출력값이 저장되어 있는 것을 볼 수 있다.
파이프(pipe)
두 프로세스 사이에서 한 프로세스의 출력 스트림을 다른 프로세스의 입력 스트림으로 사용하고자 할 때 사용한다.
즉, 첫 번째 명령어의 결과를 두 번째 명령어의 입력으로 이용할 수 있다.
파이프는 이전 명령어의 출력값을 필터링하거나 가공할 때 주로 사용하기 때문에 awk, cut, grep, more 등의 명령어들과 조합해서 많이 사용한다.
grep 명령어
grep 명령어는 특정 파일에서 지정한 문자열을 포함한 행을 출력해 주는 명령어이다.
어떤 파일에서 어떤 문자열을 포함한 행을 찾을 때 pipe와 grep 명령어를 조합해서 많이 사용한다.
pipe + grep
ex 1)
ls | grep (검색어)
ls의 결과를 grep 명령어의 입력으로 사용하여, ls의 결과들 중 (검색어)가 포함된 행만 출력할 수 있다.
ex 2)
cat temp.txt | grep update
temp.txt의 내용을 읽는 명령어 cat의 결과를 grep 명령어의 입력으로 넣어 'update'가 포함된 행만 출력하도록 할 수 있다.
두번째 명령에서는 바로 아래서 다룰 옵션 중 하나인 -n 을 추가해 봤다.
grep 명령어 옵션
grep 명령어는 기본적으로 옵션, 패턴, 파일명과 함께 쓰인다.
grep [옵션] [패턴] [파일명]
원래는 [파일명] 파일에서 [패턴]을 포함한 행을 찾는데, pipe와 함께 사용하면 입력받은 값에서 [패턴]을 포함한 행을 찾을 수 있는 것이다.
이런 검색을 진행할 때 여러 가지 옵션을 설정해 줄 수 있다.
- -i : 대소문자를 구별하지 않는다.
- -v : 패턴을 포함하지 않는 라인을 출력한다. (여집합 개념)
- -n : 각각의 검색 결과 행의 번호를 함께 출력한다.
- -l : 파일의 이름만 출력한다.
- -c : [패턴]과 일치하는 행의 개수만 출력한다.
- -r : 하위 디렉터리를 포함한 모든 파일에서 검색한다.
- -w : 검색어와 일치하는 행만 출력한다.
- -m (숫자) : 최대로 표시될 수 있는 검색 결과의 수를 제한한다.
- -E : 찾을 패턴을 정규 표현식으로 찾는다.
- -F : 찾을 패턴을 문자열로 찾는다.
'[ Computer Science ] > Linux 리눅스' 카테고리의 다른 글
[Linux/Unix] POSIX란? (포직스, 이식 가능 운영체제 인터페이스, Unix 표준) (0) | 2024.04.17 |
---|---|
[리눅스] VI 에디터 명령어 정리 (0) | 2023.07.21 |
[리눅스] 파일 복사, 하드 링크와 소프트 링크 (0) | 2023.07.10 |
[리눅스] 프로세스, 상태 확인하기 (0) | 2023.07.10 |
[리눅스] 기본 명령어 (0) | 2023.07.06 |