UNITS(1)

명칭
units - 여러가지 단위의 환산을 실시한다

서식
units [-f filename] [-qv] [from-unit to-unit]

옵션

-f filename
    단위 환산용의 데이터 파일명을 지정합니다.

-q  요구하는 단위의 입력 prompt와 환산하는 단위의 입력 prompt의 표시를 억제합니다.

-v  버젼 번호를 표시합니다.

from-unit to-unit
    명령행으로부터 직접, 단위 환산을 행합니다. prompt는 표시하지 않고, 지정한 환산 결과를 표시해 종료합니다.

해설
units 프로그램은 여러가지 단위로 나타내진 양을 다른 단위로 환산합니다. 곱셈으로 요구되는 단위의 환산만 행할 수 있습니다만, 섭씨로부터 화씨에의 변환 등은 할 수 없습니다. 입력 prompt를 개입시켜, 대화적으로 동작합니다.

        You have: meters
        You want: feet
                * 3.2808399
                / 0.3048
        You have: cm^3
        You want: gallons
                * 0.00026417205
                / 3785.4118
        You have: meters/s
        You want: furlongs/fortnight
                * 6012.8848
                / 0.00016630952
        You have: 1|2 inch
        You want: cm
                * 1.27
                / 0.78740157

단위 중(안)에서 누승을 나타내는 부분은, 위의 예의 같게 `^'를 이용해 나타내는지, 혹은 단지 연결해 표기합니다. 예를 들면 `cm3'는 `cm^3'와 등가입니다. 단위의 곱셈을 나타내려면 , 공백, 데쉬 혹은 asterisk를 이용합니다. 단위의 나눗셈에는 `/'를 이용합니다. 곱셈은 나눗셈보다 높은 우선도를 가지기 때문에, `m/s/s'는 `m/s^2'혹은 `m/s s'와 같은 의미가 됩니다. 수치의 나눗셈에는 세로의 곧은 선(`|')을 이용하지 않으면 안됩니다. 예를 들면 1 미터의 반을 변환하려면 ,`1|2 meter'라고 씁니다. 만약 `1/2 meter'라고 쓰면(자), units (은)는 그것을 `0. 5/meter'라고 해석합니다. 환산할 수 없는 단위형을 지정하면(자), units (은)는 거기에 대응하고 있지 않는 취지의 메세지를 표시해, 각 단위의 간략형을 나타냅니다.

        You have: ergs/hour
        You want: fathoms kg^2 / day
        conformability error
                2.7777778e-11 kg m^2 / sec^3
                2.1166667e-05 kg^2 m / sec

환산에 필요한 정보는, 환산용 데이타베이스 파일로부터 읽힙니다. 디폴트의 파일에는, 잘 이용되는 단위의 거의, 생략형, 미터법의 접두어, 등의 정의가 포함되어 있습니다. 이하와 같은 자연 정수도 몇개인가 포함되어 있습니다:

pi 원주율
c 광속
e 전자의 전하
g 중력가속도
force g 와 같다
mole 아보카도로수
water 단위 물기둥의 압력
mercury 단위 수은주의 압력
au 천문 단위

`pound' (파운드)는 질량의 단위입니다. 복합한 단위명은 연결해 기술합니다. `pound force'는 힘의 단위입니다. `ounce' (온스)도 또한 질량의 단위입니다. 액체의 온스는 `floz'입니다. 영미에서 같은 단위의 값이 다른 경우, 영국식 단위의 전에 `br'를 붙입니다. 통화단위의 경우에는 `belgiumfranc'나 `britainpound'와 같이 머리에 국명을 붙여 구 구별 합니다. 단위를 찾을 때로 지정된 캐릭터 라인 그 자체가 단위명으로서 발견되지 않는 경우, units (은)는 말미의 `s'나 `es'를 없애 재차 체크합니다.

어떠한 단위가 이용 가능한가, 에 대해서는, 표준의 단위 파일을 참조해 주세요. 독자적인 단위를 추가하고 싶으면, 독자적인 파일을 지정할 수 있습니다. 단위의 지정은, 1 행에 이름과 거기에 상당하는 양을 씁니다. 새로운 단위는 낡은 단위에 근거해 정의해, 단위를 변환해 나가면(자) `! '표를 교부한 원시 단위에 간신히 도착한다 같게 주의해 주세요. 부주의로 단위 정의에 엔들레스 루프가 있어도 units (은)는 그것을 검지하지 않습니다. 단위 정의 파일중에 있어 `/'로 시작되는 행은 코멘트입니다.

접두어의 정의도 표준적인 단위와 동형식에서 행합니다만, 접두어명의 말미에 데쉬를 붙입니다. 말미의 `s'나 `es'를 없애도, 단위명으로서 발견되지 않는 경우는, 접두어인지 어떤지가 체크되어 접두어를 없애면(자) 유효한 기본 단위명이 될까를 조사합니다.

기본적인 단위를 정의하는 간단한 단위 파일의 예를 이하에 나타냅니다.

m ! a!
sec ! b!
micro- 1e-6
minute 60 sec
hour 60 min
inch 0.0254 m
ft 12 inches
mile 5280 ft

버그
접두어에 `/'가 포함되면(자) 놀라는 결과를 낳습니다.

유저가 입력하는 누승 부분은 1 자리수가 아니면 안됩니다. 필요하면 몇번인가 곱해 주세요.

수의 제산에는 `|'를 이용해 심볼의 제산에는 `/'를 이용하지 않으면 안됩니다만, 이러한 구별은 불필요하게 해야 합니다.

이 프로그램은, 환산한 표시 자리수의 제한이 뿔뿔이 흩어지고, 데이터 파일의 길이에도 제한이 있습니다.

단위를 격납하는데 해시표를 이용해 단위표의 로드와 중복 체크의 시간을 경감해야 합니다.

관련 파일
/usr/share/misc/units.lib
    표준 단위 프로그램 라이브러리

저자
Adrian Mariano <adrian@cam.cornell.edu>