Guia de Comandos Bash - Comandos Linux para Ubuntu, Mint e Debian
Alguns parâmetros de linha de comando de ferramentas
Não é uma lista muito abrangente, apenas algumas úteis para mim

Para mais ferramentas de desenvolvimento e fluxos de trabalho, consulte Ferramentas de Desenvolvimento: O Guia Completo para Fluxos de Trabalho de Desenvolvimento Moderno.
Como Verificar a Versão do Linux Ubuntu
Para mais detalhes sobre como verificar a versão do Ubuntu, consulte Verificar versão do Linux Ubuntu.
Método 1
lsb_release -a
produziria algo como
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
Método 2
cat /etc/os-release
produziria algo como
NAME="Linux Mint"
VERSION="22.1 (Xia)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 22.1"
VERSION_ID="22.1"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=xia
UBUNTU_CODENAME=noble
Arquivamento e Descompactação no Bash com Tar
Compactando
tar -zcvf nome-do-arquivo.tgz nome-da-pasta
Descompactando
tar -zxvf nome-do-arquivo.tgz
Acesso Remoto ao Servidor no Bash com SSH e SCP
Enviar identidade do usuário para o servidor remoto
ssh-copy-id user@10.0.0.225
Assim, permitirá login sem senha na próxima vez, como
ssh user@10.0.0.225
Enviar arquivo
scp ~/file.ext user@ip-do-host:/home/user/file.ext
Baixar pasta com conteúdo aninhado recursivamente
scp -r user@ip-do-host:/home/user/dir ~/dir
Gerenciamento de Pastas e Arquivos no Bash
Verificar existência
# criar uma pasta se ela não existir, com todas as pastas intermediárias
[ -d $repdir ] || mkdir -p $repdir
# ou
if [ -d $fname ]; then
echo "O arquivo não existe: $fname"
return
fi
Criar pasta para um usuário específico
sudo mkdir dir1
sudo chown usuario_especifico dir1
sudo chown :grupo_especifico dir1
Iterar sobre arquivos na pasta
# este comando converte todos os arquivos jpg em alguma pasta para fits
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Mesclar todos os arquivos em um só
cat ./* > merged.txt
Adicionar Comandos ao Crontab
(crontab -l 2>/dev/null | \
grep -v control-marker-1; \
echo '*/15 * * * * /bin/bash /home/user/stest/stest.sh /home/user/stest >> /home/user/stest/stest.log 2>&1 #control-marker-1') | \
crontab -
aqui:
- */15 - executar a cada 15 minutos
- control-marker-1 - é o identificador deste comando na configuração do cron para atualizá-lo na próxima vez com o mesmo script
- /bin/bash - comando a executar
- /home/user/stest/stest.sh - parâmetro do bash - o bash executará este script
- /home/user/stest - parâmetro do script - a ser acessado por $1
- /home/user/stest/stest.log - arquivo de log com a saída do console do stest.sh
Verificar
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Monitorar Arquivos de Log no Bash
Monitorar arquivo de log em tempo real
sudo tail -f /var/log/megalog.log
Obter Código de Status HTTP com curl no Bash
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
# ou
url='http://localhost:8080/'
status=$(curl --head --location --connect-timeout 5 --write-out %{http_code} --silent --output /dev/null ${url})
[[ $status == 500 ]] || [[ $status == 000 ]] && echo reiniciando ${url} # fazer lógica de iniciar/reiniciar
Manter Comando SSH Rodando Após o Logout
Assumindo que você tenha um programa rodando em primeiro plano, pressione
- ctrl-Z, depois:
[1]+ Stopped myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
Gerar JSON no Bash com jo
Instalar jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
produziria
{"model":"a", "prompt":"b", "stream":false}
Um pouco mais complexo:
jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
"name": "Jane",
"point": [
1,
2
],
"geo": {
"lat": 10,
"lon": 20
}
}
Formatando JSON no Bash com jq
Usar
| jq .
Para formatar o JSON gerado acima:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
O JSON formatado será:
{
"model": 123,
"prompt": 456,
"stream": false
}
Analisar JSON e Extrair Valores de Campos no Bash
Instalar jq primeiro
sudo apt-get install jq
Usar
| jq -r '.fieldName'
Como analisar a saída de uma chamada ao Ollama:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}' | jq -r '.response'
Contar Palavras em um Arquivo com Bash
Contagem de palavras:
wc -w filename.txt
retornará algo como
261 filename.txt
Se você quiser apenas um inteiro, pode cortar a primeira palavra, que é um número
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words words"
Ou usar wc como:
words=`wc -w < filename.txt`
echo "$words words"```
## Verificar Uso de Disco de Diretório
```bash
du ~/dirname
Obter o Caminho do Diretório do Script no Bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Medir Tempo de Execução do Script no Bash
Uma opção é usar a função time
time your_script.sh
Outra maneira é um pouco mais complicada:
start=`date +%s`
# código muito importante
# vai aqui
end=`date +%s`
runtime=$((end-start))
Comparar Dois Arquivos com VS Code
code -d <arquivo 1> <arquivo 2>
Verificar Pacotes Disponíveis no Repositório Ubuntu
sudo apt-cache policy <nomeDoPacote>
Links Úteis
- Git Branch no Prompt do Bash
- Resumo de Python
- Resumo de Conda
- Sincronização de Favoritos com Floccus
- Reinstalar Linux
- Resumo de Ollama
- Resumo de Docker
- Resumo de Kubernetes
- Resumo de Markdown
- Codificação - decodificação Base64 no Windows, Linux e Mac
- Decodificar e imprimir token JWT
- Resumo de Parâmetros de Linha de Comando do MinIO