Skip to content

soncco/guia-consola

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 

Repository files navigation

Guía de la Consola de Linux

Si te dices a ti mismo web developer y no sabes usar la consola, entonces no eres un web developer.

  1. Introducción
  2. Ayuda
  3. Sistema de archivos - Rutas relativas y absolutas - Comandos básicos - Listar directorios - Búsqueda - Permisos - Enlaces simbólicos
  4. Compresión y descompresión de archivos
  5. Editando archivos
  6. Introducción a SSH: Olvídate del FTP
  7. Recursos

El ser desarrollador web el día de hoy requiere dominar herramientas básicas como la consola o terminal para ser más productivo.

Los sistemas UNIX proveen navitamente terminales con los cuales podemos hacer muchas de las operaciones que hacemos desde una GUI.

Esta pequeña guía está enfocada a los comandos más usados por los desarrolladores web y también tiene la intención de ayudar a novatos a su uso.

[ Volver al índice ]

Podemos obtener ayuda sobre un comando de las siguientes maneras:

Comando man

# Muestra el manual del comando
$ man <comando>

Opción --help

# Muestra la ayuda del comando
$ <comando> --help

Desde la web

Explain Shell, un sitio que permite explicar específicamente la mayoría de comandos.

[ Volver al índice ]

Olvidémonos de C:, D:, E:, etc :)

En Linux, si existe el usuario braulio, entonces también existe una carpeta en la ruta /home/braulio.

Crearemos una carpeta dentro de braulio llamada images.

Entonces podemos acceder a estas carpetas mediante:

Ruta absoluta

# Para acceder a la carpeta images
$ cd /home/braulio/images

# Para acceder a la carpeta braulio
$ cd /home/braulio

# Para acceder a la carpeta home
$ cd /home

Donde el / inicial se refiere a la raiz del sistema de archivos.

Rutas relativas

# Si estuviera en la carpeta /home/braulio, accedo a images con:
$ cd images
$ cd ~/images
$ cd ./images

# Si estoy en la carpeta /home/braulio/images regreso a la carpeta padre con:
$ cd .. # /home/braulio

# Y a la carpeta padre del padre con:
$ cd ../.. # /home

Donde:

  • El ~ significa la carpeta del usuario, es decir, /home/braulio.
  • El . se refiere a la carpeta en sí misma.
  • El .. se refiere a la carpeta padre.

[ Volver al índice ]

Creación de archivos y directorios

# Creamos el archivo index.html
$ touch index.html

# Creamos el directorio logs
$ mkdir logs

# Creamos varios directorios
$ mkdir media templates

# Creamos directorios dentro de directorios, aunque no existan
$ mkdir -p public/{images,css,js} # Crea el archivo public y dentro de este la carpeta images, css y js

Moverse entre directorios

# Cambiar a cierto directorio
$ cd <directorio>

# Ir al directorio padre
$ cd ..

# Ir al directorio /home/braulio desde cualquier lugar
$ cd ~
$ cd

# Ir al directorio raiz
$ cd /

Copiar, mover, renombrar, borrar

# Copiar directorio
$ cp braulio braulito
# Ahora tengo dos directorios, uno llamado braulio y otro braulito

# Copiar archivos
$ cp index.html inicio.html
# Ahora tengo dos archivos, uno llamado index.html y otro inicio.html

