Amazon Best VPN GoSearch

OnWorks 网站图标

单位 - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行单元

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令单元,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


unit — 单位转换和计算程序

概要


'单位' [选项[来自单位 [到单位]]

商品描述


“单位”程序将用各种测量系统表示的数量转换为
它们在其他测量系统中的等效项。 像许多类似的程序一样,它可以
处理乘法尺度变化。 它还可以处理非线性转换,例如
华氏度到摄氏度; 看 温度 转换. 该程序还可以执行
从和到单位总和的转换,例如在米和英尺加之间转换
英寸。

基本操作很简单:输入要转换的单位 和单位
你想转换 . 您可以通过提示交互使用该程序,或者您
可以从命令行使用它。

除了简单的单位转换之外,“单位”还可以用作通用科学
在计算中跟踪单位的计算器。 你可以形成任意复杂的
维度的数学表达式,包括总和、乘积、商、幂和
甚至维度的根。 因此,您可以确保精度和尺寸一致性,当
处理涉及许多不同单元的长表达式,这些单元可能组合在一起
复杂的方式; 有关说明,请参阅 复杂 单位 表达式.

单位在外部数据文件中定义。 您可以使用广泛的数据文件
此程序随附,或者您可以提供自己的数据文件以满足您的需要。 你
也可以使用自己的数据文件来补充标准数据文件。

您可以使用命令中给出的各种选项更改“单位”的默认行为
线。 看 调用中 单位 有关可用选项的说明。

互动 单位
要调用用于交互使用的单元,请键入 '单位' 在你的 shell 提示符下。 该计划将
打印这样的东西:

货币汇率来自 www.timegenie.com 于 2014-03-05
2860 个单位,109 个前缀,85 个非线性单位

你有:

在“您有:”提示下,输入您要转换的数量和单位 。 对于
例如,如果要将十米转换为英尺,请键入 '10 '。 接下来,“单位”将
打印“你想要:”。 您应该输入要转换的单位 . 转换为英尺,
你会输入''。 如果'readline'库被编译然后 标签 将完成
单位名称。 看 Readline库 支持 有关“阅读线”的更多信息。 退出
Unix 下的程序,按 Ctrl-C or Ctrl-D. 在 Windows 下,按 Ctrl-C or 按Ctrl-Z; 与
后者,您可能还需要按 输入.

结果将以两种方式显示。 输出的第一行,标有
'*' 表示乘法,给出您要求的转换结果。
输出的第二行标有“/”以表示除法,给出了
转换系数的倒数。 如果将 10 米转换为英尺,将打印“单位”

* 32.808399
/ 0.03048

它告诉您 10 米大约等于 32.8 英尺。 第二个数字给出
反方向转换。 在这种情况下,它告诉您 1 英尺等于
大约 0.03 dekameters 因为 dekameter 是 10 米。 它还告诉你 1/32.8 是
关于0.03。

'units' 程序打印倒数,因为有时它是一个更方便的数字。
例如,在上面的例子中,倒数是一个精确的转换:一英尺是
正好 0.03048 dekameters。 但是给出另一个方向的数字是不准确的。

如果将谷物转换为磅,您将看到以下内容:

你有:谷物
你想要:磅
* 0.00014285714
/ 7000

从输出的第二行,您可以立即看到一个grain 等于a
千分之七磅。 从输出的第一行来看,这不是很明显。
如果您发现输出格式令人困惑,请尝试使用“--verbose”选项:

你有:谷物
你想要: 海棠果
谷物 = 0.00010416667 aeginamina
谷物 = (1 / 9600)

如果您要求在测量相互尺寸的单位之间进行转换,则“单位”
将显示带有额外注释的转换结果,表明互惠
转换完成:

你有: 6 欧姆
你要:西门子
相互转换
* 0.16666667
/ 6

可以使用“--strict”选项抑制相互转换。 像往常一样,使用
'--verbose' 选项以获得更易于理解的输出:

你有:特克斯
你想要:typp
相互转换
1 / tex = 496.05465 典型值
1 / tex = (1 / 0.0020159069) 典型值

你有: 20 英里/小时
你想要:秒/英里
相互转换
1 / 20 英里/小时 = 180 秒/英里
1 / 20 mph = (1 / 0.0055555556) 秒/英里

如果您输入不兼容的单位类型,“单位”程序将打印一条消息,指示
单位不一致,它将显示每个单位的简化形式:

你有:尔格/小时
你想要:噚kg^2/天
一致性错误
2.7777778e-11公斤米^2/秒^3
2.1166667e-05公斤^2米/秒

如果您只想找到一个单位的简化形式或定义,只需按 输入 at
'你想要:' 提示。 下面是一个例子:

你有: jansky
你要:
定义:通量单位 = 1e-26 W/m^2 Hz = 1e-26 kg / s^2

'units' 的输出表明 jansky 被定义为等于一个通量单位
这又被定义为瓦特、米和赫兹的某种组合。 这
完全简化(在这种情况下更神秘)的形式出现在最右侧。

在某些情况下,某些命名单位被视为无量纲。 这些单位包括
弧度和球面度。 在单位换算中,这些单位将被视为等于 1。
功率等于扭矩乘以角速度。 只有在以下情况下才能执行此转换
弧度是无量纲的。

你有:(14 英尺磅力)(12 弧度/秒)
你想要:瓦特
* 227.77742
/ 0.0043902509

也可以计算无量纲单位的根和其他非整数幂;
这允许进行诸如地球同步轨道高度之类的计算:

你有:立方根(G地球质量/(圆/恒星日)^ 2)-地球半径
你想要:英里
* 22243.267
/ 4.4957425e-05

命名的无量纲单位在其他上下文中不被视为无量纲。 他们不可以
用作指数,例如,'meter^radian' 是禁止的。

如果你想要一个选项列表,你可以输入 '?' 在 '你想要:' 提示。 该程序
将显示与您输入的单位一致的命名单位列表
上面的“您有:”提示。 符合单位 组合 不会出现在此列表中。

打字 '帮助' 在任一提示处显示一条简短的帮助消息。 你也可以输入'帮助'
后跟单位名称。 这将在该点调用单位数据库上的寻呼机
定义该单位的地方。 您可以阅读可能给出更多信息的定义和评论
有关单位的详细信息或历史信息。 (一般可以退出页面
按“q”。)

打字 '搜索、' 文本 将显示名称包含的所有单位的列表 文本 作为一个
子串及其定义。 这在您不确定的情况下可能会有所帮助
正确的单位名称。

使用 单位 非交互式


“单位”程序可以从命令行以非交互方式执行单位转换。
为此,输入命令,输入原始单位表达式,然后输入新单位
你要。 如果单位表达式包含非字母数字字符,您可能需要
使用单引号或双引号字符保护它不被 shell 解释。

如果您输入

单位“2升”夸脱

然后“单位”将打印

* 2.1133764
/ 0.47317647

然后退出。 输出告诉您 2 升约为 2.1 夸脱,或者
一夸脱大约是 0.47 乘以 2 升。

如果转换成功,则 'units' 将成功(零)返回给调用者
环境。 如果您输入不合格的单位,则“单位”将打印一条消息,给出
每个单元的简化形式,它将向调用返回失败(非零)
环境。

当你只用一个参数调用 'units' 时,它会打印出
指定单位。 如果未定义单元,则返回失败,如果单元未定义,则返回成功
被定义。

单元 释义


转换信息是从单位数据文件中读取的,该文件被称为
“definitions.units”,通常位于“/usr/share/units”目录中。 如果你
使用 '-V' 选项调用 'units',它将打印此文件的位置。 默认的
文件包括所有熟悉的单位、缩写和公制前缀的定义。 它
还包括许多晦涩或古老的单位。

定义了许多自然常数,包括:

圆周长与直径之比
c光速
电子上的电荷
重力加速度
摩尔阿伏伽德罗数
单位高度水的水压
单位高度汞柱压力
au 天文单位
k 玻尔兹曼常数
μ0 真空磁导率
epsilon0 真空介电常数
G 引力常数
马赫声速

标准数据文件包括所有元素的原子质量和许多其他元素
常数。 还包括烘焙中使用的各种成分的密度,以便
“2 杯面粉筛分”可以转换为“克”。 这不是一个详尽的清单。
查阅单位数据文件以查看完整列表,或查看定义
用过的。

“磅”是质量单位。 要得到力,乘以力转换单位
'force' 或使用简写 'lbf'。 (请注意,'g' 已被视为标准
克的缩写。)单位“盎司”也是质量单位。 液体盎司是
'fluidounce' 或 'floz'。 当英国容量单位与美国同行不同时,
例如英制英制加仑,单位用“br”和“us”两种方式定义
前缀。 您的区域设置将决定无前缀单位的值。 货币
以其国家名称为前缀:'belgiumfranc', 'britainpound'。

搜索单位时,如果指定的字符串与单位名称不完全相同,
那么“units”程序将尝试删除尾随的“s”、“es”。 下一个单位将更换
带有 'y' 的尾随 'ies'。 如果失败,'units' 将检查前缀。 数据库
包括所有标准度量前缀。 每个单位只允许一个前缀,所以
“微法拉”将失败。 但是,前缀可以单独出现,后面没有单位
他们,所以“微*微法拉”将起作用,“微微法拉”也将起作用。

要找出可用的单位和前缀,请阅读标准单位数据文件,
这是广泛的注释。

英语 习惯 单位
英语习惯单位在不同地区有各种不同。 在英国,一个复杂的
体积测量系统的特点是针对不同的材料使用不同的加仑数,例如
葡萄酒加仑和啤酒加仑相差百分之二十。 扫了这个复杂
1824 年通过一项改革创造了一种全新的加仑,即不列颠帝国加仑
定义为十磅水所占的体积。 与此同时,在美国,加仑是
源自 1707 年温彻斯特酒加仑,即 231 立方英寸。 这些加仑
相差大约百分之二十。 默认情况下,如果 'units' 在 'en_GB' 语言环境中运行,您将
获得英国量的措施。 如果它在“en_US”语言环境中运行,您将获得美国
量措施。 在其他语言环境中,默认值是美国定义。 如果你希望
强制不同的定义,然后将环境变量“UNITS_ENGLISH”设置为
'US' 或 'GB' 设置所需的独立于语言环境的定义。

1959 年之前,一码的价值(以及根据它定义的其他计量单位)
英语国家之间略有不同。 1959年,澳大利亚、加拿大、新
新西兰、英国、美国和南非采用了加拿大
1 码的值 = 0.9144 m(正好),大约是这些值的一半
英国和美国使用; 它具有制作 1 英寸 = 2.54 厘米的额外优势
(确切地)。 这个新标准被称为 国际的 . 澳大利亚、加拿大和
英国随后根据国际码(澳大利亚
没有定义弗隆或杆); 因为许多美国土地调查是根据
1959 年之前的单位,美国继续定义惯用的测量师单位(弗隆、链、
杆和链接)根据脚的先前值,称为 US
. 美国定义了一个 US 英里 作为 5280 美国测量英尺,并定义了一个 法令 英里
作为美国调查英里。 这些单位的美国值与国际值不同
约 2 ppm。

“单位”程序使用这些单位的国际值; 美国的价值观可以是
通过使用“US”或“survey”前缀获得。 在任何一种情况下,简单的
保持单位之间熟悉的关系,例如,1 'furlong' = 660 'ft',和 1
'USfurlong' = 660 'USft',尽管两者的公制等价物略有不同
案件。 “US”前缀或“survey”前缀也可用于获取美国调查
英里和 1959 年之前美国码的价值,例如,“USmile”或“surveymile”(但 而不去
'USsurveymile')。 要获得法定里程的美国价值,请使用“USstatutemile”或
'你微笑'。

除了超过数百英里的距离(例如在美国国家飞机
坐标系),英里的差异通常是微不足道的:

您拥有: 100 英里 - 100 英里
你想要:英寸
* 12.672025
/ 0.078913984

这些单位在 1959 年之前的英国值可以通过前缀“UK”获得。

在美国,英亩是根据美国测量英尺的官方定义的,但“单位”使用
基于国际英尺的定义。 如果你想要官方的美国英亩使用
'USacre' 并类似地使用 'USacrefoot' 作为该单位的官方美国版本。 这
这些单位之间的差异约为百万分之四。

单元 表情


运营商
您可以通过将单位与操作组合来输入更复杂的单位,例如
用于分组的乘法、除法、幂、加法、减法和括号。
当“单位”被调用时,您可以使用这些运算符的常用符号
默认选项。 此外,'units' 支持一些扩展,包括高优先级
使用空格的乘法和高优先级的数字除法运算符 ('|')
可以简化一些表达。

您可以使用空格或星号 ('*') 来乘以单位。 下一个示例显示了两种形式:

你有: arabicfoot * arabictradepound * force
你想要:英尺磅力
* 0.7296
/ 1.370614

您可以使用斜杠 ('/') 或使用 'per' 来划分单位:

你有:每两周弗隆
你想要:米/秒
* 0.00016630986
/ 6012.8727

您可以使用括号进行分组:

你有:(1/2)公斤/(公斤/米)
你想要:联赛
* 0.00010356166
/ 9656.0833

使用空格的乘法比使用斜杠的除法具有更高的优先级,并且是
从左到右评估; 实际上,第一个“/”字符标志着
单位表达式的分母。 这使得输入具有多个的商变得简单
分母中的项:'J / mol K'。 '*' 和 '/' 运算符具有相同的
优先级,并从左到右计算; 如果乘以“*”,则必须将
分母中带括号的项:'J / (mol * K)'。

空间运算符的更高优先级可能并不总是有利的。 例如,
'm/ss/day' 等价于 'm / ss day' 并且具有每时间立方的长度维度。
同样,“1/2米”是指相当于0.5/米的倒数长度单位,
如果您输入该表达式,可能不是您想要的。 得到半米
您需要使用括号:“(1/2) 米”。 '*' 运算符很方便
乘以商数序列。 例如,“m/s * s/day”相当于“m/day”。
类似地,你可以写“1/2 * meter”来得到半米。

'units' 程序支持数字分数的另一个选项:您可以指定
分工 数字 用竖线('|'),所以如果你想要半米,你可以
写“1|2 米”。 您不能使用竖线来表示非数字的划分
单位(例如,'m|s' 会导致错误消息)。

可以使用“^”字符指定单位的幂,如下所示
例如,或通过一个单位及其指数的简单串联:'cm3' 等价于
'cm^3'; 如果指数多于一位,则需要'^'。 你也可以使用
'**' 作为指数运算符。

你有:cm^3
你想要:加仑
* 0.00026417205
/ 3785.4118

串联仅适用于单个单位名称:如果您写 '(m/s)2','units' 将
将其视为乘以 2。当单位包含前缀时,指数运算符适用
组合,所以 'centimeter3' 给出立方厘米。 如果将前缀分开
从带有任何乘法运算符的单位(例如,“厘米^ 3”),前缀是
被视为一个单独的单位,因此指数仅适用于没有前缀的单位。
第二个例子等价于 'centi * (meter^3)',并给出百分之一立方
米,而不是立方厘米。 “单位”计划在内部仅限于以下产品
99 台; 因此,像“meter^100”或“joule^34”这样的表达式(在内部表示)
因为 'kg^34 m^68 / s^68') 将失败。

