pbcopy y pbpaste en el Terminal del Mac: el puente con el Finder
Domina pbcopy y pbpaste en el Terminal de macOS para mover texto entre la línea de comandos y el portapapeles, además de open, screencapture y osascript.
Escena conocida: ejecutas un comando, la salida ocupa tres pantallas, y ahora necesitas pegarla en un correo. Seleccionas con el ratón, te pasas una línea, vuelves atrás, seleccionas otra vez. Hay una forma mejor y lleva décadas en macOS: dos comandos minúsculos que conectan el Terminal con el portapapeles del sistema, el mismo que usas con ⌘C y ⌘V en cualquier app.
pbcopy y pbpaste en el Terminal del Mac son eso: pbcopy copia la entrada estándar al portapapeles (pasteboard, de ahí el nombre) y pbpaste vuelca el contenido del portapapeles a la salida estándar. Así lo define la página del manual de pbcopy. Nada de seleccionar con el ratón: cualquier salida de comando llega al portapapeles con una tubería, y cualquier cosa copiada puede entrar en un script. Son la pieza central de un puente más amplio entre Finder y Terminal que incluye open, screencapture y osascript. Vamos a verlo con ejemplos que puedes copiar tal cual.
pbcopy: del Terminal al portapapeles
El patrón básico es una tubería: lo que un comando imprime, pbcopy lo copia.
# Copiar el contenido de un archivo entero
pbcopy < informe.txt
# Copiar la salida de un comando
git log --oneline -10 | pbcopy
# Copiar tu clave pública SSH (el clásico)
pbcopy < ~/.ssh/id_ed25519.pub
# Copiar la ruta actual
pwd | pbcopy
Después de cualquiera de estos, pulsas ⌘V en Mail, Slack o Pages y ahí está el texto. Sin ratón, sin selección imprecisa, sin saltos de línea fantasma. Dos detalles del manual que conviene conocer:
- Si la entrada empieza con cabecera RTF o PostScript,
pbcopyla guarda con ese formato en lugar de texto plano. Para el día a día es irrelevante, pero explica por qué a veces pegas texto «con formato» inesperado. - El texto se convierte a la codificación de tu entorno (normalmente UTF-8). Si copias archivos en otras codificaciones, el resultado se normaliza a UTF-8.
Un uso infravalorado: copiar la salida de pbpaste procesada. Pero eso nos lleva al comando simétrico.
pbpaste: del portapapeles al Terminal
pbpaste escribe en la salida estándar lo que haya en el portapapeles. Solo eso, y por eso es tan combinable:
# Pegar el portapapeles en un archivo
pbpaste > notas.txt
# Contar las líneas de lo que acabas de copiar
pbpaste | wc -l
# Convertir a mayúsculas lo copiado y volver a copiarlo
pbpaste | tr '[:lower:]' '[:upper:]' | pbcopy
# Limpiar formato: extraer solo URLs de un texto copiado
pbpaste | grep -Eo 'https?://[^ ]+' | pbcopy
El último patrón —pbpaste | filtro | pbcopy— es una navaja suiza: copias un texto en cualquier app, lo transformas con herramientas Unix (sed, awk, jq, sort) y lo dejas de nuevo en el portapapeles, transformado, listo para ⌘V. Es la forma más rápida de, por ejemplo, ordenar alfabéticamente una lista pegada desde un correo: pbpaste | sort | pbcopy.
Una limitación honesta: estos comandos trabajan con texto. Si el portapapeles contiene una imagen o un archivo del Finder, pbpaste no puede volcarlo como texto. Para gestionar historial, imágenes y fragmentos múltiples necesitas un gestor de portapapeles; comparamos opciones en la guía de portapapeles con historial para Mac.
open: abrir archivos, apps y URLs desde el Terminal
El puente en dirección contraria es open. Le pasas cualquier cosa y macOS la abre como si hubieras hecho doble clic en el Finder:
# Abrir la carpeta actual en el Finder
open .
# Abrir un archivo con su app predeterminada
open informe.pdf
# Abrir un archivo con una app concreta
open -a "Visual Studio Code" proyecto/
# Abrir una URL en el navegador por defecto
open https://tallerdelmac.com
# Abrir una búsqueda directamente
open "https://duckduckgo.com/?q=macos+wdutil"
open . solo ya justifica aprenderse el comando: estás navegando por el Terminal, llegas a una carpeta profunda y necesitas verla con iconos o arrastrar algo — una pulsación y tienes la ventana del Finder ahí. Y open -a permite lanzar apps sin buscarlas: open -a Safari, open -a "Monitor de Actividad".
Del Finder al Terminal: rutas sin escribir
El puente también funciona a mano, sin comandos:
- Arrastrar al Terminal: arrastra cualquier archivo o carpeta desde el Finder a una ventana del Terminal y se pega su ruta completa, con los espacios escapados. Escribes
cd, arrastras la carpeta, Intro. Es la forma estándar de evitar escribir rutas largas. - Copiar ruta desde el Finder: en el Finder, selecciona un elemento y pulsa ⌥⌘C para copiar su ruta como texto; luego
cd "$(pbpaste)"te lleva hasta ella. Más trucos de este tipo en nuestra guía de trucos del Finder. - cd a la carpeta abierta en el Finder: el movimiento inverso a
open .. Con AppleScript se le pregunta al Finder qué carpeta tiene al frente:
cd "$(osascript -e 'tell application "Finder" to POSIX path of (insertion location as alias)' | sed 's:/$::')"
Es un comando feo de memorizar, así que conviértelo en un alias (alias cdf='...') en tu ~/.zshrc y lo tendrás para siempre.
Otros puentes: screencapture y osascript
Dos comandos más completan el pasillo entre Terminal y escritorio:
# Captura de pantalla directa al portapapeles
screencapture -c
# Captura interactiva de una zona a un archivo
screencapture -i ~/Desktop/zona.png
# Captura con retardo de 5 segundos (para preparar menús)
screencapture -T 5 ~/Desktop/captura.png
screencapture -c es el equivalente en Terminal de ⌃⇧⌘3: la captura va al portapapeles y la pegas donde quieras. Las opciones interactivas y los atajos de teclado los detallamos en la guía de capturas de pantalla en Mac.
Y osascript ejecuta AppleScript desde la línea de comandos, lo que abre todo el sistema: notificaciones, diálogos, control de apps.
# Notificación cuando termina una tarea larga
make build && osascript -e 'display notification "Build terminado" with title "Terminal"'
# Diálogo con texto del sistema
osascript -e 'display dialog "Copias de seguridad completadas" buttons {"OK"}'
El patrón de notificación es especialmente útil: encadenas && osascript ... a cualquier comando largo (compilaciones, rsync, tests) y el Mac te avisa aunque estés en otra app. Es automatización mínima sin instalar nada.
Preguntas frecuentes
¿pbcopy funciona con imágenes o archivos? No de forma útil. pbcopy y pbpaste manejan texto (y RTF/PostScript como formato de texto). Copiar una imagen o un archivo del Finder al Terminal requiere herramientas de terceros como pngpaste, o gestores de portapapeles con historial.
¿Cuál es la diferencia entre pbcopy y ⌘C? Ninguna en el resultado: ambos escriben en el mismo portapapeles general del sistema. La diferencia está en el origen: pbcopy recibe texto por tubería desde cualquier comando, sin selección manual. Lo que copies con pbcopy se pega con ⌘V en cualquier app, y viceversa.
¿Cómo copio la ruta de un archivo desde el Terminal? Con pwd | pbcopy copias la carpeta actual. Para un archivo concreto: realpath archivo.txt | pbcopy (en macOS reciente) o echo "$(pwd)/archivo.txt" | pbcopy. Y a la inversa, arrastrar el archivo al Terminal pega su ruta automáticamente.
¿Existen pbcopy y pbpaste en Linux? No de forma nativa; son específicos de macOS. Los equivalentes en Linux son xclip o xsel en X11 y wl-copy/wl-paste en Wayland, con la misma idea de tubería al portapapeles.
El Terminal y el Finder no son dos mundos: son dos vistas del mismo sistema, y pbcopy, pbpaste, open, el arrastre de rutas, screencapture y osascript son las puertas entre ambos. Aprende la tubería comando | pbcopy y el open . esta semana; el patrón pbpaste | filtro | pbcopy llegará solo cuando lo necesites. A partir de ahí, el ratón deja de hacer falta para mover texto de un lado a otro.