← Back to context

Comment by jeffhuys

7 months ago

   > units
   751 units, 62 prefixes
   You have: 10 miles
   You want: meters
    * 16093.44
    / 6.2137119e-05

Huh. Never knew that was a thing!

It's one of my most used utilities, as someone who can't help but nerd-snipe myself on the regular. Example questions that I've used it for, just in the last week:

If I work 42 hours/week, how many minutes is that per year?

I've downloaded 4.91GB in the last minute, what's that in Mbps? How long will it take to download a 76GB game?

This AWS feature costs $0.045/hour, how much is that per month?

This guy I read about traveled 58,000km in 27 years, what's his average speed in m/s?

How much would a 10cm sphere of gold be worth in GBP?

If a 36 inch pipeline can deliver 25580 acre-feet of water in a year, how fast is the water flowing in m/s?

  • > How much would a 10cm sphere of gold be worth in GBP?

    Is there some trick to this? Or do you have to input it like:

    You have: 4/3pi(10 cm)^319320 kg/m^345000 GBP/kg

    (What ChatGPT gave me)

    • units has (I assume room temp/pressure) densities for all elements, as well as some precious metal prices and currency exchange rates (you need to run the units_cur program regularly to update the database for these). It also has tab completion to make discovering these a bit easier.

      The invocation is

      You have: goldprice * golddensity * spherevol(10cm/2)

      You want: GBP

      2 replies →

I always want to reach for `units`, but I'm perennially baffled by the output! What's up with the * and /?

  • The * value is the result of converting 10 miles to meters, as requested.

    The / value is the inverse of that in case you wanted that, ie 0.1 meters in miles.

    It's explained in `man 1 units`

  • I usually call it non-interactively:

      $ units 1500DKK USD
          * 236.76653
          / 0.00422357
    

    in which case it's always the first line I want.

    (The second line is telling me 1USD is 0.00422357 of 1500DKK.)

    Note if you use the currency conversions,

      systemctl enable units-currency-update.timer
    

    is needed to keep them up-to-date.

    • If you only need the first line you can invoke units with --terse.

        $ units --terse 2.4kWh megajoules
        8.64

  • the * is denoting the conversion from your first unit to your second, the / denotes the other way.

    You have: 1 miles You want: feet * 5280 / 0.00018939394

    In the above example, 1 mile is 5280 feet, and 1 foot is 0.00018939394 miles

    If I do 2 miles to feet, the values are doubled (or halved for the reverse conversion)

    You have: 2 miles You want: feet * 10560 / 9.469697e-05