'|' 运算符的优先级最高,所以你可以写出两个的平方根
三分之三为“2|3^1|2”。 '^' 运算符具有第二高的优先级,并被评估
从右到左,像往常一样:

你有:5 * 2^3^2
你要:
定义:2560

对于无量纲基本单位,任何无量纲指数都是有意义的(例如,
'pi^exp(2.371)')。 即使角度有时被视为无量纲,指数
不能有角度尺寸:

你有:2^弧度
^
指数不是无量纲的

如果基本单位不是无量纲的,则指数必须是有理数 p/q,并
单位的维数必须是 q,所以 'gallon^2|3' 有效但 'acre^2|3' 失败。
使用斜杠 ('/') 运算符(例如,'gallon^(2/3)')的指数也是可以接受的; 这
需要括号是因为'^'的优先级高于'/'的优先级。 自从
'units' 不能表示指数大于 99 的维度,一个完全减少的
指数必须有 q < 100. 将无量纲单位提升到幂时,“单位”
尝试将十进制指数转换为有理数 q < 100. 如果这不是
可能的“单位”显示错误消息:

你有:ft^1.234
基本单元不是无量纲的; 需要有理指数

十进制指数必须使其有理表示与机器精度相匹配,因此
'acre^1.5' 有效,但 'gallon^0.666' 无效。

求和 差异 of 单位
有时您可能想要添加 SI 之外的不同单位的值。 您可以
还希望使用“单位”作为跟踪单位的计算器。 合规总和
单位用“+”字符书写,差异用“-”字符书写。

你有:2小时+23分钟+32秒
你想要:秒
* 8612
/ 0.00011611705

你有: 12 英尺 + 3 英寸
您想要:厘米
* 373.38
/ 0.0026782366

你有:2 btu + 450 ft lbf
你想要:btu
* 2.5782804
/ 0.38785542

添加或减去的表达式必须简化为相同的表达式
原始单位,否则会显示错误信息:

您有: 12 个打印机点 - 4 个 heredium
^
不合格单位的非法总和

像往常一样,“+”和“-”的优先级低于其他运算符。 一个
诸如 2 1/2 杯之类的分数可以表示为“(2+1|2) 杯”; 括号是
必要,因为乘法的优先级高于加法。 如果省略
括号中,“单位”尝试添加“2”和“1|2 杯”,您会收到一条错误消息:

你有: 2+1|2 杯
^
不合格单位的非法总和或差额

该表达式也可以正确地写为“(2+1/2) cups”。 如果你写 '2 1|2
杯子的空间被解释为 乘法 所以结果与“1 杯”相同。

'+' 和 '-' 字符有时会出现在指数中,例如 '3.43e+8'。 这将导致
像“3e+2 yC”这样的表达式中的歧义。 单位“e”是一个小的电荷单位,所以
这可以被视为等价于“(3e+2) yC”或“(3 e)+(2 yC)”。 这种歧义是
如果可能,通过始终将“+”和“-”解释为指数的一部分来解决。

数值 as 单位
对于“单位”,数字只是另一种单位。 他们可以和你一样出现多次
像和在单位表达式中的任何顺序。 例如,要找到一个盒子的体积
是 2 英尺 x 3 英尺 x 12 英尺的立体,您可以执行以下操作:

你有: 2 英尺 3 英尺 12 英尺
你想要:立体
* 2.038813
/ 0.49048148

你有:5美元/码
您想要:美分/英寸
* 13.888889
/ 0.072

第二个示例显示了单位转换中的美元符号如何位于
五。 注意:'units' 会将没有空格的 '$5' 解释为等价于 'dollar^5'。

内建的 功能
提供了几个内置函数:'sin'、'cos'、'tan'、'ln'、'log'、'log2'、'exp'、
“acos”、“atan”和“asin”。 'sin'、'cos' 和 'tan' 函数需要一个
无量纲参数或具有角度维数的参数。

你有:罪(30度)
你要:
定义:0.5

你有:罪(pi/2)
你要:
定义:1

你有:罪(3公斤)
^
单位不是无量纲的

列表中的其他函数需要无量纲参数。 逆
三角函数返回带有角度维度的参数。

如果你想求单位的根,你可以使用 'sqrt' 或 'cuberoot' 函数。 这些
函数要求参数具有适当的根。 你可以获得更高的
使用分数指数求根:

你有:sqrt(英亩)
你想要:脚
* 208.71074
/ 0.0047913202

你有:(400 W/m^2 / stefanboltzmann)^(1/4)
你有:
定义:289.80882 K

你有:立方根(公顷)
^
单位不是根

上一页 结果
您可以使用下划线 ('_') 插入先前转换的结果。 它是
例如,当您想将相同的输入转换为多个不同的单位时很有用

你有:2.3吨冷藏
你想要:btu/hr
* 27600
/ 3.6231884e-005
你有: _
你想要:千瓦
* 8.0887615
/ 0.12362832

假设您想做一些需要 2 英寸油深的油炸。 你有
1/2 加仑的油,想知道最大直径的平底锅可以保持
所需的深度。 非线性单位“circlearea”给出 半径 圆的(见 其他
非线性 单位, 更详细的描述)以 SI 单位表示; 你想要 直径 in
英寸:

你有:1|2 加仑/2 英寸
你想要:circlearea
0.10890173 m

你有:2 _
你想要:在
* 8.5749393
/ 0.1166189

在大多数情况下,周围的空白是可选的,所以前面的例子可以有
使用'2_'。 但是,如果“_”跟在非数字单位符号之后,则需要空格:

你有: m_
^
解析错误

当'_'后跟一个数字时,运算是乘法而不是
求幂,所以'_2',等价于'_ * 2'而不是'_^2'。

您可以多次使用“_”符号; 例如,

你有:米
你要:
定义:1米
你有: _ _
你要:
定义:1 m^2

在执行转换之前使用“_”(例如,在调用之后立即)
产生一个错误:

你有: _
^
没有以前的结果; '_' 没有设置

因此,当以非交互方式调用 'units' 时,'_' 没有任何作用。

如果使用 '--verbose' 选项调用 'units'(请参阅 调用中 单位), 的价值 '_'
未展开:

你有:英里
你想要:英尺
英里 = 5280 英尺
英里 = (1 / 0.00018939394) 英尺
你有: _
你想要:米
_ = 1609.344 米
_ = (1 / 0.00062137119) 米

您可以在 'You want:' 提示处输入 '_',但它通常不是很有用。

复杂 单位 表达式
“单位”程序特别有助于确保精度和尺寸一致性
转换冗长的单位表达式时。 例如,Darcy-Weisbach 的一种形式
流体流动方程是

Delta P = (8 / pi)^2 (rho 逻辑量表^2) / d^5,

凡达 P 是压降,rho 是质量密度, f 是(无量纲的)
摩擦系数, L 是管道的长度, Q 是体积流量,和 d
管径。 可能需要将方程的形式为

Delta P = A1 ρ 逻辑量表^2 / d^5

接受用户的正常单位; 对于美国使用的典型单位,所需的
转换可能是这样的

You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5)
你想要:psi
* 43.533969
/ 0.022970568

括号允许自然地输入表达式中的单个术语,因为它们
可以从公式中读出。 或者,乘法可以用
'*' 而不是空格; 那么括号只需要在 'ft^3/s' 附近,因为它
指数:

你有:8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5
你想要:psi
* 43.533969
/ 0.022970568

没有括号,并使用空格进行乘法,先前的转换将
需要输入为

你有: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5
你想要:psi
* 43.533969
/ 0.022970568

向后 兼容性:
'*' 和 '-' 原始的 'units' 赋予乘法比除法更高的优先级
使用斜线。 这不同于通常的优先规则,它给出乘法
和除法的优先级相同,对于将单位视为单位的人来说可能会造成混淆
计算器。

默认情况下,包含在此“单位”程序中的星号运算符 (“*”) 与
优先级作为除法,因此遵循通常的优先级规则。 对于倒退
兼容性您可以使用“--oldstar”选项调用“单位”。 然后'*'有更高的
优先级高于除法,并且与使用空格的乘法具有相同的优先级。

历史上,连字符 ('-') 已在技术出版物中用于表示
单位的乘积,而原始的“单位”程序将其视为乘法
操作员。 因为“单位”提供了其他几种获取单位产品的方法,并且
因为“-”是一般代数表达式中的减法运算符,“单位”将
默认情况下,二进制“-”作为减法运算符。 为了向后兼容,请使用
'--product' 选项,它导致 'units' 将二进制 '-' 运算符视为乘积
操作员。 当“-”是乘法运算符时,它的优先级与
乘以空格,使其优先于除法。

当“-”用作一元运算符时,它会否定其操作数。 与“单位”无关
选项,如果 '-' 出现在 '(' 或 '+' 之后,那么它将充当否定运算符。
因此,您始终可以通过输入“20 度 +”来计算 12 度减去 20 分钟
-12 弧分'。 定义新单位时必须使用此构造,因为您不能
知道在处理您的定义时哪些选项将生效。

非线性 单元 转换


非线性单位使用函数符号表示。 它们使非线性成为可能
单位转换,如温度。

温度 转换
温度之间的转换不同于温度之间的线性转换
增量——看下面的例子。 绝对温度转换由
以“temp”开头的单位,您必须使用功能符号。 气温-
增量转换是使用以“deg”开头的单位完成的,它们不需要
功能符号。

你有: 温度(45)
你想要:tempC
7.2222222

你有: 45 华氏度
你想要: degC
* 25
/ 0.04

想想'tempF(x)' 不是作为函数而是作为表示 x 应该有
附加到它的“tempF”单位。 看 定义 非线性 单位. 第一次转换
显示如果室外温度为 45 华氏度,则为 7.2 摄氏度。 第二
转换表示华氏 45 度的变化对应于 25 华氏度的变化
摄氏度。 从 'tempF(x)' 是绝对温度,所以

你有: 温度(45)
你想要: degR
* 504.67
/ 0.0019814929

给出相同的结果

你有: 温度(45)
你想要:tempR
* 504.67
/ 0.0019814929

但是如果你转换 'tempF(x)' 到 'degC',输出可能不是你所期望的:

你有: 温度(45)
你想要: degC
* 280.37222
/ 0.0035666871

结果是以 K 为单位的温度,因为 'degC' 被定义为 'K',即开尔文。 为了
一致的结果,使用 'tempX' 单位转换为温度而不是
转换温度增量。

'tempC()' 和 'tempF()' 定义仅限于正绝对温度,并且
给出一个会导致负绝对温度的值会产生一个错误
信息:

你有: tempC(-275)
^
域外函数的参数
^

其他 非线性 单位
非线性单元的其他一些例子是许多不同的环尺寸和线规,
用于磨料的粒度、分贝刻度、鞋号、密度刻度
糖(例如波美)。 标准数据文件还提供了计算面积的单位
一个圆和一个球体的体积。 有关更多详细信息,请参阅标准单位数据文件。
带有多个零的线规用负数表示,其中两个零是
'-1'。 或者,您可以使用定义的同义词“g00”、“g000”等
在标准单位数据文件中。

你有: 线规(11)
你想要:英寸
* 0.090742002
/ 11.020255

你有: brwiregauge(g00)
你想要:英寸
* 0.348
/ 2.8735632

你有: 1 毫米
你想要:线规
18.201919

你有: 砂砾_P(600)
你想要:grit_ansicoated
342.76923

最后一个例子是P级砂纸的转换,这是欧洲的
标准,背面可能标有“P600”,符合美国标准。

您可以使用非线性单位“circlearea”计算圆的面积。 你也可以
使用circularinch 或circleinch 执行此操作。 下一个例子展示了两种计算方式
半径为 XNUMX 英寸的圆的面积和计算球体体积的一种方法
半径为一米。

你有:circlearea(5 in)
你想要:in2
* 78.539816
/ 0.012732395

你有: 10^2 circleinch
你想要:in2
* 78.539816
/ 0.012732395

你有: 球体(仪表)
你想要:ft3
* 147.92573
/ 0.0067601492

非线性转换的反转通过在波浪号 ('~') 前面加上前缀来表示
非线性单元名称:

你有:~线规(0.090742002英寸)
你要:
定义:11

您可以给出没有参数或括号的非线性单位定义,然后按
输入 在“您想要:”提示下获取非线性单位的定义; 如果
定义并非对所有实数都有效,也给出了有效范围。 如果
定义需要特定单位 此信息也会显示:

你有:tempC
定义:tempC(x) = x K + stdtemp
定义为 x >= -273.15
你有:~tempC
定义:~tempC(tempC) = (tempC +(-stdtemp))/K
定义为 tempC >= 0 K
你有:circlearea
定义:circlearea(r) = pi r^2
r 有单位 m

要查看逆的定义,请使用“~”符号。 在这种情况下,参数
功能定义通常是单元的名称。 请注意,逆为
'tempC' 表明它需要在允许范围的规范中使用 'K' 的单位
值。 非线性单位转换在 定义 非线性
单位.

单元 清单: 转换 TO 总和 OF 单位


在 SI 之外,有时需要将单个单位转换为单位总和——
例如,英尺到英尺加英寸。 转换 单位总和在
求和 差异 of 单位, 并且是添加带有“+”的单位的简单问题
标志:

你有: 12 英尺 + 3 英寸 + 3|8 英寸
你想要:英尺
* 12.28125
/ 0.081424936

虽然你可以类似地写一个单位的总和来转换 ,结果不会是
转换为总和中的单位,而是转换为特定总和
您已输入:

你有: 12.28125 英尺
你想要:ft + in + 1|8 in
* 11.228571
/ 0.089058524

'You want:' 提示下给出的单位表达式相当于要求转换
为 '1 ft + 1 in + 1|8 in' 的倍数,即 1.09375 英尺,因此
前面的例子相当于

你有: 12.28125 英尺
你想要:1.09375英尺
* 11.228571
/ 0.089058524

在转换为英里、英尺和英寸等单位的总和时,您通常需要
第一个单元的最大积分值,然后是第一个单元的最大积分值
接下来,余数转换为最后一个单位。 您可以轻松地进行此转换
'units' 使用特殊语法来表示单位列表。 您必须列出所需的单位
按从大到小的顺序,用分号 (';') 字符分隔:

你有: 12.28125 英尺
你想要:ft;in;1|8 in
12 英尺 + 3 英寸 + 3|8 英寸

转换总是给出列表中单位的整数系数,除非可能
转换不准确时的最后一个单位:

你有: 12.28126 英尺
你想要:ft;in;1|8 in
12 英尺 + 3 英寸 + 3.00096 * 1|8 英寸

列出单位的顺序很重要:

你有:3公斤
你想要:盎司;磅
105 盎司 + 0.051367866 磅

你有:3公斤
你想要:磅;盎司
6 磅 + 9.8218858 盎司

在磅之前列出盎司会产生技术上正确的结果,但不是很有用
一。 您必须按大小降序列出单位以获得最有用的
结果。

以分隔符“;”结束单元列表与重复最后一个单元的效果相同
在列表中,所以 'ft;in;1|8 in;' 等价于 'ft;in;1|8 in;1|8 in'。 用例子
以上,这给

你有: 12.28126 英尺
你想要:ft;in;1|8 in;
12 英尺 + 3 英寸 + 3|8 英寸 + 0.00096 * 1|8 英寸

实际上将最后一个系数的整数部分和小数部分分开
单元。 如果您更喜欢将最后一个系数四舍五入为整数,您可以这样做
使用 '--round' ('-r') 选项。 对于前面的例子,结果是

你有: 12.28126 英尺
你想要:ft;in;1|8 in
12 英尺 + 3 英寸 + 3|8 英寸(四舍五入到最接近的 1|8 英寸)

当您使用 '-r' 选项时,重复列表中的最后一个单元没有效果(例如,
'ft;in;1|8 in;1|8 in' 等价于 'ft;in;1|8 in'),因此结束 a
带有“;”的列表。 使用单个单元和 '-r' 选项,一个终端 ';'
效果:它导致“单位”将单个单位视为一个列表并产生一个四舍五入的值
为单机。 如果没有额外的 ';','-r' 选项对单个单元没有影响
转换。 此示例显示使用“-r”选项的输出:

你有: 12.28126 英尺
你想要:在
* 147.37512
/ 0.0067854058

你有: 12.28126 英尺
你想要:在;
147 英寸(四舍五入到最接近的英寸)

出现在列表中的每个单元必须与列表中的第一个单元一致,
当然,列出的单位也必须与您输入的单位一致
'你有:' 提示。

你有:米
你想要:英尺;公斤
^
一致性错误
英尺 = 0.3048 米
公斤 = 1 公斤

你有:米
你想要:磅;盎司
一致性错误
1 m
0.45359237 kg

在第一种情况下,'units' 报告出现在列表中的单位之间的分歧。
在第二种情况下,“单位”报告您输入的单位与
所需的转换。 此一致性错误基于单元上的第一个单元
名单。

转换为单位总和的其他常见候选对象是角度和时间:

你有: 23.437754 度
你要; 度;弧分;弧秒
23 度 + 26 弧分 + 15.9144 弧秒

你有:7.2319 小时
你想要:小时;分钟;秒
7 小时 + 13 分钟 + 54.84 秒

在北美,烹饪食谱通常按体积测量成分,并使用
单位之间并不总是方便的倍数。 假设你有一个
6 份的食谱,而您希望为 1 份做一份。如果食谱需要 2 1/2 杯
一种成分,您可能希望了解您使用的测量设备的测量结果
有可用,您可以使用“单位”并输入

你有: (2+1|2) 杯 / 6
你想要:杯;1|2 杯;1|3 杯;1|4 杯;汤匙;茶匙;1|2 茶匙;1|4 茶匙
1|3 杯 + 1 汤匙 + 1 茶匙

默认情况下,如果列表中的单位以 1| 形式的分数开头x 它的乘数是
一个整数,分数是乘数和分子的乘积; 为了
例,

你有: 12.28125 英尺
你想要:ft;in;1|8 in;
12 英尺 + 3 英寸 + 3|8 英寸

在许多情况下,例如上面的示例,这是我们想要的,但有时并非如此。
例如,一份 6 人的烹饪食谱可能需要 5 1/4 杯的配料,但您
想要一份 2 人份,而您的 1 杯量杯不可用; 你可以试试

你有: (5+1|4) 杯 / 3
您想要:1|2 杯;1|3 杯;1|4 杯
3|2 杯 + 1|4 杯

对于拥有 1 1/2 杯量度(并认识到
等价),但对于测量范围更有限的人来说可能没有那么有用,
谁不想做额外的计算,只想知道 ``多少 1/2-cup
我需要添加的措施?'' 毕竟,这就是实际问的问题。 随着
'--show-factor' 选项,该因子不会与统一分子组合,因此
你得到

你有: (5+1|4) 杯 / 3
您想要:1|2 杯;1|3 杯;1|4 杯
3 * 1|2 杯 + 1|4 杯

永远不会覆盖用户指定的带有非 1 分子的小数单位,
但是——如果单位列表指定“3|4 杯;1|2 杯”,则结果相当于 1 1/2 杯
无论是否给出“--show-factor”选项,始终显示为“2 * 3|4 cup”。

单元列表的某些应用程序可能不太明显。 假设你有一个邮政
规模并希望确保其精确到 1 盎司,但只有公制校准
重量。 你可以试试

你有: 1 盎司
你想要:100克;50克; 20克;10克;5克;2克;1克;
20克+5克+2克+1克+0.34952312*1克

然后,您可以将 20 克、5 克、2 克和 1 克的砝码各放一个在秤上并希望
它表明接近

你有: 20 克 + 5 克 + 2 克 + 1 克
你想要:盎司;
0.98767093盎司

附加';' 'oz' 强制包含单位的单行显示; 这里是整数
结果的一部分为零,因此不显示。

单位清单,例如

杯;1|2 杯;1|3 杯;1|4 杯;汤匙;茶匙;1|2 茶匙;1|4 茶匙

进入可能很乏味。 'units' 程序提供了一些常见的简写名称
组合:

hms 小时、分钟、秒
dms 角度:度、分、秒
时间年、日、小时、分钟和秒
usvol 美国烹饪量:杯子和更小

使用这些简写,或 单元 名单 别名,您可以进行以下转换:

你有:异常年
你想要:时间
1 年 + 25 分钟 + 3.4653216 秒
你有: 1|6 杯
你想要:usvol
2汤匙+2茶匙

您不能将单元列表别名与其他单元组合:它必须单独出现在
'你想要:'提示。

您可以通过在“您拥有:”处输入单位列表别名来显示它的定义
提示:

你有: dms
定义:单位列表,deg;arcmin;arcsec

当您使用“--compact”、“--terse”或“-t”指定紧凑输出并执行转换时
对于单位列表,'units' 列出列表中每个单位的转换系数,分隔
通过分号。

你有:年
你想要:天;分钟;秒
365; 348; 45.974678

与常规输出的情况不同,零 旨在 包含在此输出列表中:

你有:升
你想要:杯子;1|2 杯;1|4 杯;汤匙
4; 0; 0; 3.6280454

记录 计算方式


'--log' 选项允许您将计算结果保存在文件中; 这可以是
如果您需要工作的永久记录,则非常有用。 例如,流体流动
转换为 复杂 单位 表达式, 很长,如果你要在
设计管道系统时,您可能需要项目文件的记录。 如果
互动环节

# 压降的转换系数 A1
# dP = A1 rho f LQ^2/d^5
你有: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # 输入单位
你想要:psi
* 43.533969
/ 0.022970568

被记录,日志文件将包含

### 日志于 02 年 15 月 55 日星期五 35:2015:XNUMX 开始

# 压降的转换系数 A1
# dP = A1 rho f LQ^2/d^5
来自:(8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # 输入单位
至: psi
* 43.533969
/ 0.022970568

打开文件时将时间写入日志文件。

使用注释可以帮助澄清日志计算的含义。 日志
包括“您拥有:”和“您想要:”的单位之间的一致性错误
提示,但不包括其他错误,包括项目在总和或
单元列表中的项目之间的差异。 例如天顶角之间的转换
和仰角可能涉及

你有: 90 度 - (5 度 + 22 分钟 + 9 秒)
^
不合格单位的非法总和或差额
你有: 90 度 - (5 度 + 22 弧分 + 9 弧秒)
你想要:dms
84 度 + 37 弧分 + 51 弧秒
你有: _
你想要: deg
* 84.630833
/ 0.011816024
你有:

日志文件将包含

从:90 度 - (5 度 + 22 弧分 + 9 弧秒)
至:度;弧分;弧秒
84 度 + 37 弧分 + 51 弧秒
从: _
至:度
* 84.630833
/ 0.011816024

初始输入错误(忘记分钟有时间维度,并且
arcminutes 必须用于角度尺寸)不会出现在输出中。 什么时候
转换为单元列表别名,'units' 扩展日志文件中的别名。

'From:' 和 'To:' 标签被写入日志文件,即使 '--quiet' 选项是
给。 如果调用 'units' 时日志文件存在,则新结果将附加到
日志文件。 每次打开文件时都会将时间写入日志文件。 这
当 'units' 以非交互方式使用时,'--log' 选项将被忽略。

调用 单位
您可以像这样调用“单位”:

单位 [选项[来自单位 [到单位]]

如果 来自单位到单位 省略,程序将使用交互式提示
确定要执行的转换。 看 互动 使用 VHDL 语言编写。 如果两者都 来自单位至-
单元 给出,'units' 将打印该单个转换的结果,然后退出。 如果
仅由 来自单位 出现在命令行上,'units' 将显示那个的定义
单位并退出。 命令行上指定的单位可能需要加引号以保护它们
从 shell 解释并将它们分组为两个参数。 看 命令 Line 使用 VHDL 语言编写.

'units' 的默认行为可以通过命令中给出的各种选项来改变
线。 在大多数情况下,选项可以以任何一种简短形式给出(单个“-”后跟
由单个字符)或长格式('--' 后跟一个单词或连字符分隔的单词)。
短格式选项是神秘的,但需要较少的输入; 长格式选项需要更多
打字但更具解释性,可能更容易记忆。 使用您需要的长格式选项
只输入足够的字符来唯一标识程序的选项。 为了
例如,'--out %f' 有效,但 '--o %f' 失败,因为 'units' 有其他长选项
'o' 开头。 但是,'--q' 有效,因为 '--quiet' 是唯一的长选项
以“q”开头。

某些选项需要参数来指定值(例如,“-d 12”或“--digits 12”)。
不带参数的短格式选项可以连接(例如,'-erS' 是
相当于'-e -r -S'); 这样一个列表中的最后一个选项可能是一个
参数(例如,'-ed 12')。 对于短格式选项,选项与其之间的空间
参数是可选的(例如,'-d12' 等价于'-d 12')。 长格式选项可能不会
连接,并且长格式选项与其参数之间需要空格。
短格式和长格式选项可以在命令行上混合使用。 选项可能是
以任何顺序给出,但是当不兼容的选项(例如'--output-format'和
'--exponential') 组合给出,行为由最后一个选项控制
给。 例如,'-o%.12f -e' 给出指数格式,默认值为 XNUMX
有效数字)。

可以使用以下选项:

-c, - 查看
检查单位数据文件中定义的所有单位和前缀是否减少为
原始单位。 打印所有不能减少的单位的列表。 还显示
关于单位数据文件中可疑定义的一些其他诊断。 仅有的
检查当前语言环境中活动的定义。 你应该总是跑
'units' 修改单位数据文件后使用此选项。

--检查详细, --详细检查
与 '--check' 选项一样,该选项打印一个不能被输入的单位列表。
减少。 但是为了帮助找到导致无限循环的单元定义,它列出了
单位被检查。 如果 'units' 挂起,则要打印的最后一个单元具有
不好的定义。 仅检查当前语言环境中活动的定义。

-d n位数, --数字 n位数
将输出中的有效位数设置为指定的值(其中
必须大于零)。 例如,'-d 12' 设置重要的数量
数字到 12。使用指数输出“单位”在左边显示一位
小数点和小数点右边的十一位数字。 在大多数
系统,内部有意义的数字的最大数量为 15; 如果你指定一个
大于系统的最大值,'units' 将打印警告并设置
数字到最大的有意义的值。 要直接设置最大值,请给出
'max' 的参数(例如,'-d max')。 当然,请注意这里的“重要”
仅指 产品 数; 如果结果取决于物理常数而不是
已知此精度,物理上有意义的精度可能小于
显示。 '--digits' 选项与 '--output-format' 选项冲突。

-e, --指数
将数字输出格式设置为指数(即科学记数法),就像这样
在 Unix 'units' 程序中使用。 默认精度为八位有效
数字(小数点右边的七位数字); 这可以改变
'--digits' 选项。 '--exponential' 选项与 '--output-
格式”选项。

-o 格式, - 输出格式 格式
此选项提供对数字输出格式的完全控制,使用
指定 格式. 格式是单浮点数字格式
C 编程语言中的“printf()”函数。 所有编译器都支持
格式类型 'g' 和 'G' 指定有效数字,'e' 和 'E' 用于科学
表示法,'f' 表示定点十进制。 ISO C99 标准引入了“F”
定点十进制类型和十六进制浮点'a'和'A'类型
观点; 支持它们的编译器允许使用这些类型。 默认的
格式为'%.8g'; 为了获得更高的精度,您可以指定“-o %.15g”。 看 数字
输出 格式 以及“printf()”的文档以获得更详细的描述
的格式规范。 '--output-format' 选项提供了最大的
控制输出外观,但至少需要基本知识
'printf()' 格式语法。 如果你不想打扰'printf()'
语法,您可以使用“--digits”选项更简单地指定更高的精度,或者
使用“--exponential”选择指数格式。 '--output-format' 选项是
与 '--exponential' 和 '--digits' 选项不兼容。

-f 文件名, - 文件 文件名
指示“单位”加载单位文件 文件名. 您最多可以指定 25 个单位
命令行中的文件。 当您使用此选项时,'units' 将加载 仅由 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。
您在命令行中列出的文件; 它不会加载标准文件或您的
除非您明确列出个人单位文件。 如果 文件名 是空的
字符串 ('-f ""'),默认单位文件(或由 'UNITSFILE' 指定的)将是
除了用“-f”指定的任何其他内容外还加载。

-L 日志文件, - 日志 日志文件
将计算结果保存在文件中 日志文件; 如果是这样,这可能很有用
重要的是要有单位转换或其他计算的记录
广泛使用或用于关键活动,例如程序或设计项目。 如果
日志文件 退出时,新结果将附加到文件中。 此选项被忽略
当以非交互方式使用“单位”时。 看 记录 计算 更多
详细说明和一些例子。

-H 文件名, - 历史 文件名
指示“单位”将历史保存到 文件名,以便记录您的命令
可用于跨不同“单元”调用进行检索。 为防止
保存设置的历史记录 文件名 到空字符串 ('-H ""')。 这个选项
如果 readline 不可用,则无效。

-h, - 帮帮我
打印出“单位”选项的摘要。

-m, - 减
导致“-”被解释为减法运算符。 这是默认的
行为。

-p, - 产品
导致“-”在有两个操作数时被解释为乘法运算符。
当它只有一个操作数时,它将充当否定运算符:'(-3)'。 经过
默认“-”被视为减法运算符。

--老星
导致 '*' 具有旧式优先级,高于除法的优先级
所以“1/2*3”将等于“1/6”。

- 新星
强制 '*' 具有遵循通常规则的新(默认)优先级
代数:'*'的优先级与'/'的优先级相同,所以
“1/2*3”将等于“3/2”。

- 袖珍的
提供仅具有转换因子的紧凑输出。 这将关闭
'--verbose' 选项。

-q, - 安静的, - 沉默的
禁止提示用户输入单位和显示有关单位的统计信息
加载的单元数。

-n, --nolists
禁用转换为单位列表。

-r, - 圆形的
当转换为单位列表给出的单位组合时,四舍五入
列表中的最后一个单位到最接近的整数。

-S, --显示因素
转换为列表中指定的单位组合时,始终显示非
单位前的单位因子,单位以分母为单位的分数开头。
默认情况下,如果列表中的单位以 1| 形式的分数开头x 以及
乘数是 1 以外的整数,分数是
乘数和分子(例如,'3|8 in' 而不是 '3 * 1|8 in')。 在一些
情况下,这不是我们想要的; 例如,烹饪食谱的结果
可能将“3 * 1|2 杯”显示为“3|2 杯”。 使用“--show-factor”选项,结果
相当于 1.5 杯将显示为“3 * 1|2 杯”而不是“3|2 杯”。 一个
用户指定的带有非 1 分子的小数单位永远不会被覆盖,
但是——如果单位列表指定“3|4 杯;1|2 杯”,则结果相当于 1 1/2
杯子将始终显示为“2 * 3|4 杯”,无论是否使用“--show-factor”
给出了选项。

-s, - 严格的
禁止将单位转换为倒数单位。 例如,“单位”将
通常将赫兹转换为秒,因为这些单位是每个的倒数
其他。 严格选项要求单位严格遵守以执行
转换,如果您尝试将赫兹转换为秒,则会出现错误。

-1, - 一条线
只给出一行输出(前向转换)。 不要打印反面
转换。 如果执行相互转换,则“单位”仍将打印
“相互转换”线。

-t, --简洁
转换单位时给出简洁的输出。 调用时可以使用此选项
'units' 来自另一个程序,以便输出易于解析。 这个选项有
这些选项的综合效果: '--strict' '--quiet' '--one-line'
' - 袖珍的'。 当与 '--version' 结合使用时,它会产生一个仅显示
程序名称和版本号。

-v, --详细
转换单位时给出稍微详细的输出。 当与
'-c' 选项与 '--check-verbose' 具有相同的效果。 当与
'--version' 产生更详细的输出,相当于 '--info' 选项。

-V, - 版
打印程序版本号,判断'readline'库是否已经被
包含,判断是否包含了UTF-8支持; 给出语言环境,
默认单位数据文件的位置,以及个人单位的位置
数据文件; 指示个人单位数据文件是否不存在。

当与 '--terse' 选项结合使用时,程序仅打印版本
号和退出。

当与“--verbose”选项、程序、“--version”选项结合使用时
与下面的“--info”选项具有相同的效果。

-I, - 信息
打印'--version'选项给出的信息,显示路径名
单位程序,显示“UNITSFILE”和“MYUNITSFILE”环境的状态
变量,以及有关“单位”如何定位相关文件的附加信息。
在运行 Microsoft Windows 的系统上,“UNITSLOCALE”环境的状态
还给出了有关相关区域设置映射的变量和信息。 这个选项
通常只有开发人员和管理员感兴趣,但有时也可以
对故障排除很有用。

组合 '--version' 和 '--verbose' 选项与提供 '--info' 的效果相同。

-U, --单位文件
打印默认单位数据文件的位置并退出; 如果文件不能
找到,打印“未找到单位数据文件”。

-l 当地, --区域设置 当地
打印使用“--version”选项给出的信息,显示指定的强制
默认情况下,使用“en_GB”等语言环境获取英国定义。 这将覆盖
区域设置由系统设置或环境变量确定。 看 语言环境 查阅
语言环境格式的描述。

ADDING 你的 拥有 释义


单位 时间
'units' 可以转换的单位和前缀在单位数据文件中定义,
通常是“/usr/share/units/definitions.units”。 如果找不到此文件,请运行
'units --version' 获取有关安装文件位置的信息。
尽管如果您具有适当的用户权限,您可以扩展或修改此数据文件,
通常最好将扩展名放在单独的文件中,以便定义
如果您更新“单位”,则保留。

您可以使用 '!include' 命令在单位数据库中包含其他数据文件
在标准单位数据文件中。 例如

!include /usr/local/share/units/local.units

可能适用于站点范围的补充数据文件。 的位置
标准单位数据文件中的“!include”语句很重要; 后来的定义
替换较早的,因此包含文件中的任何定义都将覆盖定义
在标准单位数据文件中的 '!include' 语句之前。 通过正常调用,
没有关于重新定义的警告; 以确保您没有意外
重新定义,在对任何单位数据文件进行更改后运行“units -c”。

如果您想在标准或站点范围之外或代替标准或站点范围添加自己的单元
补充单位数据文件,您可以将它们包含在您家中的“.units”文件中
目录。 如果此文件存在,则在标准单位数据文件之后读取它,以便任何
此文件中的定义将替换标准数据中相同单位的定义
文件或包含在标准数据文件中的文件。 如果有此文件将不会被读取
单位文件在命令行中指定。 (在 Windows 下,个人单位文件是
名为“unitdef.units”。)运行“units -V”将显示您的位置和名称
个人单位档案。

“units”程序首先尝试从“HOME”中确定您的主目录
环境变量。 在运行 Microsoft Windows 的系统上,如果“HOME”不存在,
'units' 尝试从 'HOMEDRIVE'、'HOMEPATH' 和
'用户资料'。 您可以指定任意文件作为您的个人单位数据文件
'MYUNITSFILE' 环境变量; 如果此变量存在,则不使用其值
搜索您的主目录。 更详细地描述了默认单位数据文件
in 时间 .

定义 全新 单位 前缀
单位通过给出其名称和等价物在一行中指定。 评论
以“#”字符开头,它可以出现在一行中的任何位置。 反斜杠字符
如果 ('\') 出现在一行的最后一个字符,则它充当连续字符,
如果需要,可以将定义分散到多行中。 一个文件可以
通过给出命令 '!include' 后跟文件名来包含。 这 '!' 必须是
行中的第一个字符。 该文件将在与
除非您提供完整路径,否则父文件。 要包含的文件名不能
包含注释字符“#”。

单元名称不得包含任何运算符字符“+”、“-”、“*”、“/”、“|”、“^”、
';'、'~'、注释字符 '#' 或括号。 它们不能以
下划线 ('_')、逗号 (',') 或小数点 ('.')。 图破折号 (U+2012),
印刷减号 (`-'; U+2212) 和破折号 (`-'; U+2013) 被转换为运算符
'-',所以这些字符都不能出现在单位名称中。 名称不能以 a 开头
数字,如果名称以零以外的数字结尾,则该数字前面必须有一个
以下划线开头,之后仅由数字、十进制组成的字符串
点或逗号。 例如,'foo_2'、'foo_2,1' 或 'foo_3.14' 是有效的名称,但
'foo2' 或 'foo_a2' 无效。 您可以将一氧化二氮定义为

N2O 氮气 2 + 氧气

但需要将二氧化氮定义为

NO_2 氮+氧 2

小心地根据旧单位定义新单位,以便减少导致
原始单位,标有“!” 人物。 表示无量纲单位
通过使用字符串 '!dimensionless' 作为单位定义。

添加新单位时,请务必使用“-c”选项来检查新单位是否减少
适当地。 如果您在单位定义中创建一个循环,那么 'units' 将在以下情况下挂起
使用“-c”选项调用。 您将需要使用“--check-verbose”选项,它
在检查时打印出每个单元。 程序仍会挂起,但最后一个单元
打印将是导致无限循环的单位。

如果您定义任何包含“+”字符的单位,请仔细检查它们,因为“-c”
选项不会捕获不合规的金额。 也要小心“-”运算符。
用作二元运算符时,“-”字符可以执行加法或乘法
取决于用于调用“单位”的选项。 为确保行为一致,请使用“-”
仅在编写单位定义时作为一元否定运算符。 将两个单位相乘
留一个空格或小心使用“*”运算符,回想一下它有两种可能
优先值,可能需要括号以确保一致的行为。 计算
'foo' 和 'bar' 的区别写为 'foo+(-bar)' 甚至 'foo+-bar'。

以下是定义一些基本单位的短数据文件示例:

米! # 米是一个原始单位
秒! # 第二个是原始单元
rad !dimensionless # 一个无量纲的原始单位
micro- 1e-6 # 定义前缀
分钟 60 秒 # 一分钟是 60 秒
hour 60 min # 一小时是 60 分钟
inch 0.0254 m # 以米为单位定义的英寸
ft 12 英寸 # 以英寸为单位定义的英尺
英里 5280 英尺 # 还有英里

以“-”字符结尾的单位是前缀。 如果前缀定义包含任何
'/' 字符,请确保它们受括号保护。 如果你定义'half- 1/2' 那么
'halfmeter' 相当于 '1 / (2 米)'。

定义 非线性 单位
一些感兴趣的单位转换是非线性的; 例如,温度转换
华氏和摄氏刻度之间不能通过简单地乘以
转换因子。

当您给出线性单位定义时,例如“英寸 2.54 厘米”,您提供的是
“单位”用于将英寸值转换为米的原始单位的信息。
对于非线性单位,您可以给出提供相同信息的函数定义。

非线性单位使用函数符号表示。 最好把这个
符号不是作为函数调用,而是作为向数字添加单位的一种方式,大致相同
在数字后写入线性单位名称的方式将单位添加到该数字。 在内部,
非线性单位由一对与线性单位相互转换的函数定义
在数据库中,以便最终转换为原始单位是可能的。

这是一个示例非线性单元定义:

tempF(x) 单位=[1;K] 域=[-459.67,) 范围=[0,) \
(x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32

非线性单元定义包括单元名称、形式参数名称、两个函数、
以及单位、域和范围(域的域)的可选规范
反函数)。 这些函数告诉“单位”如何与新单位相互转换。
为了产生有效的结果,这些函数的参数需要有正确的
维度并在定义函数的域内。

定义以单位名称开头,紧接着(没有空格)后跟一个 '('
特点。 括号中是形参的名称。 接下来是一个可选的
定义中功能所需单位的规范。 在示例中
上面,“units=[1;K]”规范表明“tempF”函数需要一个
输入参数符合“1”(即参数是无量纲的),并且
反函数需要符合“K”的输入参数。 对于正常非线性
单位定义,前向函数将始终采用无量纲参数; 在
一般来说,反函数将需要与您测量的数量相匹配的单位
非线性单元。 指定单位使“单位”能够执行错误检查
函数参数,以及将单位分配给域和范围规范,它们是
稍后描述。

接下来出现函数定义。 在上面的例子中,'tempF' 函数是
被定义为

tempF(x) = (x+(-32)) degF + 标准温度

这给出了将单位“tempF”中的“x”转换为绝对线性单位的规则
温度,这使得从 tempF 转换为其他单位成为可能。

要启用到华氏度的转换,您必须给出逆转换的规则。
逆将是 'x(tempF)' 并且它的定义出现在一个 ';' 之后特点。 在我们的
例如,逆是

x(tempF) = (tempF+(-stdtemp))/degF + 32

这个逆定义将绝对温度作为其参数并将其转换为
华氏温度。 可以通过省略“;”来省略反义词特点
和相反的定义,然后转换 该单位将无法使用。 如果
省略反向定义,'--check' 选项将显示警告。 这取决于
您计算并输入正确的反函数以获得正确的转换; 这
'--check' 选项在某一点测试逆,如果它无效则打印错误
那里,但这并不能保证您的逆是正确的。

对于某些定义,单位可能会有所不同。 例如,定义

平方(x) x^2

可以有任意单位,也可以采用无量纲参数。 在这种情况下,
你应该 而不去 指定单位。 如果定义取其参数的根,则
定义仅对产生这种根的单位有效。 例如,

喷(x)sqrt(x)

对于无量纲参数和具有偶数单位幂的参数是有效的。

某些定义可能不适用于所有实数。 在这种情况下,“单位”可以处理
如果指定适当的域和范围,错误会更好。 您指定域和
范围如下图:

波美(d) 单位=[1;g/cm^3] 域=[0,130.5] 范围=[1,10] \
(145/(145-d)) g/cm^3 ; (波美+-g/cm^3) 145/波美

在这个例子中,域是在 'domain=' 之后指定的,端点在
括号。 按照数学惯例,方括号表示闭合
区间(一个包括它的端点),括号表示一个开放区间(一个
不包括其端点)。 一个区间可以在一个或两个上打开或关闭
结束; 两端无界的区间是通过省略限制来表示的
那个结束。 例如,应用分贝 (dB) 的量可以具有任何值
大于零,因此范围由“(0,)”表示:

分贝(x)单位=[1;1]范围=(0,)10^(x/10); 10 log(分贝)

如果给出了域或范围,则第二个端点必须大于第一个端点。

域和范围规范可以独立出现并以任何顺序出现
单位规范。 域和范围端点的值附加到
单位规范中给出的单位,如有必要,参数值为
调整以与终点进行比较。 例如,如果定义包括
'units=[1;ft]' 和 'range=[3,)',范围将被视为 3 英尺到无穷大。 如果
函数传递了一个“900 毫米”的参数,该值将调整为 2.9527559 英尺,
超出指定范围。 如果您从
前面的例子,'units' 无法判断您是否打算将下端点设为 3 英尺或
3 microfurlongs,并不能调整参数值900mm作比较。 没有
单位,除零或正负无穷大以外的数值域或范围
端点是没有意义的,因此它们是不被允许的。 如果你给出其他值
如果没有单位,则定义将被忽略,您将收到一条错误消息。

尽管单位、域和范围规范是可选的,但最好给它们
当它们适用时; 这样做允许“单位”执行更好的错误检查和
提供更多有用的错误信息。 提供域和范围还可以启用“--check”
在域中查找一个点以用于其逆点检查的选项
定义。

您可以通过提供正向和逆向来为非线性单元制作同义词
职能; 可以使用“~”运算符获得反函数。 所以要创建一个
你可以写的“tempF”的同义词

华氏度(x) 单位=[1;K] tempF(x); ~tempF(华氏度)

这对于创建与非线性单位略有不同的非线性单位定义很有用
现有定义而不必重复原始功能。 例如,

dBW(x) 单位=[1;W] 范围=[0,) dB(x) W ; ~dB(dBW/W)

如果您希望同义词不加修改地引用现有的非线性单元,您可以
通过添加带有附加括号的同义词作为一个新单元来更简单地做到这一点,
现有的非线性单元——不带括号——作为定义。 所以要创建一个同义词
'tempF' 你可以写

华氏度() tempF

定义必须是非线性单位; 例如,同义词

华氏()米

'units' 启动时将导致错误消息。

您可能偶尔希望定义一个对单位进行操作的函数。 这可以做到
使用非线性单位定义。 例如,下面的定义提供了转换
在半径和圆的面积之间。 这个定义需要一个长度作为输入和
产生一个区域作为输出,如 'units=' 规范所示。 指定
范围,因为非负数可以防止神秘的错误消息。

circlearea(r) 单位=[m;m^2] 范围=[0,) pi r^2 ; sqrt(circlearea/pi)

定义 逐段 线性推力器 单位
有时您可能对分段线性单位感兴趣,例如许多线规。
分段线性单位可以通过在列表中指定到线性单位的转换来定义
的点。 其他点的转换将通过线性插值完成。 一个部分
锌量规的定义是

锌规[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1

在本例中,“zincgauge”是分段线性单元的名称。 的定义
这样的单位由嵌入的“[”字符表示。 在括号之后,你应该
指明要附在表中数字上的单位。 不能出现空格
在 ']' 字符之前,所以像 'foo[kg metres]' 这样的定义是无效的; 而是写
'富[公斤*米]'。 单元的定义包括一个可选的对列表
被逗号隔开。 这个列表定义了一个从分段转换的函数
线性单位到线性单位。 每对中的第一项是函数参数; 这
第二项是该参数处的函数值(以
括号)。 在这个例子中,我们在五个点上定义了“zincgauge”。 例如,我们设置
'锌规(1)' 等于 '0.002 英寸'。 如果这样的定义可能更具可读性
用连续字符写成

锌规[in] \
1 0.002 \
10 0.02 \
15 0.04 \
19 0.06 \
23 0.1

使用前面的定义,可以执行以下转换:

你有: 锌规(10)
你想要:在
* 0.02
/ 50
你有:01 英寸
你想要:锌规
5

如果你定义一个不是严格单调的分段线性单元,那么逆
不会很好定义。 如果为这样的单位请求倒数,'units' 将
返回最小的逆。

添加非线性单位定义后,您通常应该运行'units --check'来检查
对于错误。 如果未给出“单位”关键字,则“--check”选项检查非线性
使用无量纲参数定义单位,然后使用任意参数进行检查
单位的组合,以及该组合的正方形和立方体; 警告是
如果这些测试中的任何一个失败,则给出。 例如,

警告:函数 'squirt(x)' 定义为 'sqrt(x)'
某些测试输入失败:
squirt(7(kg K)^1):单位不是根
squirt(7(kg K)^3):单位不是根

如果非单调分段线性单元是,运行 'units --check' 将打印警告
遭遇。 例如,ANSI 涂附磨具名称与
平均粒度在 800 粒度附近是非单调的:

ansicoated[微米] \
。 。 。
600 10.55 \
800 11.5 \
1000 9.5 \

运行 'units --check' 会给出错误信息

表 'ansicoated' 在条目 800 附近缺乏唯一的逆

尽管在该区域中没有很好地定义逆,但这并不是一个真正的错误。
查看此类错误消息可能很乏味,如果有足够多的消息,他们可以
分散真正的错误。 非线性单位定义的错误检查可以是
通过给出 'noerror' 关键字来抑制; 对于上面的例子,这可以做为

squirt(x) noerror domain=[0,) range=[0,) sqrt(x); 喷^2
ansicoated[微米] 无错误\
。 。 。

请谨慎使用“noerror”关键字。 添加非线性单元后最安全的方法
定义是运行 'units --check' 并确认之前没有实际错误
添加“noerror”关键字。

定义 单位 列表 别名
单元列表别名的处理方式与单元定义不同,因为它们是数据
条目速记而不是新单位的真实定义。 单元列表别名
定义以 '!unitlist' 开头,包括别名和定义; 为了
例如,标准单位数据文件中包含的别名是

!unitlist hms 小时;分钟;秒
!unitlist 时间年;日;小时;分钟;秒
!unitlist dms 度;arcmin;arcsec
!unitlist ftin 英尺;英寸;1|8 英寸
!unitlist usvol 杯;3|4 杯;2|3 杯;1|2 杯;1|3 杯;1|4 杯;\
汤匙;茶匙;1|2 茶匙;1|4 茶匙;1|8 茶匙

单元列表别名仅适用于单元列表,因此定义必须包含“;”。 单元
列表别名永远不能与单位或其他单位列表别名组合,因此
上面显示的“时间”的定义可以 而不去 已缩短为“年;日;hms”。

像往常一样,一定要运行 'units --check' 以确保单位列表中列出的单位
别名是一致的。

数字 OUTPUT FORMAT


默认情况下,“单位”将结果显示为八位有效数字。 你可以改变这个
“--exponential”、“--digits”和“--output-format”选项。 第一个设置一个
指数格式(即科学记数法),类似于原始 Unix '单位'中使用的格式
程序,第二个允许您指定不同数量的有效数字,以及
最后一个允许您使用“printf()”的格式来控制输出外观
C语言中的函数。 如果您只想更改数量
有效数字或指定指数格式类型,使用“--digits”和
'--exponential' 选项。 '--output-format' 选项可以最大程度地控制
输出外观,但至少需要“printf()”格式的基本知识
句法。 看 调用中 单位 有关这些选项的说明。

格式 规格
使用“--output-format”选项识别的格式规范是其中的一个子集
对于'printf()'。 格式规范有以下形式
'%'[标志][宽度]['.'精确]类型; 它必须以 '%' 开头,并且必须以浮动的-
点类型说明符:'g' 或 'G' 指定有效数字的数量,'e' 或 'E'
为科学记数法,'f' 为定点小数。 ISO C99 标准增加了
'F' 类型用于定点十进制,'a' 和 'A' 类型用于十六进制浮点;
支持这些类型的编译器允许使用这些类型。 类型长度修饰符(例如,
'L' 表示长双精度)不适用且不允许。

'units' 的默认格式是 '%.8g'; 为了获得更高的精度,您可以指定
'-o %.15g'。 'g' 和 'G' 格式类型使用指数格式,只要指数
将小于 -4,因此值 0.000013 显示为“1.3e-005”。 这些类型也使用
当指数大于或等于精度时的指数表示法,所以用
默认格式,值 5e7 显示为“50000000”,值 5e8 显示为
'5e+008'。 如果你更喜欢定点显示,你可以指定'-o %.8f'; 然而,小
数字将显示很少的有效数字,小于 0.5e-8 的值将显示
只有零。

格式规范可以包括一个或多个可选标志:'+'、''(空格)、'#'、
“-”或“0”(数字零)。 编译器允许使用数字分组标志 '''
支持它。 标志后面是最小字段宽度的可选值,以及
以句点开头的可选精度规范(例如,'.6')。 场宽
包括数字、小数点、指数、千位分隔符(带有数字-
分组标志)和符号(如果显示任何这些)。


“+”标志使输出带有符号(“+”或“-”)。 空格标志 ' ' 类似
到'+'标志,除了当值为正时,它以空格为前缀
而不是加号; 如果还给出了 '+' 标志,则忽略此标志。 '+' 或
如果转换可能包括正面和负面结果,“ ”标志可能很有用,并且
您想以指数表示法对齐小数点。 '#' 标志导致
输出值在所有情况下都包含小数点; 默认情况下,输出包含一个
仅当右侧有数字(可以是尾随零)时才使用小数点
观点。 对于 'g' 或 'G' 类型,'#' 标志还可以防止抑制尾随
零。 数字分组标志 ''' 在数字的左侧显示千位分隔符
小数点。 这在定点显示大数字时很有用
十进制; 例如,格式为 '%f',

你有:英里
你想要:微弗隆
* 8000000.000000
/ 0.000000

如果不计算第一个结果的大小,可能不会立即明显
小数点左边的数字。 如果千位分隔符是逗号 (','),
格式为 '%'f' 的输出可能是

你有:英里
你想要:微弗隆
* 8,000,000.000000
/ 0.000000

使幅度一目了然。 不幸的是,很少有编译器支持数字-
分组标志。

使用“-”标志,输出值在指定的字段宽度内左对齐。 如果
指定的字段宽度大于显示输出值所需的宽度,“0”(零)
flag 导致输出值用零填充,直到指定的字段宽度
到达了; 例如,格式为 '%011.6f',

你有:金衡
你想要:谷物
* 5760.000000
/ 0000.000174

如果给出了“-”(左对齐)标志,则“0”标志无效。

领域 宽度
默认情况下,输出值左对齐并以所需的最小宽度显示
对于指定的(或默认的)精度。 如果大于此的字段宽度是
指定,显示的值右对齐,并在左侧填充足够的空间
提供指定的字段宽度。 宽度规格通常与固定使用
点小数点使数列在小数点对齐; 这可以说是更少
与“单位”相比,对长列输出有用,但它仍可能有助于
快速评估结果的相对大小。 例如,使用格式
'%12.6f',

你有:公里
你想要:在
* 39370.078740
/ 0.000025
你有:公里
你想要:棒
* 198.838782
/ 0.005029
你有:公里
你想要:弗隆
* 4.970970
/ 0.201168

平台精度
“精度”的含义取决于格式类型。 使用“g”或“G”,它指定
有效位数(如“--digits”选项); 使用“e”、“E”、“f”或“F”,
它指定要在小数点后显示的最大位数。

对于 'g' 和 'G' 格式类型,尾随零被抑制,因此结果可能
有时位数少于指定的精度(如上所示,'#' 标志
导致显示尾随零)。

默认精度为 6,因此 '%g' 等价于 '%.6g',并将输出显示为
六位有效数字。 同样,'%e' 或 '%f' 将显示六位数的输出
小数点后。

C 'printf()' 函数允许任意大小的精度,无论是否所有
数字是有意义的。 对于大多数编译器,“单位”的最大内部精度
是 15 个十进制数字(或 13 个十六进制数字)。 使用“--digits”选项,您是
限于最大内部精度; 使用“--output-format”选项,您可以
指定一个大于此的精度,但它可能没有意义。 在某些情况下,
指定过高的精度可能会导致舍入伪影。 例如,一磅是
正好 7000 个颗粒,但格式为 '%.18g',输出可能是

你有:英镑
你想要:谷物
* 6999.9999999999991
/ 0.00014285714285714287

使用 '%.25g' 格式,您可能会得到以下信息:

你有:1/3
你要:
定义:0.333333333333333314829616256247

在这种情况下,显示的值包括一系列代表底层证券的数字
二进制浮点逼近到 1/3,但对所需的没有意义
计算。 通常,精度过高的结果取决于系统。 这
精度只影响 产品 数; 如果结果依赖于物理常数
指定精度未知的,物理上有意义的数字的数量
可能小于显示的位数。

有关格式的更详细说明,请参阅“printf()”的文档
规格。

'--output-format' 选项与 '--exponential' 或 '--digits' 不兼容
选项; 如果前者与后者结合使用,则格式为
由给定的最后一个选项控制。

本土化


有些单位在不同的位置有不同的值。 本地化功能
通过允许单位数据文件指定依赖于
用户的语言环境。

语言环境
语言环境是用户环境的子集,它指示用户的语言和
国家,以及一些随之而来的偏好,例如日期的格式。 “单位”
程序尝试从 POSIX setlocale 函数中确定语言环境; 如果这不能
完成后,“units”检查环境变量“LC_CTYPE”和“LANG”。 在 POSIX 上
系统,语言环境的形式为 language'_'国家,其中 language 是两个字符
来自 ISO 639-1 的代码和 国家 是来自 ISO 3166-1 的两字符代码; language is
小写和 国家 是大写。 例如,英国的 POSIX 语言环境
是“en_GB”。

在运行 Microsoft Windows 的系统上,setlocale() 返回的值不同于
在 POSIX 系统上; 'units' 尝试通过以下方式将 Windows 值映射到 POSIX 值
与其他数据文件位于同一目录中的文件“locale_map.txt”中的表。
该文件包括许多语言和国家组合的条目,并且可以是
扩展到包括其他组合。 “locale_map.txt”文件包含两个选项卡-
分离柱; 每个条目的形式

Windows 语言环境 POSIX 语言环境

哪里 POSIX 语言环境 如上所述,并且 Windows 语言环境 通常说明两个
语言和国家。 例如,美国的条目是

英语_美国 en_US

您可以使用“-l”选项强制“单位”在所需的语言环境中运行。

为了为特定语言环境创建单位定义,您开始一个块
单元数据文件中的定义,带有 '!locale' 后跟区域设置名称。 这 '!' 必须是
该行的第一个字符。 “单位”程序仅读取以下定义
如果当前语言环境匹配。 你用 '!endlocale' 结束本地化单元块。
这是一个示例,它定义了英制加仑。

!locale en_GB
加仑 4.54609 升
!endlocale

额外 本地化
有时区域设置不足以确定单位偏好。 可能有
区域偏好,或者公司可以有特定的偏好。 虽然可能
不常见,这种差异可能会随着英语习惯单位的选择而出现
说英语的国家。 为了解决这个问题,“单位”允许指定定义
这取决于环境变量设置。 环境变量可以控制
基于当前区域设置,或者用户可以将它们设置为强制特定组
定义。

单位数据文件中的条件定义块以“!var”或
'!varnot' 后跟一个环境变量名称,然后是一个空格分隔的列表
价值观。 领先的'!' 必须出现在单位数据文件的第一列中,并且
条件块由 '!endvar' 终止。 以 '!var' 开头的块中的定义
仅当环境变量完全等于列出的其中之一时才执行
价值观。 以 '!varnot' 开头的块中的定义仅在
环境变量 而不去 等于任何列表值。

在许多地方,英寸长期以来一直是长度的习惯度量。 这个词来自
拉丁人 Uncia 意思是“十二分之一”,指的是它与脚的关系。 经过
20世纪,英寸在英语国家被正式定义为相对
到院子里,但直到 1959 年,这些国家的院子略有不同。 在法国
习惯上的英寸,在 1799 年被米取代,基于不同的长度
在法式脚上。 这些惯用定义可按如下方式进行调整:

!var INCH_UNIT 美国
码 3600|3937 米
!endvar
!var INCH_UNIT 加拿大
码 0.9144 米
!endvar
!var INCH_UNIT 英国
码 0.91439841 米
!endvar
!var INCH_UNIT 加拿大 英国 美国
英尺 1|3 码
英寸 1|12 英尺
!endvar
!var INCH_UNIT 法国
英尺 144|443.296 m
英寸 1|12 英尺
第 1 行|12 英寸
!endvar
!varnot INCH_UNIT 美国 英国 法国 加拿大
!message INCH_UNIT 的未知值
!endvar

当“单位”读取上述定义时,它将检查环境变量
'INCH_UNIT' 并仅加载适当部分的定义。 如果“INCH_UNIT”是
未设置或未设置为列出的四个值之一,则“单位”将运行最后一个块。
在这种情况下,该块使用 '!message' 命令来显示警告消息。
或者,该块可以设置默认值。

为了创建被用户设置覆盖的默认值,数据文件可以
使用“!set”命令,它设置一个环境变量 仅由 if it is 而不去 已经 ;
这些设置仅适用于当前的“单位”调用,不会持续存在。 所以如果
上面的例子前面有 '!set INCH_UNIT france' 那么这将使 'france' 成为
'INCH_UNIT' 的默认值。 如果用户之前在环境中设置了变量
调用“单位”,然后“单位”将使用用户的值。

要将这些设置链接到用户的区域设置,您可以将 '!set' 命令与
'!locale' 命令。 如果您想将上面的示例与合适的语言环境结合起来,您
可以做到 上述定义如下:

!locale en_US
!set INCH_UNIT 美国
!endlocale
!locale en_GB
!set INCH_UNIT 英国
!endlocale
!locale en_CA
!set INCH_UNIT 加拿大
!endlocale
!locale fr_FR
!set INCH_UNIT 法国
!endlocale
!set INCH_UNIT 法国

这些定义将 'INCH_UNIT' 的整体默认设置为 'france' 并设置默认值
四个语言环境的值。 整体默认设置排在最后,因此
仅在其他命令之一或用户未设置“INCH_UNIT”时适用。

如果在 '!var' 或 '!varnot' 之后给出的变量未定义,则 'units' 打印错误
消息并忽略下面的定义。 使用 '!set' 创建默认值以防止
这种情况由此产生。 '-c' 选项仅检查处于活动状态的定义
对于当前环境和语言环境,因此在添加新定义时请注意检查
所有情况都会产生一组定义明确的定义。

环境 变数


'units' 程序使用以下环境变量:

主页 指定主目录的位置; “单位”使用它来查找
个人单位数据文件“.units”。 在运行 Microsoft Windows 的系统上,该文件
是 'unitdef.units',如果 'HOME' 不存在,'units' 会尝试确定你的
来自“HOMEDRIVE”和“HOMEPATH”环境变量的主目录; 如果这些
变量不存在,单位最终尝试“USERPROFILE”——通常
'C:\用户\用户名'(Windows Vista 和 Windows 7)或
'C:\文档和设置\用户名'(Windows XP)。

LC_CTYPE,
如果“单位”无法从操作中获取,则检查以确定区域设置
系统。 标准单位数据文件的部分特定于某些语言环境。

MYUNITS文件
指定您的个人单位数据文件。 如果这个变量存在,'units' 使用它的
值而不是在您的主目录中搜索“.units”。 个人单位
如果使用“-f”选项提供了任何数据文件,则不会加载文件。

PAGER 指定用于帮助和显示一致单位的寻呼机。 这
帮助功能浏览单位数据库并使用'+n'调用寻呼机n 句法
用于指定行号。 默认寻呼机是“更多”; 'PAGER' 可用于
指定替代项,例如“less”、“pg”、“emacs”或“vi”。

单位_英文
设置为“US”或“GB”以选择美国或英国卷定义,
覆盖您的语言环境中的默认值。

单位文件
指定要使用的单位数据文件(而不是默认值)。 你只能
使用此环境变量指定单个单位数据文件。 如果单位数据
使用'-f'选项给出文件,'UNITSFILE'指定的文件将是
除非 '-f' 选项与空字符串一起给出,否则不会被加载
('单位 -f ""')。

单位地图
仅限窗户; 此变量对类 Unix 系统没有影响。 指定
要使用的单位区域设置映射文件(而不是默认值)。 这个变量很少需要
进行设置,但您可以使用它来确保在以下情况下可以找到语言环境映射文件
您可以使用“-f”选项或
'UNITSFILE' 环境变量,并且该位置不包含
区域地图文件。

数据 FILES


“units”程序使用两个默认数据文件:“definitions.units”和“currency.units”。
该程序还可以使用可选的个人单位数据文件“.units”(“unitdef.units”
Windows 下)位于用户的主目录中。 个人单位数据文件是
更详细地描述在 单位 时间 .

在类 Unix 系统上,数据文件通常位于“/usr/share/units”中,如果
'units' 随操作系统提供,或者在 '/usr/local/share/units' 如果 'units'
是从源代码分发编译的。

在运行 Microsoft Windows 的系统上,如果类 Unix 文件可能位于相同的位置
命令可用,存在类 Unix 文件结构(例如,'C:在/ usr /本地'), 和
'units' 是从源代码分发中编译的。 如果类 Unix 命令不是
可用,更常见的位置是“C:\Program Files (x86)\GNU\units”(对于 64 位
Windows 安装)或“C:\Program Files\GNU\units”(用于 32 位安装)。

如果“单位”是从 GNU Win32 项目获得的(http://gnuwin32.sourceforge.net/),则
文件通常位于“C:\Program Files\GnuWin32\share\units”中。

如果默认单位数据文件不是绝对路径名,“单位”将查找该文件
在包含“单位”程序的目录中; 如果在那里找不到文件,
'units' 将在目录 '../share/units' 中查找相对于具有
“单位”计划。

您可以通过运行“units --version”来确定文件的位置。 跑步
'units --info' 将为您提供有关文件的其他信息,'units' 将如何
尝试找到它们,以及相关环境变量的状态。

UNICODE 客户服务


标准单位数据文件采用 Unicode,使用 UTF-8 编码。 大多数定义使用
仅 ASCII 字符(即代码点 U+0000 到 U+007F); 使用非的定义
ASCII 字符出现在以 '!utf8' 开头并以 '!endutf8' 结尾的块中。

当 'units' 启动时,它会检查语言环境以确定字符集。 如果“单位”是
使用 Unicode 支持和定义编译; 否则这些定义将被忽略。
当 Unicode 支持处于活动状态时,'units' 将检查所有单位数据的每一行
用于无效或非打印 UTF-8 序列的文件; 如果出现这样的序列,“单位”
忽略整行。 除了检查有效性之外,“单位”还决定了显示
非 ASCII 字符的宽度,以确保指针在某些错误中正确定位
消息并对齐“搜索”和“?”的列命令。

目前,'units' 不支持 Microsoft Windows 下的 Unicode。 UTF-16 和
任何系统都不支持 UTF-32 编码。

如果将包含非 ASCII 字符的定义添加到单位数据文件中,则那些
定义应包含在 '!utf8' ... '!endutf8' 中,以确保它们只是
当 Unicode 支持可用时加载。 像往常一样,“!” 必须作为第一个出现
字符就行了。 正如在 单位 时间 ,通常最好把这样的
由 '!include' 命令链接的补充数据文件或个人文件中的定义
单位数据文件。

当 Unicode 支持不活动时,'units' 不对字符编码做任何假设,
除了 00-7F 十六进制范围内的字符对应于 ASCII 编码。 非-
ASCII 字符只是字节序列,没有特殊含义; 为了
补充单元数据文件中的定义,您可以使用与
这个假设。 例如,如果您希望在定义中使用非 ASCII 字符
在 Windows 下运行 'units',您可以使用字符集,例如 Windows ``ANSI''(代码
美国和西欧的第 1252 页)。 您甚至可以使用 UTF-8,尽管有些消息可能
对齐不正确,'units' 不会检测到无效的 UTF-8 序列。 如果你使用
Unicode 支持未激活时的 UTF-8 编码,您应该将任何定义放在
非 ASCII 字符 学校以外 '!utf8' ... '!endutf8' 块——否则,它们将是
忽略了。

代码示例以外的排版材料通常使用 Unicode 减号 (U+2212) 而不是
比“单位”中使用的 ASCII 连字符减号运算符 (U+002D); 数字破折号 (U+2012)
和破折号 (U+2013) 也偶尔使用。 允许此类材料被复制和
粘贴以供交互使用或在单位数据文件中,“单位”将这些字符转换为
U+002D 在进一步处理之前。 因此,这些字符都不能出现在
单位名称。

在线阅读 客户服务


如果已经编译了“readline”包,那么当交互式使用“units”时,
许多命令行编辑功能可用。 检查您的“单位”版本是否
包括“readline”,使用“--version”选项调用程序。

有关“readline”的完整信息,请参阅“readline”的文档
包裹。 没有任何配置,'units' 将允许以 emacs 的风格进行编辑。 的
'units' 的特殊用途是完成命令。

如果你输入几个字符然后点击 ESC 其次是 '?' 然后 'units' 将显示一个
以键入的字符开头的所有单位的列表。 例如,如果您键入
'METR' 然后请求完成,您将看到如下内容:

你有:米
米 公制 杯 公制 马力 公制 第十
米 metricfifth metricounce metricton
metriccarat metricgrain metricquart metricsyarncount
你有:米

如果有一种独特的方式来完成单位名称,您可以点击 TAB 关键和“单位”将
提供单位名称的其余部分。 如果“单位”发出哔哔声,则表示没有唯一
完成。 按下 TAB 键第二次将打印所有完成的列表。

readline 库还保留您输入的值的历史记录。 你可以通过
这个历史使用向上和向下箭头。 历史记录保存到文件中
'.units_history' 在您的主目录中,以便它将跨多个“单元”持续存在
调用。 如果您希望将某个项目的工作分开,您可以更改
使用“--history”选项的历史文件名。 例如,您可以为
'units' 到 'units --history .units_history' 以便 'units' 将单独的历史保存在
当前目录。 每个历史文件的长度限制为 5000 行。 笔记
此外,如果您同时运行多个“单元”副本,每个副本都会保存其新的
退出时历史文件的历史记录。

UPDATING 货币 交换 价格


单位计划包括货币汇率和某些贵金属的价格
数据库。 当然,这些值会随着时间而变化,有时变化非常快,而且
“单位”不能提供实时值。 要更新汇率,请运行
'units_cur',它重写包含货币汇率的文件,通常
'/usr/share/units/currency.units'。 该程序需要“python”和“unidecode”
包,并且必须以适当的权限运行才能写入文件。 为了保持利率
自动更新,在类 Unix 系统或类似系统上使用 cron 作业运行它
在不同的系统上调度程序。 货币汇率取自时间
精灵 (http://www.timegenie.com) 和 Packetizer 中的贵金属定价
(www.packetizer.com)。 这些站点每天更新一次,因此运行没有任何好处
更新脚本比每天更频繁。 您可以使用文件名运行“units_cur”
在命令行上指定,它将数据写入该文件。 如果你给'-'
对于它将写入标准输出的文件。

数据库 指挥 句法


单元 定义
定义一个常规单位。

字首- 定义
定义前缀。

函数名(VAR) NOERROR 单位=[单位内,单位外] 域=[x1,x2] 范围=[y1,y2]
定义(变量) ; 逆(函数名)
定义非线性单位或单位函数。 四个可选关键字“noerror”,
'units='、'range=' 和 'domain=' 可以以任何顺序出现。 的定义
逆是可选的。

标签名[单位外] NOERROR 配对表
定义分段线性单位。 配对列表给出了列出的表上的点
按升序排列。 'noerror' 关键字是可选的。

!endlocale
以 '!locale' 开头的定义块结束

!endutf8
结束以“!utf8”开头的定义块

!endvar
结束以 '!var' 或 '!varnot' 开头的定义块

!包括 文件
包含指定的文件。

!语言环境 折扣值
仅加载以下定义的语言环境设置为 折扣值.

!信息 文本
屏 显: 文本 除非启用了静默选项 ('-q'),否则读取数据库时。

!放 变量 折扣值
设置环境变量, 变量, 到指定值 仅由 if 不是这样
已经设置好了。

!单元列表 别号 定义
定义单位列表别名。

!utf8 仅当“units”在启用 UTF-8 的情况下运行时才加载以下定义。

!变量 恩瓦尔 值列表
仅当环境变量存在时才加载后面的定义块 恩瓦尔
设置为空格分隔值列表中列出的值之一。 如果 恩瓦尔 is
未设置,'units' 打印错误消息并忽略定义块。

!varnot 恩瓦尔 值列表
仅当环境变量存在时才加载后面的定义块 恩瓦尔
设置为值 而不去 列在空格分隔的值列表中。 如果 恩瓦尔 is
未设置,'units' 打印错误消息并忽略定义块。

GNU 免费 文档 许可


使用 onworks.net 服务在线使用单位


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。