리눅스 리다이렉션(Redirection)

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

웹 상에서 리다이렉션(Redirection)은 웹 브라우저가 특정 URL을 요청했을 때, 미리 지정된 다른 URL로 재요청하게 하는 것을 말합니다. 재 연결의 사전적인 의미를 가진 Redirection은 리눅스에서 입력과 출력을 다루는 방식으로, 데이터를 파일로 보내거나 파일에서 읽어오는 작업을 수행할 수 있게 해줍니다.

리눅스 리다이렉션은은 키보드로 입력, 화면으로 출력을 하는 것이 아니라 파일로 출력하는 것을 의미합니다. 리다이렉션에는 표준 입력, 표준 출력, 표준 에러로 나뉩니다.

표준 출력은 일반적인 출력을 의미합니다.

 var]# ls
adm    db     ftp    kerberos  local  log   nis  preserve  snap   tmp  yp
cache  empty  games  lib       lock   mail  opt  run       spool  www

ls 명령어를 실행했을 때 정상적인 결과가 표준 출력으로 화면에 출력됩니다.

다시 ls 명령어를 실행했을 때,

 ~]# ll /home/testuser
ls: cannot access '/home/testuser': No such file or directory

파일 및 디렉토리가 없다는 오류 메시지가 출력됩니다. 지금 사용된 방식이 표준 에러입니다.

아래의 명령어들은 리눅스 리다이렉션을 활용할 때 자주 사용되는 기본 명령어들입니다.

  • 리눅스 리디렉션에서 활용되는 명령어 목록
  • cat – 파일 출력
  • sort – 텍스트 정렬(기본 오름차순)
  • uniq – 반복되는 행 생략
  • grep – 패턴과 일치하는 행 출력
  • wc – 각 파일의 줄(행) 바꿈, 단어 및 바이트 수 출력
  • head – 파일의 첫 행 출력(기본 10줄)
  • tail – 파일의 마지막 행 출력(기본 10줄)
  • tee – 표준 입력에서 읽고 표준 출력 및 파일에 쓰기

✅ 리눅스 리다이렉션: 표준 출력, 표준 입력, 표준 에러

리눅스 ls, cat 명령어 등은 기본적인 표준 출력을 나타냅니다. 리눅스 리다이렉션은 표준 입력(Standard Input)과 표준 출력(Standard Output)으로 나뉘기 때문에 I/O 리다이렉션(리디렉션)으로 부릅니다.

1. 표준 출력(Std Out : Standard Output) 리디렉션: >, >>

표준 출력의 재정의는 >와 >>로 정의합니다. 화면으로 출력하는 것이 아닌 출력하는 새로 생성한 파일로 리디렉션을 합니다. 오른쪽 부동표 “>” 기호를 사용해서 리디렉션 연산자를 사용하는 예시는 아래와 같습니다.

 httpd]# tail access_log > log_file
 httpd]#cat log_file
88.198.9.155 - - [09/May/2025:23:51:47 +0900] "GET / HTTP/1.1" 301 232 "-" "-"
47.128.121.53 - - [09/May/2025:23:51:50 +0900] "GET /seo-%ed%82%a4%ec%9b%8c%eb%93%9c-%eb%a6%ac%ec%84%9c%ec%b9%98%eb%a5%bc-%ed%86%b5%ed%95%9c-%ed%82%a4%ec%9b%8c%eb%93%9c-%ec%84%a0%ec%a0%95-%ec%a0%84%eb%9e%b5-5%ea%b0%80%ec%a7%80/ HTTP/2.0" 301 399 "-" "Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; TikTokSpider; ttspider-feedback@tiktok.com)"
47.128.121.53 - - [09/May/2025:23:51:50 +0900] "GET /seo-%ed%82%a4%ec%9b%8c%eb%93%9c-%eb%a6%ac%ec%84%9c%ec%b9%98%eb%a5%bc-%ed%86%b5%ed%95%9c-%ed%82%a4%ec%9b%8c%eb%93%9c-%ec%84%a0%ec%a0%95-%ec%a0%84%eb%9e%b5-5%ea%b0%80%ec%a7%80/ HTTP/2.0" 200 118683 "-" "Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; TikTokSpider; ttspider-feedback@tiktok.com)"
### 생략 ###

