A través de comandos de Terminal para Mac podemos realizar acciones que, en determinadas ocasiones, no se encuentran disponibles a través de la interfaz gráfica de macOS o bien, el proceso para hacerlo a cabo es muy lento y laborioso.
Los comandos de Terminal para Mac, funcionan en todas las versiones de macOS que ha lanzado, prácticamente, desde la primera versión. Si quieres comenzar a utilizarlos y sacarle el máximo partido, te invito a que sigas leyendo.
Hay que tener en cuenta que con los comandos de Terminal para Mac puedes realizar cambios en tu equipo, cambios de configuración que pueden afectar al funcionamiento de tu equipo.
Además, también puedes borrar archivos, crear directorios, conocer que dispositivos están conectados a tu red, realizar búsquedas…
Si ya conoces los comandos del sistema en Windows (que proceden de MS-DOS) no te costará mucho aprender a utilizar los comandos de Terminal para Mac que os mostramos en este artículo.
Cómo acceder a Terminal
Lo primero que debemos hacer para poder comenzar a trastear las tripas de macOS es acceder a la línea de comandos de macOS. Para comenzar a utilizar los comandos de Terminal en Mac debemos realizar los siguientes pasos:
- Pulsamos el atajo de teclado Command + barra espaciadora.
- Escribimos Terminal.
- Pulsamos sobre el primer resultado de la búsqueda.
Esta aplicación también se encuentra en el Launchpad, dentro de la carpeta Otros. Si te gusta la idea de trabajar con comandos, puedes pegarle un vistazo a un artículo donde os mostramos los mejores atajos de teclado para Mac.
Comandos básicos de Terminal
[table]
,,
/ (Forward Slash),Directorio de nivel superior
.,Directorio actual
..,Directorio superior
~,Directorio principal
sudo [command],Ejecutar comando con los privilegios de seguridad del superusuario
nano [file],Abre el editor de la Terminal
open [file],Abrir un archivo
[command] -h,Obtener ayuda sobre un comando
man [command],Muestra el manual de ayuda del comando
,,
[/table]
Búsqueda en Terminal
[table]
,,
«find <dir> -name <«»file»»>»,Busca todos los archivos llamados <archivo> dentro de <dir>. Podemos utilizar los asteriscos (*) para buscar partes de nombres de archivos
«grep «»<text>»» <file>»,Busca todas las coincidencias de <texto> dentro de <fichero>
«grep -rl «»<text>»» <dir>»,Busca todos los archivos que contengan <texto> dentro de <dir>
,,
[/table]
Gestión de Permisos en Terminal
[table]
,,
ls -ld,Muestra el permiso por defecto de un directorio de origen
ls -ld/<dir>,Muestra los permisos de lectura; escritura y acceso de una carpeta determinada
chmod 755 <file>,Cambia el permiso de un archivo a 755
chmod -R 600 <dir>,Cambia el permiso de una carpeta y todo su contenido a 600
chown <user>:<group> <file>,Cambia la propiedad de un archivo a usuario y grupo Si añadimos el comando «-R» se incluirá el contenido de la carpeta
,,
[/table]
Tamaño de los archivos y espacio en disco
[table]
,,
du,Uso de la lista para cada subdirectorio y su contenido
du -sh [folder],Salida legible de todos los archivos de un directorio
du -s,Mostrar una entrada para cada archivo especificado
du -sk* | sort -nr,Listar archivos y carpetas (resumiendo el tamaño incluyendo las subcarpetas). Podemos sustituir sk* por sm* para listar los directorios en MB
df -h,Muestra el espacio libre en disco de su sistema
df -H,Calcula el espacio libre en disco en potencias de 1.000 (en lugar de 1.024)
,,
[/table]
Gestión de archivos y directorios
[table]
,,
mkdir <dir>,Crea una nueva carpeta llamada <dir>
mkdir -p <dir>/<dir>,Crea carpetas anidadas
mkdir <dir1> <dir2> <dir3>,Crea varias carpetas a la vez
«mkdir «»<dir>»»»,Crea una carpeta con un espacio en el nombre del archivo
rmdir <dir>,Elimina una carpeta (únicamente funciona con carpetas vacías)
rm -R <dir>,Elimina una carpeta y su contenido
touch <file>,Crea un nuevo archivo sin ninguna extensión
cp <file> <dir>,Copiar un archivo en la carpeta
cp <file> <newfile>,Copiar un archivo en la carpeta actual
cp <file>~/<dir>/<newfile>,Copiar un archivo en la carpeta y cambiar el nombre del archivo copiado
«cp -R <dir> <«»new dir»»>»,Copiar una carpeta en una nueva carpeta con espacios en el nombre del archivo
cp -i <file><dir>,Le avisa antes de copiar un archivo con un mensaje de advertencia de sobrescritura
cp <file1> <file2> <file3>/Users/<dir>,Copia varios archivos en una carpeta
ditto -V [folder path][new folder],Copia el contenido de una carpeta a una nueva carpeta. El comando «-V» muestra una línea de estado por cada archivo copiado.
rm <file>,Borra un archivo de forma permanente
rm -i <file>,Borra un archivo solicitando confirmación
rm -f <file>,Fuerza la eliminación sin confirmación de un archivo
rm <file1> <file2> <file3>,Borrar varios archivos sin confirmación
mv <file> <newfilename>,Mover/renombrar
mv <file> <dir>,Mueve un archivo a la carpeta (sobreescribiendo el archivo existente con el mismo nombre si existiera)
mv -i <file> <dir>,El comando «-i» muestra un aviso informando que va a sobreescribir el archivo de destino.
mv *.png ~/<dir>,Mueve todos los archivos PNG de la carpeta actual a una carpeta diferente
,,
[/table]
Gestión de directorios con Terminal
[table]
,,
cd,Directorio de inicio
cd [folder],Cambiar de directorio
cd ~,Directorio principal
cd/,Raíz de la unidad
cd -,Directorio o carpeta anterior por la que ha navegado por última vez
pwd,Mostrar el directorio de trabajo
cd..,Subir al directorio principal
cd../..,Subir dos niveles
,,
[/table]
Listado de archivos y directorios con Terminal
[table]
,,
ls,Mostrar el nombre de los archivos y subdirectorios del directorio
ls -C,Mostrar el nombre de los archivos y subdirectorios del directorio en columnas
ls -a,Listar todas las entradas (incluyendo las que tienen .(punto) y ..(doble punto))
ls -1,Mostrar la lista de archivos en formato de una entrada por línea
ls -F,Mostrar una / (barra) inmediatamente después de cada ruta que sea un directorio
ls -S,Ordenar los archivos o entradas por tamaño
ls -l,Lista en formato largo. Incluye el modo de archivo; el nombre del propietario y del grupo; la fecha y la hora en que se modificó el archivo; el nombre de la ruta; etc.
ls -l /,Lista del sistema de archivos desde la raíz con enlaces simbólicos
ls -lt,Lista de los archivos ordenados por tiempo de modificación (el más reciente primero)
ls -lh,Listado largo con tamaños de archivos legibles en KB; MB o GB
ls -lo,Lista de los nombres de archivos con tamaño; propietario y banderas
ls -la,Lista detallada del contenido de los directorios (incluidos los archivos ocultos)
,,
[/table]
Atajos de teclado en Terminal
[table]
,,
Tab,Autocompletar nombres de archivos y carpetas
Ctrl + A,Ir al principio de la línea en la que estás escribiendo
Ctrl + E,Ir al final de la línea en la que estás escribiendo
Ctrl + U,Borrar la línea anterior al cursor
Ctrl + K,Borrar la línea después del cursor
Ctrl + W,Borrar la palabra antes del cursor
Ctrl + T,Intercambiar los dos últimos caracteres antes del cursor
Esc + T,Intercambiar las dos últimas palabras antes del cursor
Ctrl + L,Borrar la pantalla
Ctrl + C,Detener lo que se esté ejecutando
Ctrl + D,Salir del shell actual
Option + →,Mover el cursor una palabra hacia adelante
Option + ←,Mover el cursor una palabra hacia atrás
Ctrl + F,Mover el cursor un carácter hacia adelante
Ctrl + B,Mover el cursor un carácter hacia atrás
Ctrl + Y,Pegar lo que fue cortado por el último comando
Ctrl + Z,Poner lo que se está ejecutando en un proceso de fondo suspendido
Ctrl + _,Deshacer el último comando
Option + Shift + Cmd + C,Copiar texto plano
Shift + Cmd + V,Pegar la selección
exit,Terminar una sesión de shell
,,
[/table]
Historial de comandos
[table]
,,
Ctrl + R,Búsqueda de comandos utilizados anteriormente
history,Muestra los comandos que hemos escrito previamente
![value],Ejecuta el último comando utilizado que comienza con un valor
!!,Ejecuta el último comando utilizado
,,
[/table]
Procesos de Terminal
[table]
,,
ps -ax,Muestra los procesos que se están ejecutando actualmente. El comando «a» muestra los procesos de todos los usuarios y el comando «x» muestra los procesos que no están conectados con la Terminal
ps -aux,Muestra todos los procesos con %cpu; %mem; page in y PID
top,Muestra información en tiempo real sobre los procesos que se están ejecutando
top -ocpu -s 5,Muestra los procesos ordenados por el uso de la CPU y actualizándose cada 5 segundos
top -o rsize,Ordena los procesos por uso de memoria
kill PID,Salir del proceso con ID <PID>. El PID se mostrará como una columna en el Monitor de Actividad
ps -ax | grep <appname>,Buscar un proceso por nombre o PID
,,
[/table]
Comandos de red en Terminal
[table]
,,
ping <host>,Hacer ping al host y mostrar su estado
whois <domain>,Obtener información whois de un dominio
curl -O <url/to/file>,Descarga un archivo a través de HTTP; HTTPS o FTP
ssh <username>@<host>,Establecr una conexión SSH a <host> con el usuario <username>
scp <file><user>@<host>:/remote/path,Copia <archivo> a un <host> remoto
arp -a,Muestra un listado de todos los dispositivos de su red local incluyendo la dirección IP y MAC de todos los dispositivos
ifconfig en0,Muestra la dirección IP y MAC de su dispositivo
traceroute [hostname],Identifica la ruta y los saltos atravesados por los paquetes desde su dispositivo hasta la dirección de destino
,,
[/table]
Homebrew
[table]
,,
brew doctor,Comprobar el sistema para detectar posibles problemas
brew help,Lista de comandos útiles de Homebrew
brew install <formula>|<cask>,Instalar una fórmula
brew uninstall <formula>|cask>,Desinstalar una fórmula
brew list –formula,Listar sólo las fórmulas instaladas
brew deps <formula>|<cask>,Listar todas las dependencias de una fórmula
brew search text|/regex/,Buscar fórmulas mediante regex
brew upgrade <formula>|<cask>,Actualizar la fórmula
brew outdated <formula>|<cask>,Buscar fórmula
brew outdated –formula,Buscar una fórmula obsoleta
brew pin [installed_formula],Anclar una fórmula para que no se actualice
brew unpin [installed_formula],Desanclar para actualizar un paquete
brew cleanup,Elimine los archivos de bloqueo y los paquetes obsoletos de todas las fórmulas
,,
[/table]
Variable de entorno o ruta de acceso
[table]
,,
printenv,Muestra una lista de las variables de entorno actualmente configuradas
echo $PATH,Comprueba el valor de la variable PATH que almacena una lista de directorios con archivos ejecutables
echo $PATH >path.txt,Exporta el directorio de la ruta a un archivo de texto
export PATH=$PATH:absolute/path to/program/,Ejecuta un programa a través de la terminal sólo en la sesión actual.
,,
[/table]