Redirection : 프로그램은 기본적으로 stdin(0)은 키보드, stdout(1)은 화면, stderr(2)은 화면으로 설정이 된다.
stdout과 stderr의 차이는, stdout은 버퍼를 거쳐서 화면에 뿌려진다.
따라서 버퍼가 다 차기 전까지는 화면에 뿌려지지 않는다.
반면에 stderr은 버퍼를 사용하지 않기 때문에, 출력할 데이터는 바로 바로 화면에 뿌려진다.
이렇게 기본적으로 설정된 것들을 사용하지 않고, 다르게 사용하고 싶을때
재지향 기호 > 를 사용한다.
재지향 기호 > 를 사용한다.
command1 > filename : command1의 stdout출력을 화면이 아니라, filename으로 보낸다.
command1의 stderr은 기존처럼 화면에 뿌려진다.
command1 < filename : command1의 입력을 키보드로부터 받는것이 아니라, filename으로 부터 받는다.
command1 < infile > outfile :
키보드가 아니라 infile로 부터 입력을 받고, stdout을 화면이 아니라 outfile로 출력을 한다.
키보드가 아니라 infile로 부터 입력을 받고, stdout을 화면이 아니라 outfile로 출력을 한다.
command1의 stderr은 기존처럼 화면에 뿌려진다.
command1 2> file : command1의 stdout은 화면으로, stderr은 file로 보낸다.
command1 > file 2>&1 :
command1의 stdout은 file로, stderr은 stdout으로 보낸다.
command1의 stdout은 file로, stderr은 stdout으로 보낸다.
즉 stdout과 stderr모두 file로 보낸다.
이 문장을 간단하게 표기하는 또 다른 방법은 command1 &>file 와 command1 >&file이다.
command1 >nul : command1의 stdout출력을, 화면에 뿌리는 것이 아니라, 그냥 버린다.
파이프 : command1 | command2 : command1의 stdout출력을 command2의 입력으로 보낸다.
이것은 command1 > tempfile, command2 < tempfile, del tempfile 과 동일하다.
command1, command2의 stderr은 기존처럼 화면에 뿌려진다.
command1 2>&1 | command2 :
command1의 stdout과 stderr을 모두, command2의 stdin으로 보낸다.
command1의 stdout과 stderr을 모두, command2의 stdin으로 보낸다.
---------------------------------------------------------------------------------------
Sample Code >
SET count_gb=%1
SET server_ip=%2
SET regfile= %Temp%bmsenv.reg
SET tnsfile=c:orantnetworkadmintnsnames.ora
echo %server_ip% ping .......
echo.
PING %server_ip% -n 1 >NUL 2>&1IF ERRORLEVEL 1 (
ECHO.
ECHO Warning !!
ECHO DB Server %server_ip% is not available
ECHO Check Server IP Address or Server Status
GOTO END
)
DEL *.BAK > NUL 2>&1
> NUL : 정상 화면 출력을 NUL(버리고),
2>&1 : 에러 출력을 &1 화면출력한곳으로, 즉 NUL로...
댓글 없음:
댓글 쓰기