tail 명령어는 마지막 10줄을 표준 출력을 키보드에서 터미널로 보내는 것이지만 지금과 같은 경우 키보드에 입력한 내용이 터미널이 아닌 log_file로 보내졌음을 알 수 있습니다.

> log_file로 입력하면 기존의 저장된 로그가 사라집니다. 기존의 내용이 없어지고 새로운 내용이 남게 되기 때문입니다. tail access_log > log_file과 같이 입력하면 새로운 내용이 입력되고 새로운 로그가 남게 되는 것입니다. 이럴 때 기존 로그를 남기면서 사용하는 표준 출력 행을 추가하는 방법은 ‘>>’ 입니다.

2. 표준 입력(Stdin : Standard In) : <

표준 입력은 ‘<‘를 사용합니다.

 httpd]# cat < log_file
88.198.9.155 - - [09/May/2025:23:51:47 +0900] "GET / HTTP/1.1" 301 232 "-" "-"
47.128.121.53 - - [09/May/2025:23:51:50 +0900] "GET /seo-%ed%82%a4%ec%9b%8c%eb%93%9c-%eb%a6%ac%ec%84%9c%ec%b9%98%eb%a5%bc-%ed%86%b5%ed%95%9c-%ed%82%a4%ec%9b%8c%eb%93%9c-%ec%84%a0%ec%a0%95-%ec%a0%84%eb%9e%b5-5%ea%b0%80%ec%a7%80/ HTTP/2.0" 301 399 "-" "Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; TikTokSpider; ttspider-feedback@tiktok.com)"
47.128.121.53 - - [09/May/2025:23:51:50 +0900] "GET /seo-%ed%82%a4%ec%9b%8c%eb%93%9c-%eb%a6%ac%ec%84%9c%ec%b9%98%eb%a5%bc-%ed%86%b5%ed%95%9c-%ed%82%a4%ec%9b%8c%eb%93%9c-%ec%84%a0%ec%a0%95-%ec%a0%84%eb%9e%b5-5%ea%b0%80%ec%a7%80/ HTTP/2.0" 200 118683 "-" "Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; TikTokSpider; ttspider-feedback@tiktok.com)"
### 생략 ###

표준 입력 시 표준 입력은 키보드가 아닌 log_file이 되며, 표준 출력은 터미널입니다.

참고 사항으로, < 는 “파일을 표준 입력으로 사용한다”는 의미로, 생략된 표현이라기보다는 명확하게 리다이렉션을 나타내는 기호입니다. cat log_file과 cat < log_file은 동일한 결과를 출력하지만, < 기호는 파일을 명시적으로 입력으로 사용한다고 지정하는 역할을 합니다.

3. 표준 에러(Stderr : Standard error) : 2> , 2>>

표준 에러의 출력은 2>를 사용합니다. 표준 출력은 터미널 화면에 에러 메시지가 나타납니다.

TestUser]# ls www > errorfile
ls: cannot access 'www': No such file or directory

반면 2>를 사용할 경우

TestUser]#ls www 2> errorfile
TestUser]# cat errorfile
ls: cannot access 'www': No such file or directory
 TestUser]# 

터미널에 에러 메시지가 출력되지 않지만 errorfile에 오류 내용이 기록됩니다. 이는 명령어에 오류가 발생하지 않았을 경우 errorfile은 생성되지만 빈 내용만 남게 됩니다.

기존 파일의 내용을 보관하고 추가하기 위해 2> 대신 2>>를 사옹하게 됩니다.

✅ 파일 디스크립터(FD: File descriptor서술자)와 리디렉션 기호

