Resumo de Atalhos do 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 e fluxos de trabalho de desenvolvedor, veja Ferramentas de Desenvolvedor: O Guia Completo de Fluxos de Trabalho de Desenvolvimento Moderno.
Se você precisar de um padrão de prompt interativo em scripts, veja Pausar scripts com Pressione qualquer tecla no Bash, CMD, PowerShell e macOS.
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
geraria 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
geraria 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 com Tar no Bash
Comprimindo
tar -zcvf nome-do-arquivo.tgz nome-da-pasta
Descomprimindo
tar -zxvf nome-do-arquivo.tgz
Acesso a Servidor Remoto no Bash com SSH e SCP
Enviar identidade de 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 ~/arquivo.ext user@ip-hosp:/home/user/arquivo.ext
Baixar pasta com conteúdo recursivo
scp -r user@ip-hosp:/home/user/dir ~/dir
Gerenciamento de Pastas e Arquivos no Bash
Verificar existência
# criar uma pasta se não existir, com todas as pastas intermediárias
[ -d $repdir ] || mkdir -p $repdir
# ou
if [ -d $fname ]; then
echo "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 converte todos os arquivos jpg em uma pasta para fits
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Mesclar todos os arquivos em um
cat ./* > merged.txt
Adicionando 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 -
onde:
- */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 bash - o bash executará este script
- /home/user/stest - parâmetro do script - para ser acessado por $1
- /home/user/stest/stest.log - arquivo de log com a saída de console de stest.sh
Verificar
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Monitorando Arquivos de Log no Bash
Acompanhar arquivo de log em tempo real
sudo tail -f /var/log/megalog.log
Obtendo Código de Status HTTP com curl no Bash
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servidor)
# 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
Mantendo Comando SSH Rodando Após o Logoff
Assumindo que você tenha um programa rodando em primeiro plano, pressione
- ctrl-Z, então:
[1]+ Parado meu_programa
- disown -h %1
- bg 1
[1]+ meu_programa &
- logout
Gerando JSON no Bash com jo
Instalar jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
geraria
{"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
}
Analisando JSON e Extraindo Valores de Campos no Bash
Instalar jq primeiro
sudo apt-get install jq
Usar
| jq -r '.nomeDoCampo'
Como analisar a saída de uma chamada ao Ollama:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Por que o céu é azul?",
"stream": false
}' | jq -r '.response'
Contando Palavras em um Arquivo com Bash
Contagem de palavras:
wc -w nome_do_arquivo.txt
retornará algo como
261 nome_do_arquivo.txt
Se você quiser apenas um número inteiro, pode cortar a primeira palavra, que é um número
palavras=`wc -w nome_do_arquivo.txt | cut -f1 -d' '`
echo "$palavras palavras"
Ou usar wc como:
palavras=`wc -w < nome_do_arquivo.txt`
echo "$palavras palavras"
Verificando Uso de Disco de Diretório
du ~/nome_da_pasta
Obtendo o Caminho do Diretório do Script no Bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Medindo o Tempo de Execução do Script no Bash
Uma opção é usar a função time
time seu_script.sh
Outra forma é um pouco mais complicada:
inicio=`date +%s`
# código muito importante
# vai aqui
fim=`date +%s`
tempo_exec=$((fim-inicio))
Comparando Dois Arquivos com VS Code
code -d <arquivo 1> <arquivo 2>
Verificando Pacotes Disponíveis no Repositório Ubuntu
sudo apt-cache policy <nomeDoPacote>
Links Úteis
- Ramificação Git no Prompt Bash
- Folha de Referência Python
- Folha de Referência Conda
- Sincronização de Favoritos com Floccus
- Reinstalar Linux
- Folha de Referência Ollama
- Folha de Referência Docker
- Folha de Referência Kubernetes
- Folha de Referência Markdown
- Codificação - decodificação Base64 no Windows, Linux e Mac
- Decodificar e imprimir token JWT
- Folha de Referência de Parâmetros de Linha de Comando MinIO