Linux Redirection & PIPE

심야·2023년 8월 18일
0

데브옵스

목록 보기
7/13

Redirection & PIPE

--------------입력---------------->

사람 <-----> 운영체제 <----> 컴퓨터

<-------------출력----------------

  • 표준 입력
    standard input stream => 0으로 표현한다.
  • 표준 출력
    standard output stream => 1으로 표현한다.
  • 표준 에러
    standard error stream => 2으로 표현한다.

파일 디스크립터 (fd)

리눅스는 모든 데이터를 파일로 관리한다. 파일 디스크립터란 파일을 처리하기 위한 아이디이다.

리다이렉션

출력 결과를 특정 파일에 저장하며 명령어 결과를 파일에 저장하고 싶을 때 사용한다.

pwd > pwd_result
/home/kali/redirection_test
pwd >> pwd_result # 꺽쇠를 2번 사용하면 이어서 쓸 수 있다.
/home/kali/redirection_test
/home/kali/redirection_test

2>

pwd > pwd_result 명령어는 표준 출력, 1이 생략되어 있다.

find / -name "rockyou.txt.gz"
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/openvas/gnupg’: Permission denied
find: ‘/etc/ssl/private’: Permission denied

find / -name "rockyou.txt.gz" 2> /tmp/errorMsg 명령어에서 2>는 표준 에러를 의미하며 에러 결과를 /tmp/errorMsg 파일에 리다이렉션 하라는 의미이다.

# 에러 메시지를 errorMsg 파일로 리다이렉션한다.
find / -name "rockyou.txt.gz" 2> /tmp/errorMsg 
/usr/share/wordlists/rockyou.txt.gz

# 에러 메시지를 리다이렉션 후 날려버리기 때문에 파일 생성이 필요없다.
find / -name "rockyou.txt.gz" 2> /dev/null 
/usr/share/wordlists/rockyou.txt.gz

PIPE (|)

		출력  	   입력		   출력
프로세스 ==>	 파이프 ==> 프로세스 ==>	

어떤 프로세스의 출력을 다른 프로세스의 입력으로 넣어주고 싶을 때 사용한다.
Ex) ls /bin | grep "find"

ls /bin 명령어를 사용하면 bind 디렉토리의 모든 파일이 출력되기 때문에, 찾고 싶은 파일을 찾을 수 없다.

이러한 경우, | grep [찾는 문자열]을 사용하면 /bin 디렉토리 출력 결과에서 grep 명령어로 찾는 문자열과 일치하는 결과만 출력한다. 따라서 ls /bin | grep "find" 명령어를 사용하면 아래와 같이 find 문자열을 포함한 파일만 출력한다.

profile
하루하루 성실하게, 인생 전체는 되는대로.

0개의 댓글