※파일 디스크립터(File Descriptor)란?
리눅스와 유닉스에서는 시스템을 전부 파일로 처리하여 관리합니다. (하드웨어 등 모든 장치도 포함)
시스템에서 프로세스가 파일에 접근하기 위한 방법으로 파일 디스크립터(FIle Descriptor)라는 핸들이 필요합니다.

해당 파일을 open할때(해당 파일에 접근할 때) 파일 디스크립터는 0부터 N까지 즉, 음수가 아닌 0부터 차례대로 숫자를 부여 받습니다. 0, 1, 2는 프로세스가 메모리에서 실행을 시작할 때 기본적으로 할당되는 파일 디스크립터입니다.

리눅스 셸은 디스크립터를 각각 0, 1, 2로 표현합니다.

표준 입력이 0, 표준 출력이 1, 표준 오류는 2로 표시합니다.

I/O 리디렉션리디렉션리디렉션 추가표준 입력 리디렉션
 >>><
파일 디스크립터표준입력 표준 출력표준 오류
 01 ( >와 1>은 동일한 의미)2
  • 표준 오류를 파일로 출력하는 방법은 다음과 같습니다.
~]# ls -l abc(없는 파일) 2> abc.txt  
ls: cannot access abc: No such file or directory 
~]# cat  abc.txt
cat: abc.txt: No such file or directory
리다이렉션 기호방향의미
  >표준 출력명령 > 파일 : 명령의 결과를 파일로 저장
  >>표준 출력 (추가)명령 >> 파일 : 명령의 결과를 기존 파일에 추가하여 저장
  <표준 입력명령 < 파일 : 파일의 내용을 명령에 입력

1. I/O 리디렉션 하나의 파일로 리디렉션 하기

표준 출력과 표준 오류를 하나의 파일로 리디렉션 하는 방법은 다음과 같습니다. 리눅스 셸에서 사용되던 가장 전통적인 방법입니다. 표준 출력과 표준 에러를 한꺼번에 저장하기 위해 &>을 사용합니다.

ls -l www &> www.txt
ls -l www &>> www.txt
  • &은 파일이 아닌, 파일 “디스크립터를 참조한다.“라는 의미를 가지고 있으며, 기존의 백그라운드 명령어와는 다르게 작동합니다.
  • 리눅스 리다이렉션에서 엠퍼센트(&)는 리디렉션 연산자의 문자 역할을 합니다.
ls -l www > www.txt 2>&1
  • 먼저 www 파일이 텍스트 파일로 표준 출력 리디렉션이 된 다음에, “2>&1” 표기로 표준 오류를 표준 출력으로 리디렉션 합니다.
  • 표준 오류 리디렉션 순서: 표준 오류 리디렉션은 표준 출력 리디렉션 이후에 수행하며, 반대인 경우 작동하지 않습니다.
  • 이 후 버전의 bash에서 간소화된 리디렉션 수행을 할 수 있습니다.

[ls -l www &> www.txt]에서 &>은 bash의 전용 문법입니다.

&>는 다음 두 명령의 의미를 동시에 수행합니다.

ls -l www &> www.txt는 표준 출력(1)과 표준 에러(2)를 모두 www.txt로 리디렉션하는 명령입니다. 여기서 생략된 것은 다음과 같습니다:

> — **표준 출력(1)**을 www.txt로 리디렉션
2>&1 — **표준 에러(2)**를 표준 출력이 향하는 곳(www.txt)으로 리디렉션

2. 리눅스 리다이렉션 “/dev/null”로 보내기

없는 파일로 리디렉션을 할 때 다음과 같이 사용할 수 있습니다.

리눅스 이미지

✅ 표준 입력(Standard Input) 연산자

명령행 인자 없이 cat 명령어를 입력 했을 때 아무 일도 일어나지 않지만 cat 명령어는 표준 입력으로 실행되고 있습니다. [Ctrl-d] 키로 빠져 나옵니다.

~]# cat
^C
~]#

✅ 파이프라인(Pipeline) 연산자

파이프라인(Pipeline)을 활용하면 표준 출력을 표준 입력으로 연결합니다.

ls /bin /usr/bin | sort | uniq | wc -l
1008
핸드폰 안의 리눅스

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • 리눅스 ls 명령어

    ls 명령어는 list의 약자이며, 리눅스 파일과 디렉토리를 볼 수 있는 명령어입니다. 파일의 종류와 파일의 크기, 만들어진 날짜 등의 정보를 확인할 수 있습니다. ✅ ls 명령어 기본 사용 방법 ls 명령어 사용 시 [파일 or 디렉토리]를 입력하지 않으면 현재 디렉토리를 검색합니다. ✅ ll 명령어(ls -l) ll 명령어는 일반적으로 리눅스에서 ls -l 명령어를 간편하게 쓰기…

  • 리눅스 uniq 명령어

    리눅스 uniq 명령어는 “unique”의 약자이며, 텍스트 파일에서 중복된 행을 제거하고 하나의 행만 출력하는데 사용됩니다. 중복된 텍스트 데이터를 제거하고 몇 번의 반복이 있었는지 등을 확인할 때 매우 유용하게 사용할 수 있습니다. ✅ 리눅스 uniq 명령어 기본 사용법 INPUT 파일은 대상 파일로써 표준 입력에서 읽은 후 기본 출력을 진행합니다. OUTPUT 파일은 리디렉션 파일을 의미합니다. ✅…

  • 리눅스 tree 명령어

    tree 명령어는 디렉토리 안의 파일과 디렉토리를 나무 형태로 출력하는 명령어입니다. 디렉토리 구성을 파악하는데 유용하며, 하위 디렉토리와 파일이 어떤 구조로 정리되어 있는지 한눈에 확인 가능합니다. 문서화 및 시스템 분석 등에 활용됩니다. ✅ tree 명령어 기본 사용 방법 ✅ tree 옵션 ✅ 사용 예시 🔲 전체 경로 포함하여 출력: -f 기본 대상 폴더의 기본 파일만…

  • [Shell 특수문자] 리눅스 와일드카드(메타문자)

    리눅스 와일드카드는 Shell 특수문자로 메타 문자로 불리기도 합니다. Shell 특수 기호 중 와일드카드(글로빙으로 부르기도 함)는 문자 패턴에 따라 파일명을 선택할 수 있습니다. 특수 문자에는 인용(따옴표) 기호, 리눅스 다중 명령어, 리눅스 히스토리 기호, 리눅스 디렉토리 기호, 리눅스 괄호 기호 및 입출력 리다이렉션 등 다양하게 있습니다. ✅ 리눅스 와일드카드 매칭 문자 리눅스 와일드카드 매칭 문자…

  • rm 명령어

    1. rm 명령어 ‘rm 명령어‘ 는 파일 및 디렉토리를 삭제하는 명령어이다. ‘rm 명령어’ 는 심볼릭 링크는 삭제하지만 링크의 대상 파일은 삭제하지 않는다. ls 명령어와 함께 많이 사용되는 명령어이다. rm(remove) 명령어 rm –remove 파일 및 디렉토리 삭제 ~]# rm -i –interactive 기존 파일을 삭제하기 전에 물어본다. inter:매장하다.    active:유효한,능동의 ~]# rm -r –recursive: 재귀 재귀적으로…

  • 리눅스 touch 명령어

    touch 명령어는 파일의 날짜 시간 정보를 변경하는 명령어입니다. 아무 옵션 없이 사용할 경우 파일의 최근 사용 시간, 변경 시간이 서버의 현재 시간으로 변경됩니다. 파일이 없는 파일명을 입력할 경우 새로운 크기가 0인 빈 파일이 생성됩니다. ✅ touch 명령어 기본 사용 방법 ✅ touch 명령어 명령어 옵션 ✅ 사용 예시 최근 사용 시간(Access), 변경 시간(Modify)이…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 0   +   7   =