descobrir quantas opções tenho ls

0

Apenas para praticar, quero descobrir quantas opções o comando ls possui. Eu escrevi o seguinte trecho de código

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

Por que essa parte do código só imprimiu -C and -V ?

    
por trolkura 22.11.2015 / 02:19

2 respostas

0

Analise ls --help , parece mais fácil. Usando grep com PCRE ( -P ), não incluindo opções longas, por ex. --all :

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

Analisar man ls daria o mesmo resultado:

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

Exemplo:

Analisando 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

Analisando 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
    
por 22.11.2015 / 02:41
0

Como nem todas as opções são a última coisa em uma linha na man page, na verdade, muito poucas delas são.

por exemplo. a maioria das linhas de opções será como: -a, --all

Não tenho 100% de certeza se conseguirá todas, mas tente isto:

$ 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

Isso terá opções curtas e longas.

O acima aplica-se ao GNU ls . Pode ou não se aplicar a outras versões de ls

    
por 22.11.2015 / 02:35