참조 URL : http://dic.impact.pe.kr/community/bbs/board.php?bo_table=06_3&wr_id=2
locale 명령은 시스템에서 언어(또는 지역)를 지정하는 로케일 관련 정보를
출력하는 명령이다. locale은 원래 현장, 장소의 의미이지만, 시스템 용어로는
운영체제 또는 어플리케이션에서 문자셋, 날짜시간포맷, 숫자표시, 통화단위표시 등과
관련하여 기준되는 지역위치를 가리킨다.
다음은 locale manual (man locale 명령시 출력) 내용과 변수들의 의미,
그리고 locale 명령의 예제들이다.
NAME
locale - 로케일 관련 정보를 얻는다
SYNOPSIS
locale [ -a | -m ]
locale [ -ck ] 이름 ...
DESCRIPTION
로케일 유틸리티는 현재의 또는 모든 퍼블릭로케일환경을
표준출력에 출력한다. 퍼블릭로케일은 어플리케이션에서 접근
가능한 로케일을 의미한다.
locale 이 아규먼트 없이 호출되면, 환경변수에 세팅된 대로
각 로케일카테고리의 현재의 로케일환경이 출력된다.
아규먼트와 함께 호출되면 로케일카테고리의 키워드에
배정된 값이 다음과 같이 출력된다.
o 키워드명 지정으로 해당 키워드를 포함하는 키워드와
카테고리를 선택한다.
o 카테고리명 지정으로 해당 카테고리와 해당 카테고리에
속한 모든 키워드를 선택한다.
OPTIONS
-a 모든 이용가능한 퍼블릭로케일 정보를 출력한다.
이용가능한 로케일에는 POSIX 로케일도 포함된다.
-c 선택된 로케일카테고리의 이름들을 출력한다.
하나 이상의 키워드명이나 카테고리명 등 복수의
카테고리가 선택되는 경우 더 읽기 쉬운 형태로 출력해
준다. 이것은 -k 옵션이 있든 없든 상관없다.
-k 선택된 키워드의 이름과 값을 출력한다.
특정 키워드에는 값이 생략될 수도 있다.
OPERANDS 참조.
-m 이용가능한 charmaps 이름을 출력한다. localedef(1)
참조.
OPERANDS
이름 로케일카테고리의 이름, 로케일카테고리에 속한 키워드명,
또는 charmap. 현재 로케일의 로케일카테고리이름과 키워드
이름이 같을 때는 결과를 예측할 수 없다. 그렇지 않은
경우 카테고리명과 키워드명을 순서에 상관없이 지정할 수
있다.
EXAMPLES
Example 1: 로케일 유틸리티 예제
다음 예에서 로케일 환경변수가 다름과 같이 설정되어 있다고
가정한다:
LANG=locale_x LC_COLLATE=locale_y
locale 명령을 실행하면 다음과 같은 결과가 될 것이다:
LANG=locale_x
LC_CTYPE="locale_x"
LC_NUMERIC="locale_x"
LC_TIME="locale_x"
LC_COLLATE=locale_y
LC_MONETARY="locale_x"
LC_MESSAGES="locale_x"
LC_ALL=
locale -ck decimal_point 명령은 다음을 출력한다:
LC_NUMERIC
decimal_point="."
다음 명령은 사용자의 응답이 긍정인지 아닌지를 결정하는
로케일 어플리케이션을 보여준다:
if printf "%s\n" "$response" | /usr/xpg4/bin/grep -Eq\
"$(locale yesexpr)"
then
affirmative processing goes here
else
non-affirmative processing goes here
fi
ENVIRONMENT VARIABLES
LANG, LC_ALL, LC_CTYPE, LC_MESSAGES, NLSPATH에 대해서는
environ(5) 참조.
LANG, LC_*, NLSPATH 환경변수들은 현재의 로케일 환경에
설정되어 있어야 출력된다.
EXIT STATUS
종료시 반환값은 다음과 같다:
0 All the requested information was found and output
successfully.
>0 An error occurred.
SEE ALSO
localedef(1), attributes(5), charmap(5), environ(5),
locale(5)
NOTES
LC_CTYPE 또는 LC_CTYPE 카테고리에 속하는 키워드가 지정된 경우
0x00-0x7f 범위의 값만 출력된다.
LC_COLLATE 또는 LC_COLLATE 카테고리에 속하는 키워드가 지정된 경우
아무 값도 출력되지 않는다.
[ LANG, LC_* 설명]
o LANG : 모든 카테고리에 대한 로케일 설정을 위한 환경변수이다. 하지만 LC_*
환경변수보다 우선 순위가 낮다. LC_ALL이 설정이 안 되어 있고 LC_* 값들이 설정이
따로 설정이 않된 경우 LANG을 변화시키면 LC_ALL을 제외한 로케일 카테고리들의
값이 변경되지만 LC_ALL이 설정 되어 있는 경우 LANG의 변화는 로케일 카테고리들의
값에 영향을 주지 않는다.
o LC_CTYPE : 문자 분류(알파벳, 숫자, 한글 또는 소문자, 대문자 등등), 변환,
대소문자 비교을 위한 로케일 설정을 의미한다. 이것은 예를 들어 fgetwc(), is*(),
isw*(), mblen(), mbtowc(), wcstombs() 등의 함수에 영향을 줄 수 있다.
o LC_COLLATE : 스트링(string)의 정렬 순서(sort order 또는 collation)를 위한
로케일 설정을 위해 사용된다. 이것은 예를 들어 strcoll(), wcscoll(), strxfrm()
등의 함수에 영향을 줄 수 있다.
o LC_MESSAGES : 메시지 표현을 위한 로케일 설정. 메시지의 국제화를 위한
catopen(), gettext() 등의 함수에 영향을 줄 수 있다.
o LC_NUMERIC : 금액이 아닌 숫자 표현(천단위, 소수점, 숫자 그룹핑 등)을 위한
로케일 설정. 예를 들어 strtod(), atof().
o LC_MONETARY : 금액 표현(천단위 구분 문자, 소수점 문자, 금액 표시 문자, 그
위치 등)을 위한 로케일 설정. 예를 들어 strfmon().
o LC_TIME : 시간과 날짜의 표현(년, 월, 일에 대한 명칭 등)을 위한 로케일 설정
예를 들어 strftime(), strptime().
o LC_ALL : 모든 카테고리에 대한 로케일 설정을 위한 환경변수이다. 위의 LC_* 및
LANG의 어떤 것보다 우선 순위가 높다. 그리고 LC_ALL을 설정하면 다른 로케일
카테고리의 값들이 LC_ALL의 값의 변경되고 LC_ALL설정을 없애면 다른 로케일
카테고리의 값들은 이전값을 유지한다.
[명령 실행 예]
[host:/user/]$ env
..
LANG=ko
..
[host:/user/]$ locale
LANG=ko
LC_CTYPE="ko"
LC_NUMERIC="ko"
LC_TIME="ko"
LC_COLLATE="ko"
LC_MONETARY="ko"
LC_MESSAGES="ko"
LC_ALL=
[host:/user/]$ locale -a
POSIX
C
iso_8859_1
hi_IN.UTF-8
common
ko
ko.UTF-8
ko_KR.EUC
ko_KR.UTF-8
th
th_TH
th_TH.ISO8859-11
th_TH.TIS620
th_TH.UTF-8
[host:/user/]$ locale -m
iso_8859_1/charmap.src
[host:/user/]$ locale -ck LC_ALL
LC_CTYPE
lower="a";"b";"c";"d";"e";"f";"g";"h";"i";"j";"k";"l";"m";"n";"o";"p";"q";"r";"s";"t";"u";"v";
"w";"x";"y";"z"
upper="A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"M";"N";"O";"P";"Q";"R";"S";"T";
"U";"V";"W";"X";"Y";"Z"
alpha="A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"M";"N";"O";"P";"Q";"R";"S";"T";
"U";"V";"W";"X";"Y";"Z";"a";"b";"c";"d";"e";"f";"g";"h";"i";"j";"k";"l";"m";"n";"o";"p";"q";
"r";"s";"t";"u";"v";"w";"x";"y";"z"
digit="0";"1";"2";"3";"4";"5";"6";"7";"8";"9"
space="\x09";"\x0a";"\x0b";"\x0c";"\x0d";" "
cntrl="\x00";"\x01";"\x02";"\x03";"\x04";"\x05";"\x06";"\x07";"\x08";"\x09";
"\x0a";"\x0b";"\x0c";"\x0d";"\x0e";"\x0f";"\x10";"\x11";"\x12";"\x13";"\x14";
"\x15";"\x16";"\x17";"\x18";"\x19";"\x1a";"\x1b";"\x1c";"\x1d";"\x1e";"\x1f";
"\x7f"
punct="!";"\"";"#";"$";"%";"&";"'";"(";")";"*";"+";",";"-";".";"/";":";"\;";"<";"=";">";
"?";"@";"[";"\\";"]";"^";"_";"`";"{";"|";"}";"~"
graph="!";"\"";"#";"$";"%";"&";"'";"(";")";"*";"+";",";"-";".";"/";"0";"1";"2";"3";"4";"5";"6";"7";"8";"9";":";"\;";"<";"=";">";"?";"@";"A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"M";"N";"O";"P";
"Q";"R";"S";"T";"U";"V";"W";"X";"Y";"Z";"[";"\\";"]";"^";"_";"`";"a";"b";"c";"d";"e";"f";"g";"h";"i";"j";"k";"l";"m";"n";"o";"p";"q";
"r";"s";"t";"u";"v";"w";"x";"y";"z";"{";"|";"}";"~"
print=" ";"!";"\"";"#";"$";"%";"&";"'";"(";")";"*";"+";",";"-";".";"/";"0";"1";"2";"3";"4";"5";"6";"7";"8";"9";":";"\;";"<";"=";">";"?";"@";"A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"M";"N";"O";"P";
"Q";"R";"S";"T";"U";"V";"W";"X";"Y";"Z";"[";"\\";"]";"^";"_";"`";"a";"b";"c";"d";"e";"f";"g";"h";"i";"j";"k";"l";"m";"n";"o";"p";"q";
"r";"s";"t";"u";"v";"w";"x";"y";"z";"{";"|";"}";"~"
xdigit="0";"1";"2";"3";"4";"5";"6";"7";"8";"9";"A";"B";"C";"D";"E";"F";"a";"b";"c";"d";"e";
"f"
blank=" "
tolower="<'A','a'>";"<'B','b'>";"<'C','c'>";"<'D','d'>";"<'E','e'>";"<'F','f'>";"<'G','g'>"
;"<'H','h'>";"<'I','i'>";"<'J','j'>";"<'K','k'>";"<'L','l'>";"<'M','m'>";"<'N','n'>";"<'O','o'>";
"<'P','p'>";"<'Q','q'>";"<'R','r'>";"<'S','s'>";"<'T','t'>";"<'U','u'>";"<'V','v'>";
"<'W','w'>";"<'X','x'>";"<'Y','y'>";"<'Z','z'>"
toupper="<'a','A'>";"<'b','B'>";"<'c','C'>";"<'d','D'>";"<'e','E'>";"<'f','F'>";"<'g','G'>"
;"<'h','H'>";"<'i','I'>";"<'j','J'>";"<'k','K'>";"<'l','L'>";"<'m','M'>";"<'n','N'>";"<'o','O'>"
;"<'p','P'>";"<'q','Q'>";"<'r','R'>";"<'s','S'>";"<'t','T'>";"<'u','U'>";"<'v','V'>";
"<'w','W'>";"<'x','X'>";"<'y','Y'>";"<'z','Z'>"
LC_NUMERIC
decimal_point="."
thousands_sep=","
grouping=3;0
LC_TIME
d_t_fmt="%Y년 %B %e일 %A %p %I시 %M분 %S초"
d_fmt="%Y년 %m월 %d일"
t_fmt="%p %I시 %M분 %S초"
t_fmt_ampm="%p %I시 %M분 %S초"
am_pm="오전";"오후"
day="일요일";"월요일";"화요일";"수요일";"목요일";"금요일";"토요일"
abday="일";"월";"화";"수";"목";"금";"토"
mon="1월";"2월";"3월";"4월";"5월";"6월";"7월";"8월";"9월";"10월";"11월";"12월"
abmon=" 1월";" 2월";" 3월";" 4월";" 5월";" 6월";" 7월";" 8월";" 9월";"10월";"11월";"12월"
era="+:1:-2333/01/01:+*:단기:%EC %Ey년"
era_d_fmt="%EY %B %e일"
era_d_t_fmt="%EY %B %e일 %A %p %I시 %M분 %S초"
era_t_fmt="%I시 %M분 %S초"
alt_digits=""
LC_COLLATE
collating-element=
character-collation=
LC_MONETARY
int_curr_symbol="KRW "
currency_symbol="₩"
mon_decimal_point="."
mon_thousands_sep=","
mon_grouping=3;0
positive_sign=""
negative_sign="-"
int_frac_digits=0
frac_digits=0
p_cs_precedes=1
p_sep_by_space=0
n_cs_precedes=1
n_sep_by_space=0
p_sign_posn=1
n_sign_posn=1
LC_MESSAGES
yesexpr="^[yY]"
noexpr="^[nN]"
yesstr="y"
nostr="n"