# Copiar archivos dentro de un directorio a otro
$ cp braulio/* otrodirectorio

# Copiar sólo los archivos html
$ cp braulio/*.html otrodirectorio

# Renombra la carpeta braulito a brau
$ mv braulito brau

# Mueve la carpeta brau al directorio padre
$ mv brau ..

# Mueve la carpeta index que está en la carpeta padre a mi directorio actual
$ mv ~/brau .

# Si no funciona podemos usar el parámetro -f (Force)
$ mv -f ~/brau .

# Borra un archivo
$ rm inicio.html

# Borra los archivos .html
$ rm *.html

# Borra una carpeta
$ rm -rf braulio

Descarga de archivos

# Descargar un archivo usando wget
$ wget http://nodejs.org/dist/v0.10.22/node-v0.10.22.tar.gz

# Descargar un archivo usando curl
$ curl http://nodejs.org/dist/v0.10.22/node-v0.10.22.tar.gz

Para los curiosos

# Ver el espacio ocupado en la carpeta actual
$ du

# Lo mismo pero para humanos
$ du -hs

# Ver el tamaño de cierto archivo
$ du -hs index.html

# Ver de cierta carpeta
$ du -hs braulio

# Ver mi directorio actual
$ pwd

# Ver el contenido de un archivo página por página
$ less archivo.html
# Después de verlo podemos salir presionando q

# Concatenar el contenido de varios archivos y mostrarlos
$ cat archivo.html estilo.css

# Ver desde donde se ejecuta un comando
$ which cat
# /bin/cat

# Ver como funciona cierto comando
$ type ls
# ls es un alias de 'ls --color=auto' (en Ubuntu)

# Ver todos los comandos que he escrito desde el inicio de los tiempos
$ less ~/.bash_history

[ Volver al índice ]

# Muestra carpetas y archivos en el directorio actual
$ ls

# Muestra carpetas y archivos en un directorio
$ ls <directorio>

# Muestra las carpetas y archivos incluyendo los ocultos, y los muestra en forma de columnas.
$ ls -la

# Similar al anterior en Ubuntu
$ ll

# Puedes crear tu propio comando con
$ alias myll='ls -la'

# Y lo usas con
$ myll

# Ver la salida anterior mostrando cierto patrón
$ ll | grep html
# Muestra la lista resaltando todos los que contienen el string html en su nombre

# Guardar la salida a un archivo
$ ll > listado1.txt
# Se crea un archivo listado1.txt con la salida de ll

[ Volver al índice ]

# Muestra todos los archivos y carpetas recursivamente dentro del directorio actual
$ find

# Lo mismo pero más complicado
$ find .

# Muestra recursivamente solo los archivos que tengan .html en la carpeta actual
$ find . -name \*.html

# Lo mismo
$ find . -name '*.html'

# Lo mismo pero con grep
$ find . | grep .html

# Lo mismo pero en otra carpeta
$ find <otracarpeta> | grep .html

# El comando locate guarda una base de datos de todos los archivos y carpetas que tenemos, actualiza estos cada cierto tiempo
# Para actualizarlo ahora mismo

$ updatedb

# Para encontrar cierto archivo o carpeta con el nombre brau
$ locate brau

[ Volver al índice ]

Si usamos el listado en esta carpeta lo que encontremos es:

drwxr-xr-x  3 brau brau  4096 nov 22 09:35 ./
drwxrwxr-x 33 brau brau  4096 nov 21 23:13 ../
drwxrwxr-x  8 brau brau  4096 nov 22 10:18 .git/
-rw-rw-r--  1 brau brau 11325 nov 21 23:13 LICENSE
-rw-rw-r--  1 brau brau  6920 nov 22 10:18 README.md

Vemos 7 columnas las cuales indican:

  1. Permisos
  2. Directorios
  3. Usuario
  4. Grupo
  5. Tamaño en bytes
  6. Fecha de modificación
  7. Archivo o directorio

Tomando la primera columna la dividimos en cuatro subcolumnas y las separamos por | para explicarlo mejor, en el caso del archivo README.md

-|rw-|rw-|r--
  • La primera columna muestra - y nos indica que README.md es un archivo, caso contrario sería un directorio y mostraría d.

  • La segunda columna muestra rw- y nos indica que este archivo tiene permisos de lectura (r), de escritura (w), mas no de ejecución(x) por parte del usuario.

  • La tercera columna muestra rw- y nos indica que este archivo tiene permisos de lectura (r), de escritura (w), mas no de ejecución(x) por parte del grupo.

  • La tercera columna muestra r- y nos indica que este archivo tiene permisos de lectura (r), mas no de escritura (w) ni de ejecución(x) por parte de otros.

Cambiando permisos

Cada permiso está representado por un número de la siguiente manera:

  • Read (r) vale 4
  • Write (w) vale 2
  • Execute (x) vale 1

Sabiendo esto puedo cambiar los permisos del archivo index.html:

# Cambiando los permisos de index.html
$ chmod 775 index.html

Donde:

  • El primer 7 viene de 4+2+1, es decir, que index.html tiene permisos de rwx para el usuario.
  • Igual que el anterior pero para el grupo.
  • El 5 viene de 4+1, es decir, que index.html tiene permisos de r-x para otros.

Para los directorios:

# Cambiando los permisos de la carpeta braulio
$ chmod 444 braulio
# Ahora la carpeta braulio es de sólo lectura.

# Cambiando los permisos de la carpeta Braulio y de todo su contenido recursivamente
$ chmod -R 444 braulio 

Cambiando de propietario y grupo

# index.html pertenecía al usuario brau, ahora pertenecerá al usuario deicy
$ chown deicy index.html

# index.html pertenecía al grupo brau, ahora pertenecerá al grupo deicy
$ chgrp deicy index.html

# Juntando ambos comandos
$ chown deicy:deicy index.html

Cambiando de usuario

# Estoy con el usuario braulio, y quiero usar el usuario deicy
$ su deicy

# Quiero ejecutar los comandos como root
$ sudo mkdir carpeta
# Crea una carpeta como superman

[ Volver al índice ]

Los enlaces simbólicos sirven para tener una referencia a un archivo o carpeta y acceder a esta sin tener que ir a la ruta.

El ejemplo más básico lo vemos en los hostings que usan CPanel, donde encontramos la carpeta public_html y el enlace simbólico www, si entramos a ambos, veremos el mismo contenido.

# Creamos el enlace simbólico www para public_html
$ ln -ls ~/public_html ~/www

[ Volver al índice ]

Descompresión

# Archivos tar.gz
$ tar -zxf archivo.tar.gz

# Archivos gz
$ gzip -d archivo.gz

# Archivos zip
$ unzip archivo.zip

Compresión

# Empaqueto y comprimo la carpeta braulio y la llamo archivo.tar.gz
$ tar -czf archivo.tar.gz braulio

# Comprimo la carpeta braulio y la llamo archivo.gz
$ gzip -q archivo.gz

# Comprimo la carpeta braulio y la llamo archivo.zip
$ zip archivo.zip archivo

[ Volver al índice ]

# Usando nano
$ nano index.html

# Usando vi
$ vi index.html

# Usando vim
$ vim index.html
  • En nano editamos el archivo y lo guardamos presionando Ctrl + O, salimos con Ctrl + X.
  • En vi o vim, para editar presionamos la tecla i, editamos lo que necesitamos, presionamos la tecla Esc y guardamos y salimos presionando :wq.

Más información en los Recursos.

[ Volver al índice ]

SSH (Secure Shell) es la manera rápida de acceder a equipos remotos y manejarlos mediante la consola.

Llaves SSH

# Genero una llave SSH
$ ssh-keygen -t rsa -C "braulio@soncco.com"
  • Primero nos pide un lugar donde estará guardado nuestra llave, generalmente está en el directorio ~/.ssh
  • Luego nos pide una contraseña, ponemos la que nos guste.
  • Se han creado dos archivos:
    • ~/.ssh/id_rsa (La clave privada)
    • ~/.ssh/id_rsa.pub (La clave pública)

Acceso remoto, olvidándonos de FTP

Pronto

[ Volver al índice ]

Comandos

Edición

  • Open VIM - Tutorial interactivo para aprender VIM

Tips

[ Volver al índice ]


17 Y si hay errores, son errores del hombre. Mas he aquí, no sabemos que haya errores; no obstante, Dios sabe todas las cosas; por tanto, cuídese aquel que condene, no sea que corra peligro del fuego del infierno. Mormon 8:17

About

Guía de uso de la consola de Linux para desarrolladores web.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages