aresumen.sh
· 1.9 KiB · Bash
خام
#!/usr/bin/env bash
# aresumen — busca en notas .md y pregunta a Ollama
# Episodio 824 — atareao con Linux
#
# Uso: aresumen <concepto>
# Requiere: fd, rg, jq, Ollama (http://localhost:11434)
# Aliases básicos
alias f='fd'
alias rg='rg --smart-case'
alias rga='rg -uuu' # Búsqueda nuclear
# Función 1: buscar en notas Markdown
buscar_notas() {
local patron="$1"
fd -e md -X rg -C 2 --smart-case "$patron"
}
# Uso: buscar_notas ollama
# Función 2: buscar por extensión y texto
btexto() {
local ext="$1"
local texto="$2"
fd -e "$ext" -X rg --smart-case "$texto"
}
# Uso: btexto py "def test_"
# Función 3: aresumen — el pipeline IA completo
# Busca contexto en tus notas y lo envía a Ollama
aresumen() {
local concepto="$1"
if [ -z "$concepto" ]; then
echo "Uso: aresumen <concepto>"
return 1
fi
local contexto
contexto=$(fd -e md -X rg -C 5 "$concepto" 2>/dev/null)
if [ -z "$contexto" ]; then
echo "No se encontró información sobre: $concepto"
return 1
fi
echo "$contexto" | curl -s http://localhost:11434/api/generate \
-d "{\"model\": \"llama3.2\",
\"prompt\": \"Resume el siguiente contenido sobre $concepto:\n$(cat)\n\",
\"stream\": false}" \
| jq -r '.response'
}
# Uso: aresumen fd
# Función 4: rfb — buscador interactivo (rg + fzf + bat)
# Como vimos en el episodio 810
rfb() {
if [ -z "$1" ]; then
echo "Uso: rfb <texto_a_buscar>"
return 1
fi
rg --line-number --no-heading --color=always --smart-case "$1" | \
fzf --ansi \
--color="ansi" \
--delimiter=":" \
--preview="bat --color=always --highlight-line={2} {1}" \
--preview-window="right:60%:wrap" \
--bind="enter:become(${EDITOR:-nano} +{2} {1})"
}
# Uso: rfb ollama — busca, previsualiza con bat, abre editor en la línea exacta
| 1 | #!/usr/bin/env bash |
| 2 | # aresumen — busca en notas .md y pregunta a Ollama |
| 3 | # Episodio 824 — atareao con Linux |
| 4 | # |
| 5 | # Uso: aresumen <concepto> |
| 6 | # Requiere: fd, rg, jq, Ollama (http://localhost:11434) |
| 7 | |
| 8 | # Aliases básicos |
| 9 | alias f='fd' |
| 10 | alias rg='rg --smart-case' |
| 11 | alias rga='rg -uuu' # Búsqueda nuclear |
| 12 | |
| 13 | # Función 1: buscar en notas Markdown |
| 14 | buscar_notas() { |
| 15 | local patron="$1" |
| 16 | fd -e md -X rg -C 2 --smart-case "$patron" |
| 17 | } |
| 18 | # Uso: buscar_notas ollama |
| 19 | |
| 20 | # Función 2: buscar por extensión y texto |
| 21 | btexto() { |
| 22 | local ext="$1" |
| 23 | local texto="$2" |
| 24 | fd -e "$ext" -X rg --smart-case "$texto" |
| 25 | } |
| 26 | # Uso: btexto py "def test_" |
| 27 | |
| 28 | # Función 3: aresumen — el pipeline IA completo |
| 29 | # Busca contexto en tus notas y lo envía a Ollama |
| 30 | aresumen() { |
| 31 | local concepto="$1" |
| 32 | if [ -z "$concepto" ]; then |
| 33 | echo "Uso: aresumen <concepto>" |
| 34 | return 1 |
| 35 | fi |
| 36 | local contexto |
| 37 | contexto=$(fd -e md -X rg -C 5 "$concepto" 2>/dev/null) |
| 38 | if [ -z "$contexto" ]; then |
| 39 | echo "No se encontró información sobre: $concepto" |
| 40 | return 1 |
| 41 | fi |
| 42 | echo "$contexto" | curl -s http://localhost:11434/api/generate \ |
| 43 | -d "{\"model\": \"llama3.2\", |
| 44 | \"prompt\": \"Resume el siguiente contenido sobre $concepto:\n$(cat)\n\", |
| 45 | \"stream\": false}" \ |
| 46 | | jq -r '.response' |
| 47 | } |
| 48 | # Uso: aresumen fd |
| 49 | |
| 50 | # Función 4: rfb — buscador interactivo (rg + fzf + bat) |
| 51 | # Como vimos en el episodio 810 |
| 52 | rfb() { |
| 53 | if [ -z "$1" ]; then |
| 54 | echo "Uso: rfb <texto_a_buscar>" |
| 55 | return 1 |
| 56 | fi |
| 57 | rg --line-number --no-heading --color=always --smart-case "$1" | \ |
| 58 | fzf --ansi \ |
| 59 | --color="ansi" \ |
| 60 | --delimiter=":" \ |
| 61 | --preview="bat --color=always --highlight-line={2} {1}" \ |
| 62 | --preview-window="right:60%:wrap" \ |
| 63 | --bind="enter:become(${EDITOR:-nano} +{2} {1})" |
| 64 | } |
| 65 | # Uso: rfb ollama — busca, previsualiza con bat, abre editor en la línea exacta |
| 66 |
pregunta.fish
· 829 B · Fish
خام
# pregunta — versión Fish del pipeline IA
# Episodio 824 — atareao con Linux
#
# Uso: pregunta <texto>
# Requiere: fd, rg, jq, Ollama
# Aliases básicos para Fish
alias f "fd"
alias rg "rg --smart-case"
alias rga "rg -uuu"
# Función principal: pregunta a tus notas
function pregunta
if test (count $argv) -eq 0
echo "Uso: pregunta <texto>"
return 1
end
set contexto (fd -e md -X rg -C 5 $argv[1] 2>/dev/null)
if test -z "$contexto"
echo "No encontré información sobre: $argv[1]"
return 1
end
echo $contexto | curl -s http://localhost:11434/api/generate \
-d "{\"model\": \"llama3.2\", \"prompt\": \"Contexto:\n$(cat)\n\nBasándote en el contexto, responde: $argv[1]\", \"stream\": false}" \
| jq -r '.response'
end
# Uso: pregunta "¿qué es fd?"
| 1 | # pregunta — versión Fish del pipeline IA |
| 2 | # Episodio 824 — atareao con Linux |
| 3 | # |
| 4 | # Uso: pregunta <texto> |
| 5 | # Requiere: fd, rg, jq, Ollama |
| 6 | |
| 7 | # Aliases básicos para Fish |
| 8 | alias f "fd" |
| 9 | alias rg "rg --smart-case" |
| 10 | alias rga "rg -uuu" |
| 11 | |
| 12 | # Función principal: pregunta a tus notas |
| 13 | function pregunta |
| 14 | if test (count $argv) -eq 0 |
| 15 | echo "Uso: pregunta <texto>" |
| 16 | return 1 |
| 17 | end |
| 18 | set contexto (fd -e md -X rg -C 5 $argv[1] 2>/dev/null) |
| 19 | if test -z "$contexto" |
| 20 | echo "No encontré información sobre: $argv[1]" |
| 21 | return 1 |
| 22 | end |
| 23 | echo $contexto | curl -s http://localhost:11434/api/generate \ |
| 24 | -d "{\"model\": \"llama3.2\", \"prompt\": \"Contexto:\n$(cat)\n\nBasándote en el contexto, responde: $argv[1]\", \"stream\": false}" \ |
| 25 | | jq -r '.response' |
| 26 | end |
| 27 | # Uso: pregunta "¿qué es fd?" |
| 28 |