units
命令是Linux和Unix系统中一个强大的单位转换工具,它能够在线性、非线性和多维单位之间进行转换,支持科学计算和复杂表达式运算,该命令基于GNU Units项目,通过内置的庞大单位数据库(包含超过3000种单位和数百条常量定义),可快速实现长度、质量、时间、能量、货币等多种类型的单位换算,适用于科研、工程、教育等领域的数值计算需求。

基本语法与使用方式
units
命令的基本语法结构为:units [选项] [数量] 源单位 目标单位
。数量
为待转换的数值(默认为1),源单位
和目标单位
分别为原始单位和目标单位名称,支持使用标准缩写或全称(如kg
、kilogram
、meter
、m
等),若不指定数量,默认转换1个单位的数值;若省略目标单位,则以交互模式运行,用户可输入表达式进行动态计算。
常用选项说明
-v
或--verbose
:显示详细转换过程,包括单位定义和计算步骤。-c
或--check
:检查单位定义的一致性,用于调试自定义单位文件。-f
或--file
:指定自定义单位文件路径,扩展默认数据库。-l
或--list
:列出所有可用单位类别,如Length
、Mass
、Time
等。--version
:显示程序版本信息。
单位转换示例
基础单位换算
将5英里转换为公里:
units 5 mile km
输出结果为:
5 mile = 8.04672 km
复杂表达式计算
计算1平方英尺等于多少平方厘米:

units '1 ft^2' cm^2
输出结果为:
1 ft^2 = 929.0304 cm^2
非线性单位转换
将摄氏25度转换为华氏度:
units '25 tempC' tempF
输出结果为:
25 tempC = 77 tempF
货币与能量单位转换
假设当前汇率为1美元=7人民币,计算10美元焦耳等于多少千焦:

units '10 USD * 7 CNY/USD * 1 J/CNY' kJ
输出结果为:
70 J = 0.07 kJ
自定义单位与函数
units
支持用户通过自定义单位文件扩展功能,定义一个“打”(dozen)单位并在计算中使用:
在自定义文件myunits.txt
中添加:
dozen = 12
通过-f
选项调用:
units -f myunits.txt '2 dozen' pieces
输出结果为:
2 dozen = 24 pieces
常用单位类别与缩写
以下是部分常见单位类别及示例:
| 类别 | 常用单位示例 | 说明 |
|------------|---------------------------------------|--------------------------|
| 长度 | m, km, mile, inch, foot | 米、千米、英里、英寸、英尺 |
| 质量 | kg, g, pound, ounce | 千克、克、磅、盎司 |
| 时间 | s, min, h, day, year | 秒、分钟、小时、天、年 |
| 能量 | J, cal, BTU, kWh | 焦耳、卡路里、英热单位、千瓦时 |
| 压力 | Pa, bar, atm, psi | 帕斯卡、巴、标准大气压、psi |
| 温度 | tempC, tempF, tempK | 摄氏度、华氏度、开尔文 |
交互模式高级用法
在交互模式下,用户可直接输入表达式进行多步计算。
units> 5 kg / (2 L) # 计算密度 5 kg / 2 L = 2.5 kg/L units> result g/mL # 将结果转换为克/毫升 2.5 kg/L = 2.5 g/mL units> quit # 退出交互模式
注意事项
- 单位名称区分大小写(如
M
表示兆,m
表示米)。 - 复合单位需使用或连接(如
kg*m/s^2
表示牛顿)。 - 部分单位需指定前缀(如
k
表示千,M
表示兆)。 - 货币单位汇率需通过网络更新(通过
units --currency
命令)。
相关问答FAQs
Q1: 如何查看units
命令支持的所有单位?
A1: 使用units --list
命令可列出所有单位类别,结合units [类别] --list
可查看具体单位。units length --list
显示所有长度单位,也可通过units -v
查看详细定义。
Q2: 如何在units
中使用自定义常量(如光速)?
A2: 在自定义单位文件中定义常量,c = 299792458 m/s
,通过-f
选项加载文件后即可使用,如units '1/c' s/m
计算光速的倒数。