2021-07-31 02:04:38 +08:00
.. _cmd-string-length:
2019-10-27 17:56:24 +08:00
string-length - print string lengths
====================================
Synopsis
--------
.. BEGIN SYNOPSIS
::
2021-07-31 02:04:38 +08:00
string length [(-q | --quiet)] [(-V | --visible)] [STRING...]
2019-10-27 17:56:24 +08:00
.. END SYNOPSIS
Description
-----------
.. BEGIN DESCRIPTION
`` string length `` reports the length of each string argument in characters. Exit status: 0 if at least one non-empty STRING was given, or 1 otherwise.
2021-07-31 02:04:38 +08:00
With `` -V `` or `` --visible `` , it uses the visible width of the arguments. That means it will discount escape sequences fish knows about, account for $fish_emoji_width and $fish_ambiguous_width. It will also count each line (separated by `` \n `` ) on its own, and with a carriage return (`` \r `` ) count only the widest stretch on a line. The intent is to measure the number of columns the STRING would occupy in the current terminal.
2019-10-27 17:56:24 +08:00
.. END DESCRIPTION
Examples
--------
.. BEGIN EXAMPLES
::
>_ string length 'hello, world'
12
>_ set str foo
>_ string length -q $str; echo $status
0
2020-09-28 03:04:19 +08:00
# Equivalent to test -n "$str"
2019-10-27 17:56:24 +08:00
2021-07-31 02:04:38 +08:00
>_ string length --visible (set_color red)foobar
# the set_color is discounted, so this is the width of "foobar"
6
>_ string length --visible 🐟🐟🐟🐟
# depending on $fish_emoji_width, this is either 4 or 8
# in new terminals it should be
8
>_ string length --visible abcdef\r123
# this displays as "123def", so the width is 6
6
>_ string length --visible a\nbc
# counts "a" and "bc" as separate lines, so it prints width for each
1
2
2019-10-27 17:56:24 +08:00
.. END EXAMPLES