반응형
Ubuntu 를 설치하면 초기 locale 설정이 UTF-8로 설정되어있다.

이를 EUC-KR로 바꾸어보자.


1) 언어 설정 패키지를 다운로드 한다.
언어 설정 패키지 다운로드 : apt-get install language-pack-ko

2) locale 설정을 한다.
locale-gen ko_KR.EUC-KR
dpkg-reconfigure locales

3) LANG 환경설정을 바꾼다.
vi /etc/default/locale
LANG=ko_KR.EUC-KR

이 모든작업을 sudo 권한으로 한다.

4) 재부팅한다.

sudo reboot

#locale 해서 결과를 보자.

LANG=ko_KR.EUC-KR
LANGUAGE=ko_KR:ko:en_GB:en
LC_CTYPE="ko_KR.EUC-KR"
LC_NUMERIC="ko_KR.EUC-KR"
LC_TIME="ko_KR.EUC-KR"
LC_COLLATE="ko_KR.EUC-KR"
LC_MONETARY="ko_KR.EUC-KR"
LC_MESSAGES="ko_KR.EUC-KR"
LC_PAPER="ko_KR.EUC-KR"
LC_NAME="ko_KR.EUC-KR"
LC_ADDRESS="ko_KR.EUC-KR"
LC_TELEPHONE="ko_KR.EUC-KR"
LC_MEASUREMENT="ko_KR.EUC-KR"
LC_IDENTIFICATION="ko_KR.EUC-KR"
LC_ALL=



이렇게 바뀌었다.
반응형
반응형
[1] 서론

우리가 흔히 표준 입출력이라고 말은 학교에서나 회사에서는 많이 듣는 말이다. 하지만, 정확한 의미를 알지 못하는 상황에서 유닉스 계열의 운영체제에서 사용시 당황하는 경우가 적지않다.

모르는 사람을 위해 정리하도록 하겠다.

표준입력 / 출력 / 에러는 FD(FILE DESCRIPTOR) 이다. 파일디스크립터란 OS가 제공해주는 입출력 식별자를 의미하는데 POSIX에서는 표준입출력 / 에러를 아래와 같이 표현한다.
( 0 => strandard input / 1 => strandard output / 2 => strandard error )
이 FD에 대해서 좀더 상세하게 위키디피아 사전에서 찾은 내용을 기점으로 알아보도록 하자.



[2] 본론

유닉스 쉘에서는 표준 입력 / 표준 출력 / 표준 에러 발생시 기본적으로 데이터가 전송되는 곳이 정해져있다. 기본적으로 stdin, stdout, stderr를 위해 오픈 되는 파일은 /dev/tty, 즉 자신의 터미널의 이름이다. 하지만 만약 유저가 자기 입맛에 맞게 오픈되는 파일을 바꾸고싶으면 어떻게 해야하는것일까? 유닉스에서는 표준으로 지정된 에러출력(/dev/null)를 다른 파일이나 장치로 다시 지정하는것을 재지정(redirect)라고 하며, 이러한 방향을 재지정 함으로써 어떠한 명령이 실행되는 과정에서 발생하는 오류메시지를 모니터가 아닌 지정한 파일로 저장하므로써, 에러를 정확히 분류하는데 사용되기도 한다.

(1) 표준입력이란 (Strandard Input)?


유식하게 영어로 적어보자 Strandard Input 이다. 위키백과에는 아래와 같이 인용되어있다.

[ 표준 입력 WIKI DEPIA]

Standard input is data (often text) going into a program. The program requests data transfers by use of the read operation. Not all programs require input. For example, the dir or ls program (which displays file names contained in a directory) performs its operation without any stream data input.
Unless redirected, input is expected from the keyboard which started the program.


못하는 영어실력으로 대충 해석해 보도록하겠다.

[ 표준 입력 번역]

Strandard input 이란 데이터(일반적으로 텍스트) 를 프로그램으로 보내는 것이다. 입력장치에 의해 읽혀진 데이터는 프로그램으로 전송하게된다. 하지만 모든 프로그램이 입력을 요구하는것은 아니다. 예를들어 dir 또는 ls와 같은 명령어들은 입력데이터가 필요하지 않다.
만약 이러한 예외상황이 아니라면 일반적으로 프로그램은 키보드를 통해 입력받게 된다.

[ 표준 입력 부가설명 ]
머 번역은 저러하지만 닥치고 딱 애기해서 키보드로 부터 입력받은 것을 메모리 상의 버퍼에 저장해놨다가 프로그램 또는 데몬(background process)로 보내는 것을 Strandard Input이라고 명령한다.


(2) 표준 출력(Strandard OutOut)이란?

[ 표준 출력 WIPI DEPIA ]

Standard output is the stream where a program writes its output data. The program requests data transfer with the write operation. Not all programs generate output. For example the file rename command (variously called mv, move, ren) is silent on success.
Unless redirected, standard output is the text terminal which initiated the program.

[ 표준 출력 번역 ]

표준출력은 데이터를 쓸떄 사용되어지는 스트림이다. 표준출력은 데이터를 이동 시키면서 쓰는작요을 한다. 모든프로그램이 출력을 필요하진 않는다. 예를들어 파일변경 명령어인(mv,move,ren)은 이러한 동작없이 수행가능하다.
만약 이러한 예외상황을 제외한다면 표준출력은 프로그램이 초기화될때 터미널로 그 출력의 대상이 정해잔다.

[ 표준 출력 부가 설명 ]

번역이 겁나 엉상하다. 흠.... 쉽게 설명하도록 하자. data는 우리눈에 사람이 읽을수 있는 데이터로 출력이 된다.실제 데이터는 0과 1의 조합이다. 물론 입력받을떄도 0과 1의 스트림형태의 조합이다.이러한 조합된 스트림을 일반 사람이 읽을수 있는 글자로 출력해주는것을 표준출력(StrandOut)이라고 하겠다.

(3) 표준 에러(Strandard Error)이란?

[ 표준 에러 WIPI DEPIA ]

Standard error is another output stream typically used by programs to output error messages or diagnostics. It is a stream independent of standard output and can be redirected separately. The usual destination is the text terminal which started the program to provide the best chance of being seen even if standard output is redirected (so not readily observed). For example, output of a program in a pipeline is redirected to input of the next program, but errors from each program still go directly to the text terminal.
It is acceptable—and normal—for standard output and standard error to be directed to the same destination, such as the text terminal. Messages appear in the same order as the program writes them, unless buffering is involved. (For example, a common situation is when the standard error stream is unbuffered but the standard output stream is line-buffered; in this case, text written to standard error later may appear on the terminal earlier, if the standard output stream's buffer is not yet full.)

[ 표준에러 번역 ]

난해한 말들이 참많다. 번역포기

[설명]
아는대로 설명하겠다. 표준에러는 표준 출력의 한종류이다. 프로그램 구동시 에러 또는 경고 발생시 os는 표준에러를 사용자의 터미널에 출력해 유저로 하여금 에러에 대해 알려주기 위해 사용된다.

(4) 응용편

2 >& 1 에 대해서 알아보자.

저 명령어는 Bourned Shell 에서는 stderr 를 stdout 으로 redirect 할수 있다.
이때 사용되는 redirect 연산자는 >& 이다.

즉 저의미는 표준에러를 표준출력으로 넘겨서 출력할때 에러도 같이 표준출력과 함께
출력하라는 의미가 된다.

또다른 연산자에는 어떠한 것이 있는지 알아보자 .

재지정구분 연산자 의미 사용예의 의미
출력 > write % 명령수행 > 기록할 파일이름
>> append % 명령수행 >> 추가할 파일이름
입력 < read % 명령수행 < 읽어올 파일이름
에러출력 2> sh,ksh,bash $ 명령수행 2> 기록할 오류파일이름
>& csh % 명령수행 >& 기록할 오류파일이름


[ 결론 ]
표준에러에 대해서는 위키디피아 사전에 글이 참많다. 도대체 머라 영어로 되어있는지 잘 모르겠지만, 어떠한 것이라는것인지 이해는 확실히 간다. 프로그램 구동시 로그를 남길때 에러를 별도 처리하지 않고 , 출력과 같이 파일로 쓰기위해 사용을 많이하는 FD들에 대해 알아놓으면 추후 더 많은 필드에서 좋은 활약을 할수 있을 것이라고 생각된다.
반응형

'Server > Linux' 카테고리의 다른 글

NCFTP 사용법 설명  (0) 2010.04.25
VIMRC 파일 설정방법  (0) 2010.01.29
Ubuntu SVN 설치 / 운영  (0) 2010.01.19
[ Find ] 특정 파일을 제외한 목록 삭제 (추후 업데이트)  (0) 2010.01.18
Ubuntu locale 설정 바꾸기  (0) 2010.01.18

+ Recent posts