1. 파이프
리눅스를 사용하다 보면 파일의 정보를 볼 때 특정 문자가 들어간 파일의 정보만 보거나,
한 페이지씩 나누어 보는 경우가 있습니다.
이때는 리눅스의 아주 편리한 기능이자 리눅스의 꽃인 파이프를 사용할 수 있습니다.
파이프는 두 프로그램을 연결하는 연결 통로를 의미하며, ‘|’( Shift + \ )를 사용합니다.
앞 명령어의 출력 결과를 뒤 명령어의 입력으로 사용한다는 뜻입니다.
파이프는 주로 필터와 같이 사용하는데 필터는 필요한 것만 걸러주는 명령어를 뜻하며,
grep, tail, wc, sort, awk, sed 등이 있습니다.
먼저 virtual box를 켜주도록 합시다.
다음 우분투를 실행합니다.
만약 우분투와 virtual box 가 없다면 아래 링크를 클릭해 다운받으시면 됩니다.
https://biw0102.tistory.com/30
다음 컨트롤+alt+t를 눌러 터미널을 열어줍시다.
cd 를 입력해 사용자의 홈 디렉터리로 가주도록 합시다.
실습은 모두 사용자의 홈 디렉터리에서 작업하겠습니다.
mkdir test로 test폴더를 생성합니다.
다음 ls로 생성한 폴더를 확인합니다.
다음 test폴더로 이동 후 touch로 a.txt파일을 만듭니다.
이 a.txt파일을 홈 디렉터리로 이동시키는 것과 동시에 hello world라는 내용을 입력해 보겠습니다.
이를 수행하기 위해선 먼저 mv명령어로 이동시킨 후 내용을 입력하는 방법이 있습니다.
하지만 한번에 수행하기 위해서는 파이프를 사용해야 합니다.
다음과 같은 방법으로 파이프를 사용할 수 있습니다.
먼저 mv a.txt ../ 명령어로 홈 디렉터리로 a.txt파일을 이동시킵니다.
../는 상대경로로 나의 현재 위치를 기준으로 나타내는 경로입니다.
다음 | 이후로 echo hello_world >> a.txt로 a.txt파일에 hello_world라는 내용을 입력합니다.
내 홈 디렉터리에 a.txt가 이동한 것을 확인하고 내용을 확인했을때
hello_world가 입력이 되어있는것을 확인할 수 있습니다.
echo는 터미널에 단순히 내용을 출력하는 명령어이며 >>는 리디렉션입니다.
이 외에도 ps -ef | grep bash로 모든 프로세스 번호를 출력하고 bash라는 글자가 들어간 프로세스만
출력하도록 할 수 있습니다.
또한 ls -l /etc | less로 출력 결과를 한페이지씩 볼 수도 있습니다.
파이프는 개념은 쉽지만 사용이 어렵습니다.
파이프를 잘 사용할 수 있다면 리눅스를 효율적으로 사용할 수 있습니다.
2. 리디렉션
리디렉션은 파이프와는 달리 개념이 어렵지만 사용이 쉽습니다.
먼저 리눅스의 파일 서술자에 대해 알아보겠습니다.
파일 서술자는 FD( File Descriptor )라고 부르며 입력, 출력, 에러장치로 이루어져있습니다.
모두 명령어의 표준 입출력과 오류를 담당합니다.
리디렉션은 표준 입출력의 방향을 바꾸는 것이며,
표준 입력은 키보드이고 표준 출력은 화면이지만, 이를 파일로 처리하고 싶을 때 주로 사용합니다.
>>는 명령어의 출력을 뒤에 있는 파일에 저장하겠다는 뜻이며
<<는 파일을 왼쪽 명령어에 넣겠다는 뜻입니다.
이중 >는 덮어쓰기 즉, overwrite이며 >>는 이어서 저장하기 즉, append입니다.
리디렉션은 이 외에도 2> 또는 2>&1과 같은 형식도 있습니다.
앞에 숫자는 FD번호를 뜻하며 2는 에러를 뜻합니다.
cd명령어로 test폴더로 이동합시다.
다음 ls -l > list.txt를 실행하고 cat으로 내용을 확인합니다.
위와 같이 list.txt에 ls -l의 결과가 저장된 모습을 볼 수 있습니다.
touch 명령어로 b.txt파일을 만들고 다시 위의 결과를 실행합니다.
이번에는 ls -l >> list.txt를 실행하겠습니다.
>와 달리 밑에 추가로 출력이 저장된 모습입니다.
이번에는 sort < list.txt 명령어를 실행하겠습니다.
list.txt가 정렬되어 출력되는 모습을 볼 수 있습니다.
마지막으로 find / -name ubuntu >> a.txt를 실행하겠습니다.
실행이 길어지면 컨트롤+c로 멈춰주시면 됩니다.
터미널에 많은 에러 메시지가 발생하고 cat으로 파일을 확인했을 때 정상 출력만 저장된 것을 볼 수 있습니다.
만약 >>를 2>로 바꾸면 a.txt에는 에러 메시지만 저장이 됩니다.
전에 썼던 명령어를 사용하고 싶다면 화살표 방향키 위를 누르시면 됩니다.
위 처럼 에러 메시지가 저장된 모습입니다.
다음 2>를 >로 바꾸고 명령어 맨 뒤에 2>&1을 입력해 실행합니다.
이 명령어는 에러 메시지도 정상 출력인 것처럼 a.txt파일에 저장합니다.
즉, 명령어를 실행하면 터미널에는 아무 출력이 없고 a.txt에 정상 출력과 에러 메시지가 저장됩니다.
다음 포스트에서는 리눅스 사용자 관리 시스템을 알아보겠습니다.
'리눅스' 카테고리의 다른 글
[linux] 리눅스 패키지 관리 (0) | 2023.09.05 |
---|---|
[리눅스] 리눅스 사용자 관리 시스템 (0) | 2023.05.30 |
[리눅스] 리눅스 기본 명령어 (0) | 2023.05.15 |
[리눅스] 우분투 리눅스 설치법 (1) | 2023.05.09 |
[리눅스] 리눅스란? 사용자 인터페이스와 리눅스 (0) | 2023.05.04 |