Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

1. Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

Felipe Moreira da Luz
LypePassoca

(usa Ubuntu)

Enviado em 27/05/2021 - 14:15h

Ola gente tudo bem?
Sou novo com os shell script e estou tentando automatizar uma instalação local de um site a partir do repositório dentro da pasta de localhost configurado no apache.

Trabalho com Drupal, e por isso existem alguns processos para gerar arquivos de configs especificos quando vai subir um ambiente local. Queria deixar isso mais automático, para tal, vou descrever o que fiz, o que pretendia com isso e o onde estou travado, de forma objetiva para não cansar ninguém.

Fiz um script.sh para identificar qual caminho de localhost esta configurado no apache do dev, partindo da premissa que ele usa ubuntu.
Então fiz:
Parte 1 (O que fiz):
LOCALHOSTPATH= grep "<Directory" /etc/apache2/sites-available/000-default.conf | cut -d " " -f2 | cut -d "\"" -f2;
Com isso eu tenho de retorno o caminho que no meu caso é /var/www/html/

Parte 2 (O que pretendia):
Neste ponto gostaria de fazer o script trocar para esta pasta retornada pelo comando acima e dar um clone do repositório nesta pasta.
No entanto tentei passar o comando no script cd $LOCALHOSTPATH, mas sem sucesso.
Nessa parte que estou travado.
O retorno do shell script não mostra nada, ele só cai para a próxima linha que no meu caso é um pwd.

Pensei, pensei e pensei, e entendi que como o caminho inicial eu peguei por um filtro de texto (grep) ele não tem como jogar esse cara para um cd e assim fazer a mudança de pastas.
Como posso pegar o valor do arquivo do apache e transformar isso em um caminho de diretório para fazer o meu clone de repositório?







  


2. MELHOR RESPOSTA

Gabriel
rabbit

(usa Debian)

Enviado em 28/05/2021 - 12:04h

Bom dia Amigo,

Pra executar esse comando e retornar para a váriavel você tem colocar entre $().
No seu caso vai ficar assim:

LOCALHOSTPATH=$(grep "<Directory" /etc/apache2/sites-available/000-default.conf | cut -d " " -f2 | cut -d "\"" -f2) 


Assim vai executar o comando grep procurando o Directory.

Rapaz agora não lembro sem tem que colocar o \<Directory, para escapar o < mais testa, se não funcionar vc colocar o \ antes do < para escapar ele.
Bom trampo.

x.x
run rabbit run

3. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 27/05/2021 - 16:23h


Se vc estiver usando bash, PATH é uma variável de ambiente e se vc renomeá-la vc vai ter dificuldade em encontrar o caminho dos programas no script.


4. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

Felipe Moreira da Luz
LypePassoca

(usa Ubuntu)

Enviado em 27/05/2021 - 16:26h


leandropscardua escreveu:


Se vc estiver usando bash, PATH é uma variável de ambiente e se vc renomeá-la vc vai ter dificuldade em encontrar o caminho dos programas no script.



Realmente, tinha esquecido disso, mas igual, tentando passar só o cd "$LOCALHOSTPATH" ele não mostra o caminho.



5. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/05/2021 - 05:56h

Onde você disse
LOCALHOSTPATH= grep "<Directory" [...]  | cut -d \" -f2; 

suponho que você quis dizer
LOCALHOSTPATH=`grep "<Directory" [...]  | cut -d \" -f2` 


O primeiro comando cria uma variável com um valor vazio e a exporta como variável de ambiente para o comando que vem após sua definição (começando com “grep”). O segundo intercepta o texto produzido pelo comando que está entre os acentos graves (`) e o atribui à variável.

Note que o shell não permite o uso de espaços antes ou depois do sinal igual (“=”) se você quiser definir o valor de uma variável.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


6. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

Felipe Moreira da Luz
LypePassoca

(usa Ubuntu)

Enviado em 28/05/2021 - 11:09h


paulo1205 escreveu:

Onde você disse
LOCALHOSTPATH= grep "<Directory" [...]  | cut -d \" -f2; 

suponho que você quis dizer
LOCALHOSTPATH=`grep "<Directory" [...]  | cut -d \" -f2` 


O primeiro comando cria uma variável com um valor vazio e a exporta como variável de ambiente para o comando que vem após sua definição (começando com “grep”). O segundo intercepta o texto produzido pelo comando que está entre os acentos graves (`) e o atribui à variável.

Note que o shell não permite o uso de espaços antes ou depois do sinal igual (“=”) se você quiser definir o valor de uma variável.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)



Olá amigo, tinha testado isso já, o que acontece é que ai mostra um erro e ele passa tudo como uma string pra variável e não o resultado do filtro. To começando a achar que tem algo desconfigurado com o meu bash.
Adicionei uma imagem do resultado:




7. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/05/2021 - 15:04h

LypePassoca escreveu:

Ola gente tudo bem?
Sou novo com os shell script e estou tentando automatizar uma instalação local de um site a partir do repositório dentro da pasta de localhost configurado no apache.

Trabalho com Drupal, e por isso existem alguns processos para gerar arquivos de configs especificos quando vai subir um ambiente local. Queria deixar isso mais automático, para tal, vou descrever o que fiz, o que pretendia com isso e o onde estou travado, de forma objetiva para não cansar ninguém.

Fiz um script.sh para identificar qual caminho de localhost esta configurado no apache do dev, partindo da premissa que ele usa ubuntu.
Então fiz:
Parte 1 (O que fiz):
LOCALHOSTPATH= grep "<Directory" /etc/apache2/sites-available/000-default.conf | cut -d " " -f2 | cut -d "\"" -f2;
Com isso eu tenho de retorno o caminho que no meu caso é /var/www/html/

Parte 2 (O que pretendia):
Neste ponto gostaria de fazer o script trocar para esta pasta retornada pelo comando acima e dar um clone do repositório nesta pasta.
No entanto tentei passar o comando no script cd $LOCALHOSTPATH, mas sem sucesso.
Nessa parte que estou travado.
O retorno do shell script não mostra nada, ele só cai para a próxima linha que no meu caso é um pwd.

Pensei, pensei e pensei, e entendi que como o caminho inicial eu peguei por um filtro de texto (grep) ele não tem como jogar esse cara para um cd e assim fazer a mudança de pastas.
Como posso pegar o valor do arquivo do apache e transformar isso em um caminho de diretório para fazer o meu clone de repositório?

Boa tarde Lype.
Altere:
LOCALHOSTPATH= grep "<Directory" /etc/apache2/sites-available/000-default.conf | cut -d " " -f2 | cut -d "\"" -f2;
Por:
LOCALHOSTPATH=$(awk -F'"' '/<Directory/ {print $2}'  /etc/apache2/sites-available/000-default.conf) 

OBS.: -F[aspas simples][aspas duplas][aspas simples]

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.

______________________________________________________________________



8. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/05/2021 - 08:43h

LypePassoca escreveu:

Olá amigo, tinha testado isso já, o que acontece é que ai mostra um erro e ele passa tudo como uma string pra variável e não o resultado do filtro. To começando a achar que tem algo desconfigurado com o meu bash.
Adicionei uma imagem do resultado:


A mensagem de erro que você mostrou indica que você digitou erroneamente a sugestão que eu dei. Parece que você usou apóstrofos (') em vez de acento grave (`).
# A linha abaixo faz com que ‘a’ fique com o valor “echo "aaa"” (i.e. copia exatamente o texto entre apóstrofos).
a='echo "aaa"'

# A linha abaixo faz com que ‘b’ fique com o valor “bbb” (i.e. intercepta a saída do comando que está entre os acentos graves).
b=`echo "bbb"`


Se o shell que você está usando para interpretar o script for o BASH (bash) ou o Korn Shell (ksh), usar “$(comando)” pode ser uma alternativa mais legível ao uso de “`comando`”.
# Se o shell for KSH ou BASH, a linha abaixo faz com que ‘c’ fique com o valor “ccc” (i.e. intercepta a saída do comando entre parênteses).
c=$(echo "ccc")


Entretanto, o shell tradicional não aceita a construção com $(…), de modo que se você quiser interceptar a saída de um comando, tem de usar a sintaxe com acentos graves. Essa é a razão pela qual eu não sugiro seu uso sem ter certeza de qual shell está sendo empregado. Como você não disse qual shell está usando, prefiro sugerir o que eu sei que funciona no maior universo possível.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


9. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

Felipe Moreira da Luz
LypePassoca

(usa Ubuntu)

Enviado em 31/05/2021 - 08:08h


rabbit escreveu:

Bom dia Amigo,

Pra executar esse comando e retornar para a váriavel você tem colocar entre $().
No seu caso vai ficar assim:

LOCALHOSTPATH=$(grep "<Directory" /etc/apache2/sites-available/000-default.conf | cut -d " " -f2 | cut -d "\"" -f2) 


Assim vai executar o comando grep procurando o Directory.

Rapaz agora não lembro sem tem que colocar o \<Directory, para escapar o < mais testa, se não funcionar vc colocar o \ antes do < para escapar ele.
Bom trampo.

x.x
run rabbit run


Amigo, esse sinal de construtor do javascript funcionou exatamente para o que vc disse :P Muito obrigado, o lance do escape para remover o < e o \ eu consegui resolver no últim cut ali da linha ( cut -d "\"" -f2).

Muito obrigado!



10. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

Felipe Moreira da Luz
LypePassoca

(usa Ubuntu)

Enviado em 31/05/2021 - 08:12h


paulo1205 escreveu:

LypePassoca escreveu:

Olá amigo, tinha testado isso já, o que acontece é que ai mostra um erro e ele passa tudo como uma string pra variável e não o resultado do filtro. To começando a achar que tem algo desconfigurado com o meu bash.
Adicionei uma imagem do resultado:


A mensagem de erro que você mostrou indica que você digitou erroneamente a sugestão que eu dei. Parece que você usou apóstrofos (') em vez de acento grave (`).
# A linha abaixo faz com que ‘a’ fique com o valor “echo "aaa"” (i.e. copia exatamente o texto entre apóstrofos).
a='echo "aaa"'

# A linha abaixo faz com que ‘b’ fique com o valor “bbb” (i.e. intercepta a saída do comando que está entre os acentos graves).
b=`echo "bbb"`


Se o shell que você está usando para interpretar o script for o BASH (bash) ou o Korn Shell (ksh), usar “$(comando)” pode ser uma alternativa mais legível ao uso de “`comando`”.
# Se o shell for KSH ou BASH, a linha abaixo faz com que ‘c’ fique com o valor “ccc” (i.e. intercepta a saída do comando entre parênteses).
c=$(echo "ccc")


Entretanto, o shell tradicional não aceita a construção com $(…), de modo que se você quiser interceptar a saída de um comando, tem de usar a sintaxe com acentos graves. Essa é a razão pela qual eu não sugiro seu uso sem ter certeza de qual shell está sendo empregado. Como você não disse qual shell está usando, prefiro sugerir o que eu sei que funciona no maior universo possível.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)



Foi um descuido meu não informar o tipo de terminal hehe, mas é o bash e também o ZSH(baseado em bash), então a parte do $() funcionou, mas a indicação entre acentos graves não. Mas cara, muito obrigado, vou anotar esses detalhes por que eu não sabia mesmo. :)



