Eu gostaria de extrair todos os bin
diretórios PATH
e configurá-lo para uma variável. Eu fico confuso porque todos os diretórios aparecem em uma linha separada por :
mas eu só quero bin
aqueles.
/home/jo52900/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/local/bin:/opt/universal/ucmdmgr/bin
Como eu posso fazer isso?
Outra abordagem é pedir ao shell para dividir
$PATH
:Você pode pós-processar isso com
grep
conforme necessário.Não sei por que você gostaria de tratar os
bin
diretórios especialmente, suponho que você só queira ver cada diretório em sua própria linha. Se sim, você pode simplesmente fazer:No meu sistema, por exemplo, onde tenho muitos diretórios no meu
$PATH
cujo nome não contémbin
, isso dá:Se você realmente quiser apenas ver os
bin
diretórios, poderá extraí-los:Ou, se você quiser fazer o que mostra em sua resposta e também incluir qualquer diretório que hja a string
bin
em qualquer lugar em seu nome, e não apenas aqueles que são realmente nomeadosbin
, você pode fazer:encontrei a solução
Supondo que você esteja usando zsh:
A
path
variável é uma matriz que é sincronizada automaticamente com a string separada por dois pontos emPATH
.print -lr
imprime um elemento por linha sem fazer interpretação de barra invertida¹.Caso você precise disso para alguma outra lista separada por dois pontos que não tenha uma matriz vinculada, você pode fazer a divisão explicitamente por meio de um sinalizador de expansão de parâmetro .
Eu não sei o que você quer dizer com "diretórios bin". Você pode filtrar usando grep, por exemplo
Ou usando recursos de expansão de parâmetros , por exemplo
¹ Para os nitpickers: isso pressupõe que a lista não está vazia e o primeiro elemento não começa com
-
. O que é uma aposta segura para$path
.