Hojas de referencia

Como ya dije, tengo intención de usar el blog como referencia (con la esperanza de que a alguien más le resulte útil).

Existen muchísimas hojas de referencia, la mayoría probablemente más completas de lo que yo pueda crear aquí. No obstante, puesto que cada uno tenemos nuestras necesidades y preferencias, aquí está es mi selección personalizada de comandos útiles para el día a día (que, probablemente, se irá actualizando).

bash

grep

Buscar texto en archivos:

grep "pattern" file.txt

Buscar con contexto (líneas antes y después):

grep -C 3 "pattern" file.txt

Excluir líneas que coinciden con el patrón:

grep -v "pattern" file.txt

Devolver sólo nombres de archivo que contienen el patrón:

grep -l "pattern" *.txt

find

Buscar archivos por nombre:

find /path/to/search -name "filename"

Buscar archivos por tipo:

find /path/to/search -type f -name "*.txt"

Buscar archivos modificados en los últimos 7 días:

find /path/to/search -mtime -7

cat

Mostrar el contenido de un archivo:

cat file.txt

Concatenar varios archivos:

cat file1.txt file2.txt > combined.txt

awk

Añadir una columna a un CSV:

awk -F, '{print $0",new_column"}' file.csv

Eliminar una columna de un CSV:

awk -F, '{$2=""; print $0}' OFS=, file.csv

Sustituir un campo en un CSV:

awk -F, '{$2="new_value"; print $0}' OFS=, file.csv

head/tail

Mostrar las primeras 10 líneas de un archivo:

head file.txt

Mostrar las últimas 10 líneas de un archivo:

tail file.txt

Mostrar las primeras 20 líneas de un archivo:

head -n 20 file.txt

Mostrar las últimas 20 líneas de un archivo:

tail -n 20 file.txt

ls

Listar archivos con detalles:

ls -l

Listar archivos ordenados por fecha:

ls -lt

Listar archivos incluyendo archivos ocultos:

ls -a

pipes

Redirigir la salida de un comando a otro:

command1 | command2

Redirigir la entrada de un archivo a un comando:

command < inputfile

Redirigir la salida de un comando a un archivo (sobrescribir):

command > outputfile

Redirigir la salida de un comando a un archivo (añadir):

command >> outputfile

Redirigir errores a un archivo:

command 2> errorfile

Redirigir salida estándar y errores a un archivo:

command > outputfile 2>&1

Descartar la salida:

command > /dev/null

Ejemplos compuestos

Buscar archivos .log y contar las líneas que contienen "error":

find /path/to/search -name "*.log" | xargs grep -c "error"

Listar archivos modificados en los últimos 7 días y mostrar las primeras 10 líneas de cada uno:

find /path/to/search -mtime -7 -type f | xargs head -n 10

Ejemplo de script bash usando IFS

#!/bin/bash

# Procesar un archivo línea por línea
input="file.txt"
while IFS= read -r line
do
  echo "Processing: $line"
done < "$input"

git

Configuración inicial

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

Clonación de repositorios

git clone <repository_url>

Añadir o eliminar del stage (cambios a confirmar)

git add <file_name>              # Stage a specific file
git add .                        # Stage all changes
git reset <file_name>            # Unstage a specific file
git reset                        # Unstage all changes

Mostrar remotos

git remote -v                    # List remote repositories

Confirmar cambios

git commit -m "Commit message"

Push / pull

git push origin <branch_name>    # Push changes to a remote repository
git pull origin <branch_name>    # Pull changes from a remote repository

Deshacer últimos commits (no pusheados). El ejemplo se muestra para 1 commit, pero podría hacerse para un número n.

git reset HEAD~1                 # Undo last commit and keep changes staged
git reset HEAD~1 --soft          # Undo last commit and keep changes unstaged

Manejo de ramas

git branch                       # List branches
git branch <branch_name>         # Create a new branch
git checkout <branch_name>       # Switch to a different branch
git merge <branch_name>          # Merge changes from another branch into the current branch

Manejo del stash

git stash                        # Stash changes
git stash pop                    # Apply stashed changes and remove them from the stash
git stash list                   # List stashed changes
git stash apply                  # Apply stashed changes without removing them from the stash
git stash drop                   # Remove a specific stash
git stash clear                  # Remove all stashes

conda

Listar environments

conda info --envs
conda env list

Crear enviroments:

conda create --name <my-env>
conda create -n <my-env>
conda create -n myenv python=3.12
conda env create -f environment.yml

Exportar environment a fichero yml:

conda env export > environment.yml

Eliminar environment:

conda remove --name <my-env> --all