11. Re: Alternativa para usar retorno de grep em uma mudança de pastas CD [RESOLVIDO]

Felipe Moreira da Luz
LypePassoca

(usa Ubuntu)

Enviado em 31/05/2021 - 08:17h


msoliver escreveu:

LypePassoca escreveu:

Ola gente tudo bem?
Sou novo com os shell script e estou tentando automatizar uma instalação local de um site a partir do repositório dentro da pasta de localhost configurado no apache.

Trabalho com Drupal, e por isso existem alguns processos para gerar arquivos de configs especificos quando vai subir um ambiente local. Queria deixar isso mais automático, para tal, vou descrever o que fiz, o que pretendia com isso e o onde estou travado, de forma objetiva para não cansar ninguém.

Fiz um script.sh para identificar qual caminho de localhost esta configurado no apache do dev, partindo da premissa que ele usa ubuntu.
Então fiz:
Parte 1 (O que fiz):
LOCALHOSTPATH= grep "<Directory" /etc/apache2/sites-available/000-default.conf | cut -d " " -f2 | cut -d "\"" -f2;
Com isso eu tenho de retorno o caminho que no meu caso é /var/www/html/

Parte 2 (O que pretendia):
Neste ponto gostaria de fazer o script trocar para esta pasta retornada pelo comando acima e dar um clone do repositório nesta pasta.
No entanto tentei passar o comando no script cd $LOCALHOSTPATH, mas sem sucesso.
Nessa parte que estou travado.
O retorno do shell script não mostra nada, ele só cai para a próxima linha que no meu caso é um pwd.

Pensei, pensei e pensei, e entendi que como o caminho inicial eu peguei por um filtro de texto (grep) ele não tem como jogar esse cara para um cd e assim fazer a mudança de pastas.
Como posso pegar o valor do arquivo do apache e transformar isso em um caminho de diretório para fazer o meu clone de repositório?

Boa tarde Lype.
Altere:
LOCALHOSTPATH= grep "<Directory" /etc/apache2/sites-available/000-default.conf | cut -d " " -f2 | cut -d "\"" -f2;
Por:
LOCALHOSTPATH=$(awk -F'"' '/<Directory/ {print $2}'  /etc/apache2/sites-available/000-default.conf) 

OBS.: -F[aspas simples][aspas duplas][aspas simples]

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.

______________________________________________________________________


Perfeito amigo, anotei a dica :)







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts