找出 ls 有多少个选项

找出 ls 有多少个选项

只是为了练习,我想知道 ls 命令有多少个选项。我写了下面的代码

man ls | grep -o -i '\-[a-z0-9]$' 

为什么这段代码只打印出来-C and -V

答案1

解析一下ls --help,看起来比较容易。grep与 PCRE ( ) 一起使用-P,不包括长选项,例如--all

ls --help | grep -Po '^\s+\K-[^,\s](?=,|\s)' 

解析man ls会给出相同的结果:

man ls | grep -Po '^\s+\K-[^,\s](?=,|\s)'

例子:

解析ls --help

% ls --help | grep -Po '^\s+\K-[^,\s](?=,|\s)' 
-a
-A
-b
-B
-c
-C
-d
-D
-f
-F
-g
-G
-h
-H
-i
-I
-k
-l
-L
-m
-n
-N
-o
-p
-q
-Q
-r
-R
-s
-S
-t
-T
-u
-U
-v
-w
-x
-X
-Z
-1

解析man ls

% man ls | grep -Po '^\s+\K-[^,\s](?=,|\s)'
-a
-A
-b
-B
-c
-C
-d
-D
-f
-F
-g
-G
-h
-H
-i
-I
-k
-l
-L
-m
-n
-N
-o
-p
-q
-Q
-r
-R
-s
-S
-t
-T
-u
-U
-v
-w
-x
-X
-Z
-1

答案2

因为并非所有选项都是手册页中一行中的最后一项,实际上很少有选项是最后一项。

例如,大多数选项行将类似于:-a, --all

我不是 100% 确定它是否能得到所有这些,但试试这个:

$ man ls | grep -E -o -i -- ' {7}-[a-z0-9], --[A-Z]+| {7}-[A-Z0-9] | {7}--[A-Z0-9]+' | 
    sed -e 's/^  *//'
-a, --all
-A, --almost
--author
-b, --escape
--block
-B, --ignore
-c 
-C 
--color
-d, --directory
-D, --dired
-f 
-F, --classify
--file
--format
--full
-g 
--group
--sort
-G, --no
-h, --human
--si
-H, --dereference
--dereference
--hide
--indicator
-i, --inode
-I, --ignore
-k, --kibibytes
-l 
-L, --dereference
-m 
-n, --numeric
-N, --literal
-o 
-p, --indicator
-q, --hide
--show
-Q, --quote
--quoting
-r, --reverse
-R, --recursive
-s, --size
-S 
--sort
--time
--time
-t 
-T, --tabsize
-u 
-U 
-v 
-w, --width
-x 
-X 
-Z, --context
-1 
--help
--version

这将同时获得短期和长期选择。

上述内容适用于 GNU ls。它可能适用于也可能不适用于其他版本ls

相关内容