TIL - pipeline, IO redirection
이 글은
생활코딩-Linux
강좌를 토대로 작성하였습니다.
;(semicolon)
리눅스 환경에서 세미콜론으로 여러 명령어를 한번에 실행할 수 있다.
-why
라는 디렉터리를 만들고 그 폴더로 바록 이동하고 싶다면 다음과 같은 명령어를 수행하면된다.
% mkdir why;cd why
;
(semicolon)를 사용하여 여러 명령을 동시에 수행할 수 있다.
pipeline
cat
: 해당 파일의 내용을 불러오는 명령어
cat 파일이름.확장자
grep
: 해당 파일에서 특정 문자열이 있는 행을 출력해주는 명령어
grep + 검색단어 + 파일이름.확장자
|
: 왼쪽 명령어의 결과(output)을 오른쪽에 있는 명령어에 입력(input)으로 전달합니다.
man ls | grep sort | grep file
cat
: 해당 파일의 내용을 불러오는 명령어cat 파일이름.확장자
grep
: 해당 파일에서 특정 문자열이 있는 행을 출력해주는 명령어grep + 검색단어 + 파일이름.확장자
|
: 왼쪽 명령어의 결과(output)을 오른쪽에 있는 명령어에 입력(input)으로 전달합니다.man ls | grep sort | grep file
다음과 같은 양식으로 사용 가능
IO redirection(Input/Output redirection)
- 입출력 대상으로 표준 입력, 표준 출력, 표준 오류를 사용하지 않고 다른 경로인 파일로 재지정 하는 것
- 즉, 명령은
redirection
을 통해 파일로부터 입력받을 수 있고, 파일로 출력할 수 있음
- 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있음
redirection
을 통해 파일로부터 입력받을 수 있고, 파일로 출력할 수 있음Unix process
에는 여러가지 입출력이 존재한다. 위 사진을 참고하여 학습해보자.
Stdin
-> Unix Process
-> stdout
, stderr
로 입력값이 입력되고 프로세스를 거쳐 결과값을 출력하는 일련의 과정을 IO Stream
이라고도 한다.
Unix process
: 기본 명령어들을 말한다.
% ls
% man
% cd
...
Command-line Arguments
: 기본 명령어들의 옵션 명령어를 말한다.
프로세스 뒤에-l
과 같은 부수 명령어를 말한다.
% ls -l
% ls -al
% rm -r
...
StandardOutput
: 명령어들의 출력값을 말한다.
>
,1>
의 기호로 사용함.
% ls -l
위 명령어를 입력했을 때 다음의 결과를 보여준다.
위 사진의 결과값들을 StandardOutput
이라한다. 기본적으로 모니터에 출력이 된다.
모니터의 출력된 결과값을 입력값을 redirection
시켜 파일에 저장할 수 있다. 그때 필요한 것이 redirection
기호인 >
을 사용하면 된다.
만약 위 사진의 출력값을 원하는 파일(empty_Linux.txt)에 저장하고 싶다면 다음과 같은 명령어를 사용하자.
% ls -l > empty_Linix.txt
위 명령어를 수행하면 empty_Linix.txt
파일에 입력값으로 ls -l
의 출력값이 redirection
되어서 저장된다.
StandardError
: 명령어들의 출력값 중 에러가 발생한 경우
2>
의 명령어로 사용
유닉스 계열의 시스템에서 프로세스의 결과값은 StandardOutput
와 StandardError
2가지로 나눌 수 있다.
위에서 StandardOutput
을 redirection
하기 위해선 >
기호를 사용하였다고 했다. 하지만 >
는 1>
숫자 1이 생략된 상태이다. 그렇기에 StandardError
를 사용하기 위해서는 2>
숫자2를 앞에 붙여줘야한다.
예를 들어 result.txt
파일을 삭제하는 예시를 한번 보자.
% rm result.txt
정상적으로 삭제가 될 것이다. 하지만 한번 더 명령을 수행한다면 삭제할 파일이 없기 때문에 다음과 같은 오류가 출력된다.
rm: result.txt: No such file or directory
이 오류를 result2.txt
파일에 오류 출력 메세지를 저장하고 싶다면 다음과 같은 명령어를 수행해야한다.
% rm result.txt 2> result2.txt
StandardError
값은 result2.txt
에 저장되었다. 이 파일 안에있는 오류 출력 메세지가 잘 저장되었는지 내용을 불러와보자.
% cat result2.txt
명령어를 수행하면 다음과 같이 결과값이 잘 나타는 것을 알 수 있다.
rm: result.txt: No such file or directory
StandardInput
: 프로세스에 표준입력으로 input을 시키는 명령
<
의 기호로 명령
예시로 살펴보자.
% cat hello.txt
% cat < hello.txt
차이점은
% cat hello.txt
: cat
이라는 프로세스에 hello.txt
라는 Command-line Arguments
로 인자값을 전달한 경우
% cat < hello.txt
: cat
이라는 프로세스에 hello.txt
라는 StandardInput
으로 입력값을 받은 경우이다.
append
>
기호는 input
을 redirecton
시켜 덮어쓰는 명령어였다. 덮어쓰기 말고 그대로 입력값을 추가 하고 싶을 때는 >>
기호를 사용한다.
Author And Source
이 문제에 관하여(TIL - pipeline, IO redirection), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ssaboo/TIL-no.31-Linux저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)