Fase 1: Terminal

Contenidos

  • Crear entorno de desarrollo
  • WSL (Solo usuarios de Windows)
  • Seguridad (Gestor de contraseñas)
  • Shell (fish) + Comandos
  • VSCode (Editor de código)
  • Creación de scripts

El tiempo que inviertas en mejorar, es tiempo que ahorrarás en el futuro.

Preparar terminal

Modalidades en Windows

  • Terminal de Windows: CMD / PowerShell
  • Terminal de Linux: WSL (Linux)

WSL (Windows Subsystem for Linux)

# Instaladas
wsl --list

# Para descargar e instalar
wsl --list --online

# Instalar Debian
wsl --install -d Debian

Gestores de contraseñas


Necesitas dar permisos a tu usuario:

# En la terminal de Windows:
wsl -u root

# En WSL escribimos:
apt update && apt install sudo curl git wget
usermod -aG sudo manz
exit

Personalizando Shell

  • Bash por defecto (mínima)
  • Fish más cómoda y amigable (recomendable)
# Actualizar repositorios
sudo apt update

# Instalar curl + fish
sudo apt install curl fish

# Establecer fish por defecto
chsh -s $(which fish)
# Instalar fisher (instalador de complementos de fish)
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source
fisher install jorgebucaran/fisher

# Instalar tide (framework de fish)
fisher install IlanCosman/tide@v6

Comandos

Carpetas en Linux

  • Estructura de carpetas
  • Comando pwd (¿Dónde estoy?)
📂 /                              # Carpeta raíz de todo
   📂 home/                       # Carpeta de usuarios
      📂 manz/                    # Usuario manz
         📂 .config/              # Configuración del usuario manz
            📂 fish/
            📄 config.fish
   📂 etc/                        # Configuración del sistema
   📂 var/                        # Logs y otros ficheros
   📂 tmp/                        # Ficheros temporales
   📂 root/                       # Usuario root (administrador)

Comandos de terminal

# Mover de forma absoluta
cd /
cd /home/manz
cd /etc

# Mover de forma relativa
cd ..
cd home && cd manz
cd .. && cd .. && cd etc

Comandos de terminal

# Crea carpetas y ficheros
mkdir carpeta
mkdir -p carpeta/subcarpeta
touch file

# ¿Dónde estoy?
pwd

cd carpeta
cd ..
z fragmento

Comandos de terminal

# Mostrar archivos y carpetas
ls -lh
eza --icons --tree -lh

# Renombrar/Mover, copiar y eliminar
mv origen destino
cp origen destino
rm fichero

# ¿Donde está un ejecutable?
which file

Comandos de terminal

# Buscar ficheros
find -name *png
fdfind fragmento

# File managers
ytree
broot
lf

Comandos de terminal

# Mostrar el contenido de un fichero
cat file.txt

# Muchas veces, se usa con paginador
# Opciones: more, less, most
cat file.txt | more

# Bat: Mejora de `cat`
batcat file.txt
# Buscar coincidencias en un fichero
grep "texto" file.txt

# Buscar lineas que no coincidan
grep -v "texto" file.txt

# Filtrar con fzf
fzf
ls -lh | fzf

Editores de texto

# Editores básicos
nano file.txt
nvim file.txt
echo "contenido" >file.txt

# Editores más complejos
micro file.txt
fresh file.txt

Visual Studio Code

Visual Studio Code

Forks con IA (no recomendados aún)

Visual Studio Code

  • Conectar vía WSL (esquina inferior izquierda)
  • Extensiones y temas para VSCode
  • Panel de VSCode: Pulsa CTRL+SHIFT+P
  • Opciones de VSCode: Busca Open User Settings (JSON) - Aquí mi settings.json

Comando code

cd workspace
mkdir project
code .

Visual Studio Code (Configuración)

{

  "editor.fontLigatures": true,
  "editor.tabSize": 2,
  "editor.insertSpaces": true,
  "editor.cursorSmoothCaretAnimation": "on",
  "editor.smoothScrolling": true,
  "editor.cursorBlinking": "expand",
  "editor.cursorStyle": "line",

}
{
  /* MiniMap */
  "editor.minimap.scale": 1,
  "editor.minimap.renderCharacters": false,
  "editor.minimap.maxColumn": 120,
  "editor.minimap.showSlider": "mouseover",
  "editor.minimap.side": "right",
  "editor.minimap.autohide": "none",
  "editor.minimap.enabled": true,
  "editor.minimap.size": "proportional",
}

Visual Studio Code (Desactivar IA)

En fases muy tempranas, aconsejo desactivar IA.

  • Evitarás abrumarte
  • Te centrarás en usar IA sólo para entender conceptos
  • Cuando tengas soltura, activa la IA para mejorar productividad
{
  "chat.disableAIFeatures": true,
}

Crear scripts

  • Dominar rutas + editor de terminal + Shebang! + Ejecutar el script
  • Truco: Guarda o mueve los scripts a /usr/local/bin
nano saludo

#!/bin/bash
echo "╭────────╮" | lolcat
echo "│ ◕ ‿  ◕ │ ¡Saludos, Manz!" | lolcat
echo "╰───┬─┬──╯" | lolcat

chmod +x saludo
./saludo

Crear alias

  • Pequeños comandos muy usados
  • No merece crear un script
# Creamos alias
funced take
take> function take
           mkdir -p $argv && cd $argv
      end

# Si funciona bien, guardamos de forma permanente
funcsave take

Preguntas