Recortar string com diretórios [RESOLVIDO]

1. Recortar string com diretórios [RESOLVIDO]

Eduardo Colombo da Silva
linuxlive

(usa openSUSE)

Enviado em 21/08/2013 - 18:57h

Preciso definir uma variável de ambiente no meu sistema de forma automática, mas isto, preciso fazer o seguinte:

1 - Verificar em qual diretório estou:
$ pwd
Resultado:
/usr/sistema/produto/database/bin

2 - Capturar o o caminho de diretórios até 2 antes do meu, que seria minha variavel:
$ Isso que preciso
Resultado:
/usr/sistema/produto

Fiz um recorte manual, mas estou delimitando quando diretorios quero. Preciso deixar isso automatico.
O que fiz:
pwd | rev | cut -f3-20 -d"/" | rev
Assim captura somente: /usr/sistema/produto


  


2. MELHOR RESPOSTA

Fernando
phoemur

(usa Debian)

Enviado em 23/08/2013 - 11:56h

Essa solução do colega acima é legal

dirname $(dirname "$PWD")



3. Re: Recortar string com diretórios [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 21/08/2013 - 19:48h



pwd | awk -F"/" '{print "/" $2 "/" $3 "/" $4}'




4. Re: Recortar string com diretórios [RESOLVIDO]

Eduardo Colombo da Silva
linuxlive

(usa openSUSE)

Enviado em 22/08/2013 - 08:06h

Mas se eu estiver em um diretorio com caminho menor que 4, ele recorta:

se tiver em:
/home/eduardo/work

Ele vai recortar:
/home/eduardo/work

Já se eu tiver em:
/usr/sistema/produto/database/bin

Ele recorta certo:
/usr/sistema/produto

Não consigo prever onde será instalada a aplicação, pois o usuário pode escolher um caminho grande, ou somente /usr por exemplo.


5. Re: Recortar string com diretórios [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 22/08/2013 - 18:58h

Vc quer que o usuário escolha um diretório que esteja acima do seu padrão (/usr/sistema/produto)?


6. Re: Recortar string com diretórios [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 22/08/2013 - 19:00h

Não entendi direito a pergunta... Qual o problema com o comando?

Seria isso aqui?

DIRETORIO=$(pwd | rev | cut -f3- -d'/' | rev)
if [ -z $DIRETORIO ]; then
DIRETORIO=$PWD
fi


Daí se o diretório for menor que 3 niveis ele vai ser ele mesmo, se for maior vai ser 2 acima...


7. Re: Recortar string com diretórios [RESOLVIDO]

Eduardo Colombo da Silva
linuxlive

(usa openSUSE)

Enviado em 22/08/2013 - 21:11h

O problema é que o diretorio base da minha aplicacao é :
database/bin

Sempre que o sistema for instalado, será criado este diretorio.
Se na instalação eu selecionar:
/usr/sistema/produto

Sera criado o caminho:
/usr/sistema/produto/database

Para executar a aplicacao, eu acesso:
/usr/sistema/produto/database/bin

E executo o script inicia.sh
Este script por sua vez, precisa capturar tudo o que estiver antes do diretorio base dele. Tudo o que estiver antes, será a variavel.

Diretorio base: database
Diretorio de execução: bin
Variavel: /usr/sistema/produto/

Entao, executando o aplicativo apartir de /usr/sistema/produto/database/bin, preciso recortar o /usr/sistema/produto. Mas pode ser instalado no /database/bin, onde a variavel seria o / por exemplo, como tambem, se instalado em /usr/sistema/produto/outro/mais/outro/denovo/database/bin, teria que recortar /usr/sistema/produto/outro/mais/outro/denovo/.

Acho que consegui explicar bem. Resolvendo isso, acredito que muita gente podera utilizar, pois elimina a necessida de qualquer aplicação que precisa de variavel de ambiente para sua execução, obrigar o usuario a exportar na mão.


8. Re: Recortar string com diretórios [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 22/08/2013 - 21:26h

Agora entendi, vc quer que o delimitador seja o "/database/bin", vamos la entao:

 
pwd | awk -F"/database/bin" '{print $1}'





9. Re: Recortar string com diretórios [RESOLVIDO]

Eduardo Colombo da Silva
linuxlive

(usa openSUSE)

Enviado em 23/08/2013 - 08:35h

Digamos que é isso que preciso !
Só que eu estava tentando fazer genérico, pois tenho várias aplicações que são iniciadas, por exemplo:
conc/bin
pdv/bin
fid/bin

No caso, eu teria que usar cada uma como delimitador desse modo. Eu estava tentando fazer um generico.
Se ficar muito complicado, passo cada um mesmo.


10. Re: Recortar string com diretórios [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 23/08/2013 - 10:57h

tenta


pwd | sed -e 's/^\(.*\)\/.*\/.*$/\1\//'



11. dirname?

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 23/08/2013 - 11:37h

o comando dirname retorna o caminho completo do último diretório


$ dirname /usr/sistema/produto/database/bin
/usr/sistema/produto/database


para também eliminar o penúltimo, utilize o comando duas vezes:


$ dirname $(dirname /usr/sistema/produto/database/bin)
/usr/sistema/produto/


seria isso?


t+



12. Re: Recortar string com diretórios [RESOLVIDO]

Eduardo Colombo da Silva
linuxlive

(usa openSUSE)

Enviado em 23/08/2013 - 11:41h

Para utilizar o dirname vc tem que passar o caminho do diretorio pra ele.
No caso não sei que caminho é este, então não posso passar.

A sugestão anterior resolve o problema !
O unico detalhe que vou melhorar, é que se instalarem a aplicacao apartir do /, ele retorna em branco:
/database/bin
Ele me retorna em branco. Vou melhorar para retornar sempre o / caso venha em branco, e depois posto aqui.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts