The Linux Command Line: A Complete Introduction (TLCL) 6장 정리 (Redirection 알아가기)

Ma_Seokjae·2023년 4월 12일
post-thumbnail

6장 Redirection


Redirection?

리눅스 셀에서 입력과 출력을 제어하는 방법
셀에서 실해되는 명령어의 출력을 파일로 저장 또는
파일을 입력으로 사용하는 등의 작업 수행을 의미

Redirecting Standard Output

  • >
    명령어의 실행 결과를 표준 출력(standard output) 대신에 파일로 저장하는 역할
    $ ls -l /usr/bin > ls-output.txt				//	ls -l /usr/bin 명령어의 출력 결과가 ls-output.txt 파일에 저장
  • >>
    리다이렉션을 통해 출력된 결과를 파일에 추가
    > 와 달리 >> 는 기존 파일 끝에 추가 내용을 붙이기 위해 사용
    $ ls -l /usr/bin >> ls-output.txt				// /usr/bin 디렉토리 내부의 파일들의 자세한 정보를 리스트로 출력하고, 그 결과를 ls-output.txt 파일에 추가(append)

Redirecting Standard Error

  • 2>
    standard error를 redirection하는 데 사용
    일반적으로 프로그램이 오류 메시지를 출력하는 경우, 해당 메시지는 standard error를 통해 출력
    $ ls -l /bin/usr 2> ls-error.txt				// 오류 출력 스트림을 ls-error.txt 파일로 리디렉션. 만약 /bin/usr 경로가 존재하지 않는다면, 오류 메시지는 ls-error.txt 파일에 기록
  • 2>&1
    stderr를 stdout으로 리디렉션하는 것을 의미
    standard output과 standard error를 모두 파일로 redirection하여 출력을 저장
    ls -l /bin/usr > ls-output.txt 2>&1			//  오류 출력 스트림을 표준 출력 스트림으로 리디렉션하여 모든 출력 스트림이 ls-output.txt 파일로 리디렉션. 즉, /bin/usr 경로의 ls -l 명령어의 모든 출력은 ls-output.txt 파일에 기록
  • &>
    명령의 표준 출력과 표준 오류 출력을 모두 파일로 저장할 때 사용
    $ ls -l /usr/bin &> ls-output.txt				// 명령의 표준 출력과 표준 오류 출력 모두를 "ls-output.txt" 파일로 저장
  • Disposing of Unwanted Output
    커맨드 라인에서 실행하는 명령어는 종종 에러 메시지나 출력값 등이 함께 출력되는 경우가 존재 이러한 출력값 중에서
    사용자가 필요한 정보가 아닌 경우, 이를 버리기 위해 Disposing of Unwanted Output을 사용
    • /dev/null
      • 파일의 끝에 있는 디바이스 파일로, 모든 데이터는 읽을 수 있지만 쓸 수는 X
      • 모든 데이터는 /dev/null로 전송되고 쓰여진 것처럼 처리
      • 불필요한 출력을 전송하거나 입출력을 무시 O
        $ ls -l /bin/usr 2> /dev/null		// ls 명령어의 stderr 출력을 /dev/null로 redirection

Pipelines

여러 개의 명령어를 조합하여 하나의 명령어로 실행하는 방법을 말하며,
한 명령어의 실행 결과를 다음 명령어의 입력으로 전달하는 방식으로 작동

  • |
    파이프라인은 | 기호로 구분하며, 기본적으로 이전 명령어의 표준 출력(stdout)을 다음 명령어의 표준 입력(stdin)으로 연결
    $ ls -l /usr/bin | less						// 지정 디렉토리 파일들의 상세 정보를 출력한 후, 이 정보들을 less 명령어로 전달하여 페이지 단위로 스크롤링하여 볼 수 있음

Redirection에 자주 사용되는 명령어

  • cat
    파일의 내용을 출력하는 명령어
    주어진 파일의 내용을 터미널에서 볼 수 있음
    파일을 읽기만 하며, 파일 내용 편집 x
    $ cat file.txt									// file.txt 파일의 내용을 출력
  • sort
    파일이나 텍스트를 정렬하는 명령어
    기본적으로 오름차순 정렬, '-r' 옵션을 사용하면 내림차순
    $ sort file.txt								// file.txt 파일 내용을 알파벳순으로 정렬하여 출력
    
    • Bonus
      • $ sort -n : -n 옵션은 sort가 숫자로 간주하도록 지정
      • $ sort -rn: -r은 역순 정렬을 수행하도록 지정
  • uniq
    파일에서 중복된 행을 제거하는 명령어
    주로 다른 명령어와 함께 사용
    $ uniq file.txt								// file.txt 파일 내용에서 중복된 라인을 제거하여 출력
  • grep
    텍스트 파일에서 특정 문자열을 찾는 명령어
    주어진 문자열이 파일의 어디에 있는지 찾아 출력
    grep "search term" file.txt					// file.txt 파일에서 "hello" 문자열을 포함한 라인만 출력
  • wc
    파일의 행 수ㅡ 단어 수, 문자 수를 세는 명령어
    파일 이름을 지정하면 해당 파일의 정보를, 지정하지 않으면 표준 입력에서 받은 정보 출력
    $ wc file.txt									// file.txt 파일의 행, 단어, 문자 수를 각각 출력
  • head
    파일의 처음부터 지정된 행 수만큼의 내용을 출력하는 명령어
    기본적으로 10줄 출력, '-n' 옵션을 사용하여 출력할 행 수 지정 가능
    $ head file.txt								// file.txt 파일의 처음 3줄만 출력
    • Bonus
      • $ head -n 3 : 파일의 처음 3줄을 출력
  • tail
    파일의 끝부터 지정된 행 수만큼의 내용을 출력하는 명령어
    기본적으로 10줄 출력, '-n' 옵션을 사용하여 출력할 행 수 지정 가능
    $ tail file.txt								//  file.txt 파일의 마지막 3줄만 출력
    • Bonus
      • $ head -n 3 : 파일의 끝에서부터 3줄을 출력
  • tee
    표준 입력을 받아 파일로 출력하는 동시에 출력을 터미널로 보여주는 명령어
    파일 이름을 지정하여 파일로 출력, '-a' 옵션을 사용하여 파일에 내용 추가 가능
    $ command | tee file.txt						// file.txt 파일에 명령어 결과를 추가하면서 동시에 화면에 출력

혹시 이해가 안되는 부분이 있으시거나, 잘못된 부분 있다면 댓글로 남겨주시면 감사하겠습니다 :)

profile
Why not change the code?

0개의 댓글