bcal
REPL CLI calculator for storage expressions and byte conversions
TLDR
SYNOPSIS
bcal [-b [expr]] [-c N] [-p N] [-f loc] [-s bytes] [expr] [N [unit]] [-m] [-d] [-h]
DESCRIPTION
bcal (Byte CALculator) is a command-line utility for calculations and expressions involving binary prefixes, SI/IEC conversion, byte addressing, base conversion, and LBA/CHS calculation. It also supports general-purpose arithmetic, bitwise operations, and mathematical functions.Storage expressions support the operators +, -, \*, /, % with units such as B, KiB, MiB, GiB, TiB, kB, MB, GB, and TB. Units are case-insensitive. Hex values are prefixed with 0x and binary values with 0b.In general-purpose mode (-b), bcal supports bitwise operations: AND (&), OR (|), XOR (^), complement (~), left shift (<<), and right shift (>>). Mathematical functions include exp(n), log(base, n), ln(n), pow(n, exponent), and root(radical, n).When started without arguments, bcal enters an interactive REPL mode. The last valid result is stored in the variable r and can be reused in subsequent expressions. In the REPL, press b to toggle between storage and general-purpose modes, c N for base conversion, p N for bit positions, s for storage type sizes, and q or double Enter to quit.bcal works with piped input and file redirection, making it suitable for scripted workflows. Precision is 128-bit when __uint128_t is available, otherwise 64-bit. Floating-point operations use long double arithmetic.
PARAMETERS
-b [expr]
Start general-purpose REPL mode. If an expression is provided, evaluate it and quit.-c N
Show decimal, binary and hex representation of positive integer N.-p N
Show bit positions and bit values of a number.-f loc
Convert CHS to LBA or LBA to CHS. The location is a hyphen-separated representation.-s bytes
Sector size in bytes. Default value is 512.-m
Show minimal output (e.g. decimal bytes only).-d
Enable debug information and logs.-h
Show help, storage sizes on the system, and exit.
CONFIGURATION
History file
REPL history is stored at $XDG_CONFIG_HOME/bcal/history, or $HOME/.config/bcal/history if XDGCONFIGHOME is unset.BCAL_BIT_ANSI_COLOR_CODE
Environment variable to set the ANSI escape code for colorizing bit value 1 in -p output. Set to empty to disable coloring.
CAVEATS
Only 64-bit operating systems are supported. Fractional bytes do not exist and cannot be addressed; bcal shows the floor value of non-integer byte results. Negative values in storage expressions are unsupported.LBA and CHS format conversion arguments must be hyphen-separated. LBA values are prefixed with l and CHS values with c. Any unspecified value defaults to 0.Default disk geometry values are: sector size 512, max heads per cylinder 16, max sectors per track 63.
HISTORY
bcal was created by Arun Prakash Jana and released in 2016 as open-source software under the GPLv3+ license. It is written in C with minimal dependencies (libc and optionally GNU Readline or BSD Editline).
