윈도우나 리눅스 상에서 커맨드라인으로 입력된 명령어들을 보다 효율적으로 활용하기 위해서는 리다이렉션, 파이프, 그룹화가 필요함.
보안과 해킹 관점에서도 유용하게 쓰임.
( 1 ) 리다이렉션(Redirection)
리다이렉션 연산자
|
설명
|
>
|
명령어 출력을 화면에 보이기보다는 지정된 파일이나 장치로 보냄.
파일이 존재하지 않는다면 새로운 파일을 만들고 이미 같은 이름의 파일이 존재한다면 덮어 쓰임.
ex. dir >
koromoon.txt
디렉토리 경로를 확인한 결과 koromoon.txt 파일에 저장함.
|
<
|
키보드보다는 지정된 파일에서 명령어를 위한 입력을 가져옴.
ex. sort <
koromoon.txt
koromoon.txt 파일의 내용을 정렬시킴.
|
>>
|
파일이 이미 존재하는 파일일 때 덮어쓰기보다는 지정된 파일에 명령어 결과를 추가함.
파일이 존재하지 않으면 지정된 이름으로 파일을 생성시킴.
|
>&
|
어느 한 명령어의 출력을 디른 명령어의 입력으로 보냄.
|
<&
|
어느 한 명령어의 입력을 읽고 다른 명령어의 출력으로 보냄.
|
( 2 ) 파이프(Pipe)
파이프 연산자
|
설명
|
|
|
한 명령어의 출력을 읽어서 다른 명령어의 입력으로 보냄. 파이프 연산자임.
ex. dir | sort
디렉토리 경로를 확인한 결과를 정렬시킴.
dir | find ".txt" | more
디렉토리 경로에 txt 확장자로 된 파일을 찾으며 more 명령어를 이용하여 한 번에 한 페이지씩 나타냄.
more 명령어는 출력이 방대해서 한
페이지나 한 화면에 들어가지 못할 때 편리하게 사용함.
|
( 3 ) 그룹화(Grouping)
그룹화
|
설명
|
명령어1
& 명령어2
|
첫 번째 명령어를 처리하고 두 번째 명령어를 처리함.
ex. md C:\koromoon
& cd C:\koromoon
C:\koromoon 폴더를 생성하고 난 후 현재
작업 디렉터리를C:\koromoon 으로 바꿈.
|
명령어1
&& 명령어2
|
첫 번째 명령어를 성공적으로 처리했을 때만 두 번째 명령어를 처리함.
ex. cd C:\koromoon
&& md C:\koromoon2
C:\koromoon 폴더가 존재할 경우 C:\koromoon2 폴더를 생성함.
|
명령어1
|| 명령어2
|
첫 번째 명령어를 실패적으로 처리했을 때만 두 번째 명령어를 처리함.
ex. cd C:\koromoon ||
md C:\koromoon
C:\koromoon 폴더가 존재하지 않을 시에 C:\koromoon 폴더를 생성함.
|
(명령어1 & 명령어2)
&& 명령어3
|
명령어1과 명령어2가 성공적으로 처리됐을 때에만
명령어3을 처리함.
|
명령어1 || (명령어2 & 명령어3)
|
명령어1이 성공적으로 처리되지 않았을 경우에만 명령어2와
명령어3을 처리함.
|
참고로 아래는 리다이렉션을 위한 기본 핸들 값 리스트임.
리다이렉션을 이용하여 생성되는 에러 메시지를 지정된 파일로 보낼 수 있음.
에러 메시지를 보내는 데 사용되는 파일 이름을 구체화하기 위해 핸들을 사용하며 그에 따른 핸들 번호는 아래와 같음.
핸들 이름
|
값
|
설명
|
STDIN
|
0
|
표준 입력이 키보드에서 보내짐.
|
STDOUT
|
1
|
표준 출력이 명령어 쉘 창으로 보내짐.
|
STDERR
|
2
|
표준 에러 출력이 명령어 쉘 창으로 보내짐.
ex. netstat >
koromoon.txt > 2 >& 1
netstat 명령어 결과를 에러와 함께 koromoon.txt 파일에 보내짐.
|
UNDEFINED
|
3 ~ 9
|
어플리케이션 지정 핸들
|
============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기