練習のために、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