EXPR(1)
π EXPR(1) β bestie edition π
okay so this is expr from the uutils coreutils manual, section 1 of the general commands manual. pull up a chair, grab a boba, we're doing arithmetic in the shell and it's gonna be cute. π§β¨
πΈ NAME πΈ
expr β print the value of EXPRESSION to standard output. that's it. that's the whole job. she's an icon, she's a legend, she evaluates your little expression and hands you the answer. π
π¦ SYNOPSIS π¦
expr [EXPRESSION]
expr [OPTIONS]
two whole moods. either you give her an expression, or you give her options. boom. π
β¨ DESCRIPTION β¨
Print the value of EXPRESSION to standard output. fr fr, that's the entire description, she said what she said. π
π OPTIONS π
--versionβ output version information and exit. she tells you who she is and then she's gone, main character exit. πͺπ¨--helpβ display this help and exit. your girl is helpful!![expression]β the expression u wanna evaluate, bestie. π«Ά
π EXTRA π
okay so this is the part where it gets real. a blank line below separates increasing precedence groups β like, the blank lines in the list are literally telling you who binds tighter. not me getting emotional over whitespace. π
EXPRESSION may be:
ARG1 | ARG2β gives u ARG1 if it's neither null nor 0, otherwise u get ARG2. the "pick the good one" operator. πARG1 & ARG2β gives u ARG1 if neither argument is null or 0, otherwise u get0. both have to show up or nobody does.ARG1 < ARG2β ARG1 is less than ARG2ARG1 <= ARG2β ARG1 is less than or equal to ARG2ARG1 = ARG2β ARG1 is equal to ARG2ARG1 != ARG2β ARG1 is unequal to ARG2ARG1 >= ARG2β ARG1 is greater than or equal to ARG2ARG1 > ARG2β ARG1 is greater than ARG2ARG1 + ARG2β arithmetic sum of ARG1 and ARG2ARG1 - ARG2β arithmetic difference of ARG1 and ARG2ARG1 * ARG2β arithmetic product of ARG1 and ARG2ARG1 / ARG2β arithmetic quotient of ARG1 divided by ARG2ARG1 % ARG2β arithmetic remainder of ARG1 divided by ARG2STRING : REGEXPβ anchored pattern match of REGEXP in STRINGmatch STRING REGEXPβ same asSTRING : REGEXPsubstr STRING POS LENGTHβ substring of STRING, POS counted from 1index STRING CHARSβ index in STRING where any CHARS is found, or 0length STRINGβ length of STRING+ TOKENβ interpret TOKEN as a string, even if it is a keyword likematchor an operator like/( EXPRESSION )β value of EXPRESSION
β οΈ BEWARE: many operators need to be escaped or quoted for shells. this is the #1 thing that eats your afternoon, bestie, do not skip the backslashes. π
comparisons are arithmetic if both ARGs are numbers, else lexicographical.
pattern matches return the string matched between \( and \) or null; if \( and \) are not used, they return the number of characters matched or 0.
exit status tea β β it's 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is null or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred. memorize them, they're your love language now. π
environment variables (the debug girlies π§):
EXPR_DEBUG_TOKENS=1: dump expression's tokensEXPR_DEBUG_RPN=1: dump expression represented in reverse polish notationEXPR_DEBUG_SYA_STEP=1: dump each parser stepEXPR_DEBUG_AST=1: dump expression represented abstract syntax tree
errors are reported with the expression echoed back and a caret under the offending argument whenever stderr is a terminal; anything else reading stderr gets the usual single-line message. so if ur piping somewhere, u get the normal vibe, and if ur in a terminal, she points at the problem with a little ^. π
π VERSION π
v(uutils coreutils) 0.12.0
π EXAMPLES π
get the length of a specific string:
expr length "string"
get the substring of a string with a specific length:
expr substr "string" from length
match a specific substring against an anchored pattern:
expr match "string" 'pattern'
get the first char position from a specific set in a string:
expr index "string" "chars"
calculate a specific mathematic expression:
expr expression1 +|-|*|/|% expression2
get the first expression if its value is non-zero and not null otherwise get the second one:
expr expression1 \| expression2
get the first expression if both expressions are non-zero and not null otherwise get zero:
expr expression1 \& expression2
the examples are provided by the tldr-pages project under the CC BY 4.0 License. please note that, as uutils is a work in progress, some examples might fail. π«Ά (source: <https://tldr.sh>)
okay that's the whole page!! you now officially know more about expr than 99% of the group chat. this was general commands manual, expr(1), dated 2026-09-25, running at version 0.12.0 from the uutils coreutils girlies. slay, go evaluate something, and remember to escape ur pipes. π₯ππ
π¦ where this page comes from
- ubuntu stonking: rust-coreutils 0.12.0-1ubuntu2 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms