Pular para o conteúdo
Skillpedia
Código em geral48 mil · #4272

bash

Orienta seu agente a escrever scripts bash de alta qualidade. Garante que os comandos sejam eficientes e sigam as melhores práticas.

O que ela faz

Este guia ensina como escrever comandos e scripts para o terminal do Linux (Bash) de forma mais segura e eficiente. Ele mostra exemplos de como evitar erros comuns e usar as melhores práticas.

Quando usar

  • ✓Ao escrever scripts para automatizar tarefas no Linux.
  • ✓Ao tentar corrigir erros em comandos Bash existentes.
  • ✓Ao aprender a usar o terminal de forma mais avançada.

Exemplo do que pedir para a IA

“Como posso garantir que meu script Bash lide corretamente com nomes de arquivos que contêm espaços?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/super-code/bash/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/super-code/bash/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

O guia compara códigos 'ruins' com códigos 'bons' para demonstrar as melhores práticas. Ele foca em como lidar com variáveis, condições, laços de repetição e a comunicação entre comandos.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill bash

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/super-code/bash/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Bash / Shell: Referência de Eficiência Idiomática

Quando Usar

  • Use esta habilidade quando a tarefa corresponder a esta descrição: Diretrizes de supercódigo específicas da linguagem para bash.

Índice

  1. Aspas e Divisão de Palavras
  2. Condicionais e Testes
  3. Loops e Iteração
  4. Pipes e Substituição de Processo
  5. Funções e Valores de Retorno
  6. Tratamento de Erros
  7. Antipadrões específicos do Bash

1. Aspas e Divisão de Palavras {#quoting}

# ❌ Unquoted variable (word splitting + globbing)
for f in $files; do rm $f; done

# ✅
for f in "${files[@]}"; do rm -- "$f"; done
# ❌ Unquoted command substitution
path=$(find . -name config)
cat $path  # breaks on spaces

# ✅
path="$(find . -name config)"
cat "$path"
# ❌ Using backticks for command substitution
result=`echo hello`

# ✅ — $() nests cleanly
result=$(echo hello)
# ❌ String comparison without quotes
if [ $var = "hello" ]; then  # breaks if var is empty or has spaces

# ✅
if [[ "$var" = "hello" ]]; then

Regra: use aspas duplas em cada $variable e $(command), a menos que você precise especificamente da divisão.


2. Condicionais e Testes {#conditionals}

# ❌ Single bracket test (POSIX but fragile)
if [ -f "$file" -a -r "$file" ]; then

# ✅ — [[ is safer, supports &&/||, no word splitting inside
if [[ -f "$file" && -r "$file" ]]; then
# ❌ Testing command exit status with if [ $? -eq 0 ]
grep -q pattern file
if [ $? -eq 0 ]; then echo "found"; fi

# ✅ — test command directly
if grep -q pattern file; then echo "found"; fi
# ❌ String equality with == outside [[
if [ "$a" == "$b" ]; then  # == not POSIX in [ ]

# ✅
if [[ "$a" == "$b" ]]; then  # Bash
# or POSIX:
if [ "$a" = "$b" ]; then
# ❌ Arithmetic with [ ] and string comparison
if [ "$count" -gt 10 ]; then

# ✅ — (( )) for arithmetic
if (( count > 10 )); then

3. Loops e Iteração {#loops}

# ❌ Parsing ls output
for f in $(ls *.txt); do process "$f"; done

# ✅ — glob directly
for f in *.txt; do
    [[ -e "$f" ]] || continue  # handle no-match
    process "$f"
done
# ❌ Reading file line-by-line with for
for line in $(cat file.txt); do  # splits on words, not lines

# ✅
while IFS= read -r line; do
    process "$line"
done < file.txt
# ❌ Seq for counting
for i in $(seq 1 10); do

# ✅ — brace expansion (Bash)
for i in {1..10}; do
# or C-style:
for (( i = 1; i <= 10; i++ )); do
# ❌ Processing command output line-by-line with pipe (subshell trap)
count=0
cat file.txt | while read -r line; do
    (( count++ ))  # count resets after loop — subshell
done
echo "$count"  # always 0

# ✅ — redirect, not pipe
count=0
while IFS= read -r line; do
    (( count++ ))
done < file.txt
echo "$count"

4. Pipes e Substituição de Processo {#pipes}

# ❌ Chained grep | grep for AND
grep "error" log.txt | grep "timeout"

# ✅ — single grep with pattern
grep -E "error.*timeout|timeout.*error" log.txt
# or awk for complex logic:
awk '/error/ && /timeout/' log.txt
# ❌ cat + pipe (UUOC — Useless Use of Cat)
cat file.txt | grep pattern

# ✅
grep pattern file.txt
# ❌ Temp file for diff between commands
cmd1 > /tmp/a.txt
cmd2 > /tmp/b.txt
diff /tmp/a.txt /tmp/b.txt
rm /tmp/a.txt /tmp/b.txt

# ✅ — process substitution
diff <(cmd1) <(cmd2)
# ❌ Ignoring pipe failures (only last command's exit code)
false | true
echo $?  # 0 — false's failure hidden

# ✅
set -o pipefail
false | true
echo $?  # 1

5. Funções e Valores de Retorno {#functions}

# ❌ Using return for string values
get_name() {
    return "Alice"  # return is for exit codes (0-255)
}

# ✅ — echo + capture
get_name() {
    echo "Alice"
}
name=$(get_name)
# ❌ Global variables modified inside functions
result=""
compute() { result="done"; }

# ✅ — use local, return via stdout
compute() {
    local tmp
    tmp=$(do_work)
    echo "$tmp"
}
result=$(compute)
# ❌ Function keyword (not POSIX)
function my_func {

# ✅
my_func() {

6. Tratamento de Erros {#errors}

# ❌ No error handling — script continues after failure
cd /some/dir
rm -rf *  # if cd fails, deletes from wrong directory

# ✅
set -euo pipefail

cd /some/dir || { echo "cd failed" >&2; exit 1; }
rm -rf ./*
# ❌ Sem limpeza ao sair
tmpfile=$(mktemp)
# ... o script pode sair cedo, deixando tmpfile


…
Perguntas frequentes

O que é 'Bash'?

Bash é um programa que interpreta os comandos que você digita no terminal do Linux. É como um tradutor entre você e o computador.

Por que 'aspas duplas' são importantes?

Aspas duplas evitam que o Bash interprete mal espaços ou caracteres especiais em nomes de arquivos ou variáveis, prevenindo erros.

O que significa 'set -euo pipefail'?

É uma configuração que torna seus scripts mais seguros, fazendo com que eles parem imediatamente se um comando falhar ou se uma variável não definida for usada.

Detalhes

Descrição original do autor

Language-specific super-code guidelines for bash.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#4272
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas