Uma longa lista
Usando o grep
Você pode usar a expansão de shell em /proc
e canalizá-la para grep
:
$ echo /proc/* | grep -oP "(?<=/proc/)\D.*? " | paste -s -d ''
Exemplo
$ echo /proc/* | grep -oP "(?<=/proc/)\D.*? " | paste -s -d ''
acpi asound buddyinfo bus cgroups ....
O recurso acima faz uso da capacidade de grep
de usar o mecanismo de expressões regulares (PCRE) do Perl. É a -P
que muda para grep
. O -o
informa grep
para retornar apenas as sequências que correspondem ao padrão. Nós então fazemos uso da habilidade do Perl de olhar para trás. Então, quando encontramos uma string que possui /proc
, nós cuidamos do /proc
para qualquer string que não comece com um dígito ( \D
). Estas são as cadeias que são retornadas (as iniciais não de dígitos).
A pasta faz algumas limpezas para nós removendo todos os caracteres de nova linha que o grep
adicionou ao começar a exibir seus resultados.
Usando sed
Uma alternativa para esse método seria usar sed
(ei isso rima).
$ echo /proc/* | sed 's@/proc/[0-9]\+ @@g;s@/proc/@@g'
Esta abordagem encontra todas as strings começando com /proc/
& dígitos & um espaço e substitui-los com nada, efetivamente excluí-los. Depois disso, fazemos outro comando sed
, que faz o mesmo com as sequências /proc/
, e ficamos com apenas as sequências iniciais não dígitos.
Várias colunas
Para "agrupar" a saída em colunas, o comando paste
faz isso com bastante facilidade. Aqui estou fazendo 2 colunas, mas você pode alterar o comando paste
para gerar mais ou menos adicionando traços adicionais ( -
). O column -t
no final força a saída a alinhar nas colunas.
$ ls /proc | grep -v "^[0-9].*" | paste - - | column -t
Exemplo
Primeiras 5 linhas de saída graças ao head -5
.
$ ls /proc | grep -v "^[0-9].*" | paste - - |column -t | head -5
acpi asound
buddyinfo bus
cgroups cmdline
cpuinfo crypto
devices diskstats
Aqui está a mesma coisa com 4 colunas:
$ ls /proc | grep -v "^[0-9].*" | paste - - - - |column -t | head -5
acpi asound buddyinfo bus
cgroups cmdline cpuinfo crypto
devices diskstats dma dri
driver execdomains fb filesystems
fs interrupts iomem ioports
OBSERVAÇÃO: Per @ JosephR., se você encontrar algum problema com os comandos acima que estão analisando a saída de ls
, poderá prefixá-lo com o comando Bash, command
, que irá ignorar quaisquer aliases que você possa ter em vigor para ls
.
Exemplo
$ command ls /proc | grep -v "^[0-9].*" | paste - - - - |column -t | head -5
acpi asound buddyinfo bus
cgroups cmdline cpuinfo crypto
devices diskstats dma dri
driver execdomains fb filesystems
fs interrupts iomem ioports