Kali Linux 기초 Part. 18 Redirection(리다이렉션)

2025. 3. 19. 12:41보안/Linux

Kali Linux 기초 가이드는 normaltic 강의를 참고하여 제작하였습니다.

 

1. Redirection (리다이렉션)란?

방향을 바꾸다, 즉 리눅스에서 데이터 스트림을 파일로 저장하거나, 특정 위치로 전달 할 수 있다.

 

1. 출력 리다이렉션 (>, >>)

📌 출력 결과를 파일로 저장

ls > test.txt

 

ls 실행 결과를 test.txt에 저장 (덮어쓰기)

 

📌 출력 결과를 파일에 추가

ls >> test.txt

 

기존 test.txt에 ls 실형 결과를 추가 (덮어쓰기 X)

 

2. 오류 리다이렉션 (2>, 2>>)

📌 에러 메시지를 파일로 저장

ls textfile 2> error.log

 

에러 메시지만 error.log에 저장 (덮어쓰기)

 

📌 에러 메시지를 기존 파일에 추가

ls textfile 2>> error.log

 

기본 error.log 파일에 에러 메시지 추가 저장 (덮어쓰기X)

 

3. 출력과 오류 함께 저장 (&>, 2>&1)

📌 표준 출력과 오류를 하나의 파일에 저장

ifconfig &> output.log

또는

ifconfig > output.log 2>&1

 

출력과, 에러를 output.log에 저장

 

4. 입력 리다이렉션 (<)

📌 파일을 명령어의 입력으로 사용

sort < test.txt

 

test.txt의 내용을 sort 명령어에 입력하여 정령

 

📌 입력을 파일에서 가져와 출력 저장

cat < input.txt > output.txt

 

input.txt의 내용을 output.txt에 저장

 

실습

먼저, redirection_test 라는 디렉토리를 만들어서 안에 This is Test File 이라고 적힌 redirection_test.txt 파일을 만들어 줍시다.

 

여기서 cat 명령어로 This is Test File 이라는 걸 읽을 수 있죠? 이 결과가 바로 standard output (표준 출력)으로 화면에 나온것이라고 할 수 있습니다.

 

한번 > 를 사용 해서 결과를 저장해 봅시다!

 

 

 

이와 같이 리다이렉션을 사용해서 데이터 스트림 흐름을 변경 한 것을 볼 수있고, 그 데이터가 dst_file 파일 안에 저장된 것을 확인 할 수 있습니다.

이번엔 IP 주소를 확인 해서 그 내용을 저장해 보겠습니다.

 

ifconfig > ip

 

이런식으로 표준 출력 되는 방향을 > 리다이렉션을 통해서 ip로 이동 시킨 걸 확인 할 수있습니다.

이 방식은 아까 덮어쓰기로 내용이 삭제 된 다고 했었는데요, 이번엔 추가를 시켜 보겠습니다.

 

ifconfig >> ip

 

 

 

이런 식으로 기존 내용은 그대로 있고, 내용이 추가 된 것을 확인 할 수있습니다!

여기서 아까 배웠던 데이터 스트림에서 FD 값이 있다고 했었는데요, 이 값은 > 앞에 숫자 1 이 숨어 있다고볼 수 있습니다.

 

즉 ifconfig 1> ip 이런 식으로 해도 된다는 것이죠!

 

다음으로 에러 메시지를 출력해 볼 건데요, 먼저 kali 계정으로 전환해서 rockyou.txt.gz 라는 파일을 한번 찾아 봅시다!

 

find / -name "rockyou.txt.gz"

 

이런 식으로 막 뜨게 되는데, 여기서 에러 메시지만 출력 하고 싶다면?

바로 표준 에러인 2> 을 쓰면 되는 것이죠!

 

find / -name "rockyou.txt.gz" 2> /tmp/error_msg

 

이런 식으로 /tmp/error_msg 에 저장된 것을 확인 할 수 있습니다.

에러 메시지를 저장 하기 싫을 때는, Windows에 쓰레기통 같은 곳이 있습니다!

바로 /dev/null 인데, 여기에 저장하게되면 따로 에러파일을 저장하지 않고 날릴 수 있습니다!

 

즉 정리해보자면,

 

  • 리다이렉션은 명령어의 입출력 방향을 변경 하여, 데이터를 파일이나 다른 명령어로 전달한다.
  • >는 표준 출력을 파일에 저장, >>는 파일에 추가 저장한다.
  • <는 파일을 표준 입력으로 사용하며, 명령어가 파일 내용을 읽도록 한다.
  • 2> 는 표준 오류를 파일에 저장, &> 또는 2>&1은 출력과 오류를 함께 저장한다.
  • /dev/null을 사용하면 출력이나 오류를 저장하지 않고 날릴 수 있다.