Muchos usuarios que comienzan en el desarrollo web o están empezando con tecnologías como Node.js y nunca habían utilizado un terminal pueden sentirse algo perdidos al tratar de utilizar estas herramientas. Incluso diseñadores que quieren usar herramientas para la automatización de tareas como Gulp o Grunt pueden encontrar dificultades por no haber usado nunca una consola de comandos.
En este artículo vamos a tratar de explicar los comandos más relevantes para poder utilizar el terminal.
Usuarios de Windows: Estos comandos son para Unix, en los que están basados Linux y OSX, pero los usuarios de Windows los pueden usar con ciertas terminales que los traen incorporados, yo para Windows utilizo Cmder.
Los sistemas Unix, como OSX y Linux, utilizan un sistema de ficheros que se basa en en directorios y ficheros. En Unix todo archivo que contiene datos es un fichero, el resto son directorios.
Los directorios en Unix se representan con la barra normal /
. Todo lo que acabe en /
es un directorio, el resto son ficheros. Así pues si tenemos algo así:
/Users/adrigm/www/prueba.txt
Tenemos los siguientes directorios o carpetas, uno dentro de otro:
/
Users/
adrigm/
www/
Y el siguiente fichero:
prueba.txt
Como vemos el primer directorio /
no le precede ningún nombre, es el llamado directorio raíz y es el principal nodo del árbol del sistema de archivos todo el resto de directorios y ficheros están dentro de este.
Existen dos directorios especiales en los sistemas Unix que son .
(un punto) y ..
(dos puntos). El directorio .
representa siempre al directorio actual en el que te encuentras y ..
representa siempre el directorio anterior al actual.
pwd
Cuando ejecutamos el comando pwd
nos muestra siempre el directorio actual en el que nos encontramos.
pwd
/Users/adrigm/www
cd
Con el comando cd
nos podemos desplazar entre los directorios.
cd /Users/adrigm/www/prueba/
Podemos usar los directorios especiales para movernos más rápido
> cd ./prueba
> pwd
/Users/adrigm/www/prueba
> cd ..
> pwd
/Users/adrigm/www
> cd ..
> pwd
/Users/adrigm
> cd ./www/prueba
> pwd
/Users/adrigm/www/prueba
Con esto ya deberías saber navegar por el árbol de directorios.
ls
El comando ls
nos permite listar todos los ficheros y directorios que contenga un directorio concreto.
> ls
a.txt b.txt otro prueba.txt
Algunos comandos aceptan modificadores, en el caso de ls
podemos usar -a
para mostrar los archivos ocultos
> ls -a
. .. a.txt b.txt otro prueba.txt
Tip: En Unix todos los directorios que empiezan por .
se consideran ocultos.
También podemos usar el modificador -l
para que nos muestre información detallada. O incluso una combinación de ambos.
> ls -l
-rw-r--r-- 1 adrigm _www 0 30 may 05:21 a.txt
-rw-r--r-- 1 adrigm _www 0 30 may 05:21 b.txt
drwxr-xr-x 2 adrigm _www 68 30 may 05:21 otro
-rw-r--r-- 1 adrigm _www 0 30 may 05:21 prueba.txt
> ls -al
drwxr-xr-x 6 adrigm _www 204 30 may 05:21 .
drwxr-xr-x 9 adrigm _www 306 30 may 04:47 ..
-rw-r--r-- 1 adrigm _www 0 30 may 05:21 a.txt
-rw-r--r-- 1 adrigm _www 0 30 may 05:21 b.txt
drwxr-xr-x 2 adrigm _www 68 30 may 05:21 otro
-rw-r--r-- 1 adrigm _www 0 30 may 05:21 prueba.txt
mkdir
El comando mkdir
sirve para crear un nuevo directorio.
> mkdir prueba
> mkdir prueba
mkdir: prueba: File exists
Como vemos la segunda vez que intentamos crear el directorio nos avisa de que ya existe. Una vez creado podemos movernos dentro de el y crear otro nuevo con el mismo nombre o con otros.
> cd prueba
> mkdir prueba2 prueba3
> ls
prueba2 prueba3
La estructura que tenemos ahora mismo sería así:
- prueba/
- prueba2/
- prueba3/
touch
Con touch
podemos crear nuevos archivos vacíos.
> touch a.txt
> touch b.txt c.html d.js
> ls
a.txt b.txt c.html d.js prueba2 prueba3
Tip: No pasa nada si tratamos de acer touch de un archivo que ya existe, será ignorado.
rm
Por contrapartida el comando rm
nos permite borrar archivos.
> rm c.html
> rm a.txt b.txt
> rm prueba2
rm: prueba2: is a directory
> ls
d.js prueba2 prueba3
Como vemos, nos ha permitido borrar los archivos, pero no el directorio. Para borrar un directorio debemos hacer uso del modificador -R
que borra un directorio y su contenido.
> rm -R ./prueba2
> ls
d.js prueba3
¡Cuidado! Cuando se borra un archivo con el comando rm
, se borra definitivamente, no hay ninguna papelera de reciclaje.
Si un archivo se nos resiste podemos forzar su borrado con rm -f
.
De aquí viene el mítico comando temido de rm -Rf /
que se supone que borraría todo el disco duro. Digo se supone porque los sistemas modernos viene con protección para que no lo hagas. De todas formas recomendamos no probarlo, por si acaso.
glob
Esto no es un comando, sino un paquete de Unix para la selección de varios archivos basados en patrones. Imaginemos que tienes un directorio con muchos archivos con extensión .txt
y muchos otros con extensión .html
y queremos borrar todos los archivos .txt
. Lo podemos hacer usando el patrón rm *.txt
> touch 1.txt 2.txt 3.txt
> ls
1.txt 2.txt 3.txt
> rm *.txt
El patrón *
quiere decir cualquier texto, es decir, se leería algo asi como: Borra todos los archivos que empiecen por cualquier texto seguido de .txt.
También podríamos usarlo al final file*
. Aquí estamos diciendo: Borra cualquier archivo que empiece por file seguido de cualquier otra cosa. Ojo, nada también es cualquier otra cosa, por lo que un archivo llamado file solamente también sería borrado.
Existen muchos más patrones aparte de *
, pero se escapan del objetivo introductorio de este artículo. Aquí puedes aprender más sobre ellos:
cp
y mv
Podemos usar el comando cp
para copiar varios archivos de un directorio a otro o incluso para duplicar archivos. Del mismo modo podemos usar mv
para mover archivos, su funcionamiento es igual que el de cp
, pero borrar el archivo origen.
Dejo una secuencia de ejemplos de uso en la consola, en la que puedes ver como funcionan.
> touch 1.txt 2.txt 3.txt
> ls
1.txt 2.txt 3.txt
> rm *.txt
> ls
> touch 1.txt 2.txt
> mkdir otro
> cp 1.txt ./otro
> ls ./otro
1.txt
> cp 2.txt 3.txt
> ls
1.txt 2.txt 3.txt otro
> mv 3.txt ./otro
> ls
1.txt 2.txt otro
> ls ./otro
1.txt 3.txt
> mv 1.txt a.txt
> ls
2.txt a.txt otro
> mv *.txt ./otro
> ls
otro
> ls ./otro
1.txt 2.txt 3.txt a.txt
cat
y clear
El comando clear
sirve para limpiar la ventana de terminal. Algo no muy útil, pero que puede dar cierto orden en algunos casos.
Por su parte el comando cat
vuelca el contenido de un fichero en la terminal. Puede servir para visualizar rápidamente el contenido de un fichero. Su verdadero potencia está junto a los Pipes y a los patrones, para filtrar contenido de un archivo y obtener la información que nos interesa, pero está mas allá de este tutorial introductorio.
Con estos comandos básicos ya estás listo para probar gestores de paquetes como NPM, Bower, etc o gestores de tareas como Gulp y Grunt.