지난 시간에 데이터 스트림을 알아보면서 데이터의 흐름이 있다고 했는데
이번 시간에는 이 데이터의 방향을 바꾸는 리다이렉션을 공부해 봅시다
리다이렉션 : Re / direction (다시 방향) 즉 방향을 바꾼다는 게 리다이렉션입니다
Redirection 리다이렉션 실습
실습 전 Text Editor 강좌 때 만든 mv_test 파일을 이용하겠습니다 (없으면 생성해 주세요)
현재 cat 명령어의 결과 데이터가 standard output(표준 출력)으로 화면에 표시된 겁니다
이제 출력의 방향이 터미널 화면이 아닌 다른 파일로 향하게 방향을 바꿨습니다
방향을 바꿀 때, 사용하는 문자는 > 입니다
리다이렉션을 사용하니 터미널 화면에 mv_test 파일 내용이 출력되지 않고 musa_file라는 파일로 방향을 바꾸었습니다
mv_test 내용들이 이렇게 화면에 출력되는 걸 알 수 있습니다
이번에는 ifconfig 내용을 musa_file 파일로 리다이렉션 해봅시다
mv_test 와 동일하게 musa_file로 데이터가 저장되었습니다
리다이렉션을 이용하는 경우 기존의 데이터는 삭제된다는 특징이 있습니다
여기서 다시 리다이렉션을 이용하면 ifconfig 명령어의 결과들이 지워지는 겁니다
여기서 기존에 파일 데이터가 지워지지 않고 그 아래 추가되기를 원한다면 >> 를 이용하면 됩니다
사진과 같이 기존에 데이터가 지워지지 않고 바로 밑에 pwd 명령어의 결과가 musa_file 아래에 추가되었습니다
여기까지 내용들은 전부 표준 출력으로 리다이렉션을 시켰습니다
지난 시간에서 데이터 스트림은 3가지로 정의한다고 설명했는데 fd(파일 디스크립터) 표준 출력의 값 1을 이용하여 리다이렉션이 가능합니다
이런 식으로 파일 디스크립터를 이용하여 리다이렉션이 가능합니다
표준 출력을 리다이렉션한다 라는 의미입니다
그러면 이제 자주 쓰는 에러 리다이렉션을 실습해 봅시다
kali 계정으로 전환 후 find 명령어를 사용할 겁니다 find 뒤에 나오는 첫 번째 전달 인자는 어디부터 찾을지 지정합니다
/ (최상위 디렉터리)는 리눅스 전체에서 찾겠다는 의미입니다 뒤에 -name 옵션으로 rockyou.txt.gz라는 파일을 찾겠다고 설정했습니다
화면에 에러 문구를 확인해 보니 특정 디렉터리를 접근할 때, 권한 문제에 관한 에러 메시지가 화면에 표시되는데
이 에러 메시지를 화면에 출력하지 않고 찾은 파일만 화면에 표시하도록 표준 에러를 이용하여 리다이렉션 해봅시다
표준 에러 fd(파일 디스크립터) 값 : 2
rockyou.txt.gz 파일의 에러 메시지가 전부 /tmp/error_msg로 리다이렉션 했습니다
추가로 이 에러 메시지를 다른 파일에 저장하지 않게 할 수 있습니다
find / -name "rockyou.txt.gz" 2> /dev/null 여기서 /dev/null 이 windows에 쓰레기통이라 생각하면 됩니다
이런 식으로 에러 메시지를 따로 파일에 저장하지 않고 날려 버릴 수 있습니다
이렇게 리다이렉션은 명령어 결과를 저장할 때 많이 사용됩니다 또한, 불필요한 에러 메시지를 제거할 때는 에러 리다이렉션을 (2>)를 사용합니다
다음 시간에는 입력을 다른 방향으로 바꾸는 PIPE에 대해 공부해 봅시다
[ 참고 사이트 ]