Last active
March 10, 2025 19:08
-
-
Save pogermano/72f010b28c2090ee2edbd17b95b26785 to your computer and use it in GitHub Desktop.
Revisions
-
pogermano revised this gist
Mar 10, 2025 . 1 changed file with 0 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -90,7 +90,3 @@ Tanto `bash -c` quanto `sh -c` executam comandos em um shell, mas: ✅ Útil para **Docker, SSH, n8n, scripts remotos e automação** ✅ Permite rodar **múltiplos comandos numa única linha** -
pogermano created this gist
Mar 5, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,96 @@ # Guia Completo sobre `bash -c` ## 🔹 O que é o **Bash**? O **Bash (Bourne Again Shell)** é um interpretador de comandos do Unix/Linux. Ele permite que você: - ✅ Execute comandos diretamente no terminal - ✅ Crie **scripts** para automação - ✅ Trabalhe com **variáveis, loops e condicionais** Você pode rodar o Bash de várias formas: - **Interativamente** (digitando comandos no terminal) - **Rodando scripts** (`.sh` ou executando com `bash script.sh`) - **Usando `bash -c` para executar um comando diretamente** --- ## 🔹 O que faz `bash -c`? `bash -c "COMANDO"` permite que você **execute um comando dentro de um novo processo Bash**. Isso é útil quando: - Você precisa garantir que o Bash interprete a **sintaxe corretamente** - Você está executando comandos de um **ambiente diferente**, como o n8n ou outra aplicação - O sistema que chama o comando pode **não interpretar corretamente os caracteres especiais**, como `$()` e `;` 📌 **Sintaxe básica**: ```bash bash -c "comando1; comando2" ``` 📌 **Exemplo**: ```bash bash -c "echo 'Olá, mundo!'" ``` Saída: ```plaintext Olá, mundo! ``` --- ## 🔹 Quando usar `bash -c`? ### ✅ 1. Para rodar comandos com caracteres especiais (`$()`, `"`, `'`, `;`) Muitas vezes, ambientes como **n8n, Python subprocess, Node.js e Docker** não expandem `$()` corretamente. **Exemplo sem `bash -c` (pode falhar no n8n):** ```bash docker exec -i $(docker ps -q) bash -c "echo 'Executando no container'" ``` **Exemplo com `bash -c` (garante que funcione corretamente):** ```bash bash -c 'docker exec -i $(docker ps -q) bash -c "echo Executando no container"' ``` ### ✅ 2. Para rodar múltiplos comandos em sequência Se você quer executar vários comandos **num único chamado**, `bash -c` permite encadear comandos: ```bash bash -c "echo 'Passo 1'; sleep 2; echo 'Passo 2 concluído!'" ``` Saída: ```plaintext Passo 1 (Pausa de 2 segundos) Passo 2 concluído! ``` ### ✅ 3. Para rodar comandos remotos via SSH Se você quer executar algo **num servidor remoto**, `bash -c` ajuda: ```bash ssh usuario@servidor "bash -c 'uptime; whoami'" ``` Isso roda `uptime` e `whoami` no servidor remoto. ### ✅ 4. Para rodar comandos dentro de Docker/n8n/Python subprocess Se um comando não roda corretamente dentro do **n8n**, **Docker**, ou **Python subprocess**, `bash -c` pode resolver. Exemplo no **n8n**: ```bash bash -c 'docker exec -i $(docker ps --filter "name=mysql" -q) mysqldump -u root -psenha krayinlaravelcrm > backup.sql' ``` --- ## 🔹 Qual a diferença entre `bash -c` e `sh -c`? Tanto `bash -c` quanto `sh -c` executam comandos em um shell, mas: - ✅ `bash -c` usa o **Bash**, que tem mais recursos avançados (arrays, `[[ ]]`, regex, `**` para busca recursiva, etc.) - ✅ `sh -c` usa o **Shell POSIX**, que pode ser mais limitado em algumas distribuições Linux 📌 **Se seu sistema tem apenas `sh` (sem Bash), use `sh -c`. Mas se o Bash estiver disponível, prefira `bash -c`.** --- ## 🔹 Resumo ✅ `bash -c` cria um **novo processo Bash** e executa o comando nele ✅ Ajuda quando caracteres especiais (`$()`, `"`, `'`) não são interpretados corretamente ✅ Útil para **Docker, SSH, n8n, scripts remotos e automação** ✅ Permite rodar **múltiplos comandos numa única linha** --- Se quiser aprender mais sobre Bash, posso te recomendar livros, cursos ou ajudar com mais exemplos práticos. 🚀