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.txtTenemos los siguientes directorios o carpetas, uno dentro de otro:
/Users/adrigm/www/Y el siguiente fichero:
prueba.txtComo 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.
pwdCuando ejecutamos el comando pwd nos muestra siempre el directorio actual en el que nos encontramos.
 pwd
/Users/adrigm/wwwcdCon 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/pruebaCon esto ya deberías saber navegar por el árbol de directorios.
lsEl comando ls nos permite listar todos los ficheros y directorios que contenga un directorio concreto.
> ls
a.txt      b.txt      otro       prueba.txtAlgunos comandos aceptan modificadores, en el caso de ls podemos usar -a para mostrar los archivos ocultos
> ls -a
.          ..         a.txt      b.txt      otro       prueba.txtTip: 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.txtmkdirEl comando mkdir sirve para crear un nuevo directorio.
> mkdir prueba
> mkdir prueba
mkdir: prueba: File existsComo 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 prueba3La estructura que tenemos ahora mismo sería así:
- prueba/
    - prueba2/
    - prueba3/touchCon 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 prueba3Tip: No pasa nada si tratamos de acer touch de un archivo que ya existe, será ignorado.
rmPor 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 prueba3Como 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.
globEsto 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 *.txtEl 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 mvPodemos 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.txtcat y clearEl 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.