KOROMOON

착한 사마리아인이 되고 싶습니다.

2/22/2018

커맨드라인에서 사용되는 리다이렉션(Redirection), 파이프(Pipe), 그룹화(Grouping)


윈도우나 리눅스 상에서 커맨드라인으로 입력된 명령어들을 보다 효율적으로 활용하기 위해서는 리다이렉션, 파이프, 그룹화가 필요함.
보안과 해킹 관점에서도 유용하게 쓰임.


( 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) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기