Miércoles 23/04/2014 13:12:39 PM

Push the limits. - "Anónimo"

Dirección de correo

Creative Commons License

Guía de comandos en GNU/Linux

  Consideraciones previas   Listar archivos del sistema  
  Saber en que directorio estamos   Moverse por directorios  
  Copiar archivos   Mover archivos  
  Borrar archivos   Borrar directorios  
  Crear directorios   Ver el contenido de archivos  
  Comprimir y descomprimir archivos   Empaquetar directorios. Comando tar  
  Ver espacio libre en sistemas de ficheros   Ver tamaño de archivos y carpetas  
  Ver procesos   Matar procesos  
  Memoria disponible   Rendimiento del sistema  
  Búsqueda de ficheros, comando find   Programar tareas  
  Comparar archivos y directorios con diff   Permisos  
  Conocer la versión de GNU/Linux instalada   Creación de contraseñas  
  Como saber que dirección IP tenemos   Conocer la dirección IP de un dominio  
  Conexiones de red activas y puertos que están a la escucha   Conocer que equipo enruta los paquetes  
  Historial del manual      

Consideraciones previas

Antes de empezar con los comandos hay que tener en cuenta que en GNU/Linux el interprete de comandos es case-sesitive. Esto quiere decir que no es lo mismo escribir ls que Ls. El sistema diferencia entre mayúsculas y minúsculas.

A la hora de trabajar con ficheros se pueden usar caracteres comodín. Como caracteres comodín están los siguientes:

*

El símbolo asterisco significa cualquier cadena de caracteres. Por ejemplo si se pone:

      ls -la lis*

Se listaran todos los directorios y archivos que empiecen por lis, por ejemplo lista.txt, listado ...

?
El símbolo de interrogación significa cualquier caracter. Por ejemplo si se pone:

      ls -la l?
Se listaran todos los directorios y archivos que empiecen por l y que tenga cualquier otro caracter, por ejemplo li, la ...

[]
Los corchetes siginifican un caracter y se puede sustituir por aquello que se ponga dentro de los corchetes. Por ejemplo si se pone ls -la in[a-z]* listaría todos aquellos ficheros que empiecen por in que su tercer caracter sea una letra que este entre la a y la z y luego cualquier cadena de caracteres.

      ls -la l?

Se listaran todos los directorios y archivos que empiezen por l y que tenga cualquier otro caracter, por ejemplo li, la ...

Sí se pone [ABC] al hacer ls -la a[ABC]* se listarán todos los archivos que tengan la primera letra una a la segunda debe ser A,B o C y después cualquier cadena de caracteres.

Las opciones de los comandos se pueden concatenar para que se hagan varias opciones a la vez. Por ejemplo si ponemos ls -lah nos mostrara los todos los archivos que hay en el directorio en formato largo y además nos dará su tamaño. Hemos puesto tres opciones y se han ejecutado las tres a la vez al ejecutar ls.

Listar archivos del sistema

Para listar archivos del sistema se usa el comandos ls.

Las opciones más usadas con este comando son las siguientes:

   -l

Muestra información detallada sobre los archivos que hay en una ruta que se le indique. Se muestran los permisos, el número de inodos, propietario del archivo, grupo al que pertenece el archivo, tamaño en bytes del archivo, fecha de última modificación del archivo y nombre del archivo.
   -a
Muestra todos los archivos y directorios de la ruta que se le indique. Muestra también los archivos ocultos que en GNU/Linux son aquellos que empiezan por .
   -h
Muestra la información del tamaño de los archivos en bytes, KB, MB o Gygas en función de lo que ocupe el archivo.
   -t
Lista los archivos de forma cronológica. Lista los archivos de más nuevos a más antiguos.
   -r
Invierte el orden de ordenación que le hayamos puesto al ls.
   -R
Lista de forma recursiva lo que hay en un directorio.
   -S

Lista los archivos por tamaño poniendo en primer lugar los más grandes.

Estas opciones se pueden combinar de forma que si queremos ver todo lo que hay en un directorio, ver los archivos ocultos y que los ordene cronologicamente habría que poner:

      ls -lat


Saber en que directorio estamos

Para saberlo se hace sin más poniendo el comando pwd. Esto muestra toda ruta hasta el directorio en el que nos encontramos.

Como ejemplo sería esto:

      #pwd
      /home/usuario


Moverse por directorios

Para movernos por la estructura de directorios se hace con el comando cd.

La forma de usarlo es la siguiente:

      cd /directorio

A la hora de movernos por los directorios usando el comando cd se pueden usar rutas relativas o absolutas:

  1. Rutas relativas: Son aquellas que se contruyen a partir del directorio en el que nos encontramos.
    Como ejemplo si tenemos la siguiente estructura de directorios:
    • /directorio1/directorio2/directorio3

    Sí estamos en el directorio2 y queremos ir al directorio3 se pondría:
          cd directorio3
    Sí ahora queremos ir al directorio1 se haría de la siguiente forma:
          cd ../../
    Cuando se pone ../ se baja un nivel en la estructura de directorios. En el ejemplo de arriba bajariamos primero al directorio2 y luego del directorio2 al directorio1.
  2. Rutas absolutas: Son aquellas que se contruyen poniendo toda la ruta hasta el directorio que nos queremos mover.
    Como ejemplo si tenemos la siguiente estructura de directorios:
    • /directorio1/directorio2/directorio3

    Sí estamos en el directorio2 y queremos ir al directorio3 se pondría:
          cd /directorio1/directorio2/directorio3
    Sí ahora queremos ir al directorio1 se haría de la siguiente forma:
          cd /directorio1
    Hay que poner toda la ruta hasta el directorio.
Sí ponemos el comando cd solo lo que hace es llevarmos a nuestro directorio home. El directorio home es el directorio que tiene asociado cada usuario para trabajar.

Copiar archivos

Para copiar archivos o directorios de un sitio a otro se usa el comando cp. La sintaxis del comando sería:

      cp archivo1 archivo2 /directorio_a_copiar_archivos

O sí queremos copiar directorios sería:

      cp -r directorio1 directorio2 /directorio_a_copiar_archivos

A la hora de poner la ruta de los ficheros o de la carpeta a la que se van a copiar los archivos se pueden usar tanto rutas absolutas como relativas.

Opciones del comando cp:

   -v

Muestra información sobre la copia de los archivos o directorios.
   -i
Sí lo que se va a copiar existe en el destino pregunta si se quiere sobreescribir.
   -r
Copia de forma recursiva lo que hay en un directorio. Sí ponemos este comando se copiarían el directorio y subdirectorios que contenga la carpeta con todos sus directorios y ficheros al destino.

Mover archivos

Para mover archivos o directorios de un sitio a otro se usa el comando mv. La sintaxis del comando sería:

      mv archivo1 archivo2 /directorio_a_copiar_archivos

O si queremos copiar directorios sería:

      mv directorio1 directorio2 /directorio_a_copiar_archivos

A la hora de poner la ruta de los ficheros o de la carpeta a la que se van a copiar los archivos se pueden usar tanto rutas absolutas como relativas.
El comando mv se puede usar también para cambier el nombre de un fichero o directorio. Sí ponemos como nombre de archivo origen el nombre del archivo del que queremos cambiar el nombre y como destino el nuevo nombre que queremos poner con eso ya cambiariamos el nombre. Por ejemplo sí tenemos el archivo carta.txt y lo queremos cambiar a nota.txt habría que poner:

      mv carta.txt note.txt

Opciones del comando mv:

   -v

Muestra información sobre la copia de los archivos o directorios.
   -i
Sí lo que se va a copiar existe en el destino pregunta sí se quiere sobreescribir.
   -f
Sí existe lo que se quiere copiar en el destino lo sobreescribe sin preguntar.

Con el comando mv se copian los directorios de forma recursiva sin poner ningún argumento.

Borrar archivos

Para borrar archivos se usa el comando rm. La sintaxis del comando sería:

      rm archivo1 archivo2

A la hora de poner la ruta del fichero o ficheros a borrar se pueden usar tanto rutas absolutas como relativas.

Opciones del comando rm:

   -v

Muestra información sobre el borrado de los archivos.
   -r
Permite hacer borrados recursivos. Con esta opción se pueden borrar también directorios.
   -i
Pregunta antes de borrar los archivos si estamos seguros de querer borrarlos.
   -f
Borrar los archivos si hacer ninguna pregunta de si queremos borrarlos.

Borrar directorios

Para borrar directorios se usa el comando rmdir. Para borrar directorios con este comando los directorios han de estar vacios. La sintaxis del comando sería:

      rmdir directorio1 directorio2 ...

A la hora de poner la ruta del directorio a borrar se pueden usar tanto rutas absolutas como relativas.

Opciones del comando rmdir:

   -v

Muestra información sobre el borrado de los directorios.
   -p
Borra los directorios que le pongamos en la ruta de borrado del directorio. Por ejemplo si ponemos rm -r dir1/dir2/dir3 borraría el dir3 luego el dir2 y luego el dir1.

Crear directorios

Para crear directorios se usa el comando mkdir. La sintaxis del comando sería:

      mkdir directorio1 directorio2 ...

A la hora de poner la ruta del directorio a borrar se pueden usar tanto rutas absolutas como relativas.

Opciones del comando mkdir:

   -v

Muestra información sobre el directorio creado.
   -p
Crea los directorios que le pongamos en la ruta de creación del directorio. Por ejemplo si ponemos mkdir -p dir1/dir2/dir3 crearía el dir1 luego el dir2 y luego el dir3.
   -m
Permite asociarle permisos al directorio nada más crearlo. Por ejemplo si ponemos:

      mkdir -m 777 directorio

Darímos permisos de lectura, ejecución y escritura a todo el mundo.


Ver el contenido de archivos

Para ver el contenido de un archivo existen varios comandos. Estos comandos solo permiten ver el contenido no permiten modificar el fichero. Los más usados serían los siguientes:
  1. cat
    Este comando permite ver el contenido completo de un archivo. Muestra el contenido de un archivo todo seguido sin detenerse por lo que suele pasar que no se vean todas las líneas ya que si un fichero posee 1000 líneas estas no entran en la pantalla y solo se verán las últimas líneas. La sintaxis es cat nombreArchivo. Como opciones del comando habría las siguientes:

       -n

    Muestra el número de línea.

       -E

    Muestra el símbolo $ al final de cada línea.

       -T

    Muestra las tabulaciones con el caracter ^I.
  2. more
    Muestra el contenido de un fichero y muestra el número de líneas que entran en la pantalla, si en la pantalla entra como máximo 50 líneas muestra 50 líneas y se detiene. Para seguir avanzando basta con pulsar la barra espaciadora y continua mostrando líneas. Sí se quiere dejar de ver el contenido del fichero se pulsa la tecla q y se sale.
    La sintaxis del comando es more nombreArchivo1 nombreArchivo2 ....
  3. less
    Muestra el contenido de un fichero y muestra el número de líneas que entran en la pantalla, si en la pantalla entra como máximo 50 líneas muestra 50 líneas y se detiene. Para seguir avanzando basta con pulsar la barra espaciadora y continua mostrando líneas. Sí se quiere dejar de ver el contenido del fichero se pulsa la tecla q y se sale.
    Con este comando además se pueden hacer busquedas poniendo /palabraAbuscar. Sí hacemos esto resaltara en el archivo todas las coincidencias que haya encontrado.
    Además funcionan las teclas de flecha arriba para subir una línea, flecha abajo para bajar una línea, AvPag para avanzar una página y RePag para retroceder un página.
    La sintaxis del comando es more nombreArchivo1 nombreArchivo2 ...
  4. head
    Muestra las 10 primeras líneas de un fichero. Como opciones del comando habría las siguientes:    -c
    Muestra los caracteres que haya en los primeros bytes que le pongamos. Por ejemplo si ponemos:

       head -c 8 archivo1

    Mostrara los primeros 8 bytes del archivo.

       -n
    Muestra las primeras líneas que le indiquemos. Por ejemplo si ponemos:

       head -n 8 archivo1

    Mostrará las primeras 8 líneas del archivo.

       -n
    Muestra las primeras líneas que le indiquemos. Por ejemplo si ponemos:

       head -n 8 archivo1

    Mostrara las primeras 8 líneas del archivo.

       -q
    No muestra en la primera línea el nombre del fichero.
       -v
    Muestra en la primera línea el nombre del fichero.

    La sintaxis del comando es head nombreArchivo1 nombreArchivo2 ...
  5. tail
    Muestra las 10 últimas líneas de un fichero. Como opciones del comando habría las siguientes:
       -c
    Muestra los caracteres que haya en los últimas bytes que le pongamos. Por ejemplo si ponemos:
       tail -c 8 archivo1
    Mostrara los últimos 8 bytes del archivo.

       -n
    Muestra las primeras líneas que le indiquemos. Por ejemplo si ponemos:
       tail -n 8 archivo1
    Mostrara las últimas 8 líneas del archivo.

       -n
    Muestra las últimas líneas que le indiquemos. Por ejemplo si ponemos:
       tail -n 8 archivo1
    Mostrara las últimas 8 líneas del archivo.

       -q
    No muestra en la primera línea el nombre del fichero.

       -v
    Muestra en la primera línea el nombre del fichero.

    La sintaxis del comando es tail nombreArchivo1 nombreArchivo2

Comprimir y descomprimir archivos

Para comprimir y descomprimir archivos están los comandos gzip y bzip2. Estos dos comandos solo permiten comprimir y descomprimir un archivo a la vez y no pueden comprimir y descomprimir directorios.

Vamos a empezar comentando primero gzip.

Gzip

Gzip se complementa con el comando gunzip que lo que hace es descomprimir archivos comprmidos con gzip. Sí queremos comprimir un archivo con gzip lo haríamos de la siguiente forma:

      gzip documento

Esto crearía el archivo documento.gz. El archivo documento desaparece y se crea documento.gz que es el archivo comprimido.

Ahora para descomprimirlo habría que hacer lo siguiente:

      gzip -d documento.gz

O también:

      gunzip documento.gz

Esto descomprimiría el archivo documento.gz y crearía el archivo documento.
Gzip además posee más opciones como las siguientes, algunas de ellas son aplicables también al comando gunzip:

   -d

Descomprime un archivo comprimido con gzip.
   -l
Muestra información sobre el archivo comprimido que le pasemos como parametro.
   -r
A esta opción se le pasa como parametro un directorio. Gzip navegara por ese directorio de forma recursiva y comprimira todos los archivos que encuentre dentro de la estructura de directorios.
   -t
Comprueba que un archivo comprimido con gzip este correcto. Sí se encuentra bien no muestra ningún error y si lo encuentra nos informa de cual es el problema.
   -v
Muestra el nombre y el porcentaje de reducción por cada fichero comprimido o descomprimido.
Ahora continuamos con bzip2.
Bzip2

Bzip se complementa con el comando bunzip2 que lo que hace es descomprimir archivos comprmidos con bzip2. Sí queremos comprimir un archivo con bzip lo haríamos de la siguiente forma:

      bzip2 documento

Esto crearía el archivo documento.bz2. El archivo documento desaparece y se crea documento.bz2 que es el archivo comprimido.

Ahora para descomprimirlo habría que hacer lo siguiente:

      bzip2 -d documento.bz2

O también:

      bunzip2 documento.bz2

Esto descomprimiría el archivo documento.bz2 y crearía el archivo documento.

Bzip2 además posee más opciones como las siguientes, algunas de ellas son aplicables también al comando bunzip2:

   -d

Descomprime un archivo comprimido con bzip2.
   -l
Muestra información sobre el archivo comprimido que le pasemos como parametro.
   -t
Comprueba que un archivo comprimido con gzip este correcto. Sí se encuentra bien no muestra ningún error y si lo encuentra nos informa de cual es el problema.
   -v
Muestra el nombre y el porcentaje de reducción por cada fichero comprimido o descomprimido.
Al usar cualquiera de los dos comandos al comprimir se genera un fichero .gz y desaparece el archivo de origen, al descomprimirlo se crea el fichero comprimido y desaparece el archivo .gz.

A la hora de comprimir se obtiene mayor ratio de compresión comprimiendo con bzip2.

En los últimos meses se está usando mucho el formato XZ que por ejemplo lo podemos encontrar en el kernel que ahora viene comprimido con ello. Las tasas de compresión son mejores que usando GZ o BZIP2.

XZ

Sí queremos comprimir un archivo con XZ lo haríamos de la siguiente forma:

      xz -z documento

Esto crearía el archivo documento.xz. El archivo documento desaparece y se crea documento.bz2 que es el archivo comprimido.

Ahora para descomprimirlo habría que hacer lo siguiente:

      xz -d documento.xz

XZ además posee más opciones como las siguientes:

   -l

Muestra información del archivo comprimido.
   -0 ... 9
El valor que pongamos es para determinar la compresión. 0-2 compresión rápida, 3-5 compresión buena, 6-9 compresión excelente. A mayor número mejor compresión. El comando sería xz -d -9 nombreArchivo

Empaquetar directorios. Comando tar

El comando tar permite crear a partir de varios ficheros un único archivo que los contiene. También permite empaquetar en un único fichero uno o varios directorios. Sí quisieramos hacer un paquete de la siguiente estructura de directorios directorio1/directorio2/directorio3 habría que poner:

      tar vcf directorioEmpaquetado.tar directorio1

Esto nos pondría en el archivo directorioEmpaquetado.tar toda la estructura de directorios a partir del directorio1 con todos sus archivos.

A diferencia de gzip y bzip2 no desaparece el archivo o directorios que empaquetemos. Ahora si queremos desempaquetar el archivo que acabamos de crear había que poner lo siguiente:

      tar vxf directorioEmpaquetado.tar

Con esta orden desempaquetaríamos el archivo y nos generaría de nuevo la estructura de directorios. Al desempaquetar el archivo .tar no se borra el archivo .tar.
El comando tar se suele usar generalmente para hacer backups y se suele combinar con los comandos gzip y bzip2 para que el archivo que se genere ocupe menos espacio. Para empaquetar y comprimir un directorio se puede hacer en dos pasos empaquetando primero el directorio y luego comprimiendolo o bien en un solo comando.

Sí se quiere hacer con gzip para empaquetarlo y comprimirlo habría que poner:

      tar cfvz directorioEmpaquetado.tar.gz directorio

Ahora para desempaquetarlo y descomprimirlo se haría de la siguiente forma:

      tar xfvz directorioEmpaquetado.tar.gz

Sí quisieramos desempaquetarlo y descomprimirlo a un directorio concreto se haría de la siguiente forma:

      tar zxvf directorioEmpaquetado.tar.gz -C directorioDestino

Sí queremos ver el contenido de un fichero con extensión tar.gz hay que poner:

      tar ztvf directorioEmpaquetado.tar.gz

Ahora para hacer lo mismo pero comprimiendolo con bzip2 habría que poner:

      tar jfvc directorioEmpaquetado.tar.bz2 directorio

Ahora para desempaquetarlo y descomprimirlo se pondría:

      tar jfvx directorioEmpaquetado.tar.bz2

Sí quisieramos desempaquetarlo y descomprimirlo a un directorio concreto se haría de la siguiente forma:

      tar jxvf directorioEmpaquetado.tar.bz2 -C directorioDestino

Sí queremos ver el contenido de un fichero con extensión tar.bz2 hay que poner:

      tar jtvf directorioEmpaquetado.tar.bz2

Sí queremos crear un fichero tar.xz hay que poner:

      tar -cJf directorioEmpaquetado.tar.xz directorio

Sí queremos descomprimir un fichero tar.xz hay que poner:

      tar -Jxvf directorioEmpaquetado.tar.xz


Ver espacio libre en sistemas de ficheros

Sí se quiere saber el espacio libre que tenemos en un dispositivo o en una partición se puede usar el comando df.

Este comando muestra la siguiente información:

  1. Sistema de ficheros del que se muestra la información.
  2. Tamaño del sistema de ficheros.
  3. Espacio usado en el sistema de ficheros.
  4. Espacio libre en el sistema de ficheros.
  5. Porcentaje usado del sistema de ficheros.
  6. Donde se encuentra montado el sistema de ficheros.
El comando tiene los siguientes opciones:

      -h

Muestra la información del tamaño de los archivos en bytes, KB, MB o Gygas en función de lo que ocupe el archivo.

      -k

Muestra la información del tamaño de los archivos en kylobytes.

      -m

Muestra la información del tamaño de los archivos en megabytes.


Ver tamaño de archivos y carpetas

Para ver el tamaño de archivos y carpetas se suele usar el comando du. Este comando tiene los siguientes parámetros:

-h

Muestra la información del tamaño de los archivos en bytes, KB, MB o Gygas en función de lo que ocupe el archivo.

-s

Muestra un resumen para todos los argumentos que se han pasado. Sí pasamos como parámetro un directorio mostrará lo que ocupa el directorio, esto lo hara de forma recursiva.

-a

Muestra el tamaño para todos los fichero, no solo para los directorios. Sí se pasa un directorio como parámetro mostrará el tamaño de cada directorio y de cada fichero contenido en cada uno.

--exclude=patrón

Se puede poner un patrón para que no se tengán en cuenta aquello que coincida con el patrón puesto.

Ejemplos de uso de du:

du -sh directorio: mostrará el tamaño total de un directorio.
du -cah directorio: mostrará el tamaño total de un directorio así como los subdirectorios que halla dentro del directorio. Se muestran también el tamaño de cada fichero contenido en los directorios.
du -sh archivo: muestra el tamaño de un archivo.


Ver procesos

Para ver los procesos que hay corriendo en nuestra máquina se usa el comando ps. Este comando muestra que procesos se está ejecutando así como el estado de los mismos.

Para ver todos los procesos que se están ejecutando se pone:

ps aux

Para buscar si se esta ejecutando algún programa en concreto se pondría:

ps aux | grep programa

Sí quisieramos saber si se está ejecutando apache habría que poner ps aux | grep apache.

Matar procesos

Para matar un proceso que se está ejecutando se usa el comando kill. Para poder matar un proceso es necesario saber cual es su PID (Identificador de proceso). Para obtener el pid se hace con ps, si por ejemplo queremos matar el proceso de XMMS se pondría:

ps aux | grep xmms

Esto nos devuelve una línea con información sobre el proceso, el PID es lo que viene en la segunda columna. Sí por ejemplo el ps nos devuelve 2345 para matar el proceso habría que poner:

kill -9 2345


Memoria disponible

Sí se quiere saber la memoria que tenemos en la máquina hay que ejecutar el comando free. El comando muestra tanto la memoria física del ordenador como la swap.

Para ver la memoria que esta en uso:

free -m

En este caso lo mostrará en megas la memoria, pero se puede ver en bytes pasandole de parámetro una b, con k lo mostrará en KB y con g en GB.

Hay otros parámetros interesantes como -t que nos muestra el total de RAM + SWAP y la opción -s segundos que mostrar la información cada x segundos que le pongamos como parámetro.


Rendimiento del sistema

Para ver el rendimiento del sistema se suele usar el comando top. Este comando muestra el uso de micro, cuanto tiempo lleva arrancada la máquina, procesos corriendo, usos de memoria, usuarios en el sistema, los procesos que más memoria consumen ...

Para salir de top hay que pulsar la tecla "q".
Pulsando la tecla "k" nos pregunta que proceso queremos terminar.
Pulsando la tecla "u" nos pregunta de que usuario queremos ver los usuarios y nos los muestra.
Pulsando la tecla "M" ordena los procesos por consumo de memoria.


Búsqueda de ficheros, comando find

Este comando nos permite realizar la búsqueda de ficheros dentro de nuestro sistema. Su sintaxis básica es la siguiente:

find path -name nombreArchivo(el nombre entre comillas)

Las búsquedas que se realizan con el comando find se hacen de fornma recursiva.
Por ejemplo para encontrar el archivo "prueba" dentro del directorio actual en el que nos encontramos habría que poner lo siguiente:

find . -name "prueba"

El punto significa el directorio actual.

Por defecto la búsqueda del archivo es case-sensitive lo que quiere decir que se buscará el nombre del archivo según se haya escrito diferenciando entre mayúsculas y minúsculas en el nombre de lo que se va a buscar. En el ejemplo anterior hemos buscado el archivo "prueba" pero si hubiese un archivo llamado "pruebA" no nos lo mostraría. Para hacer que busque todos los archivos sin tener en cuenta mayúsculas y minúsculas habrá que escribir el comando de la siguiente manera:

find . -iname "prueba"

El comando find tiene una gran cantidad de opciones, vamos ha enumerar y a explicar las principales:

Ejemplos de busquedas:

Buscar el archivo "abc" en el directorio actual:

find . -name "abc"

Buscar archivos cuyo nombre sea "abc" sin tener en cuentas mayúsculas ni minúsculas:

find . -iname "abc"

Buscar archivos cuya primera letra sea A,B o C en el directorio /etc

find /etc -name "[ABC]*"

Buscar archivos que terminen en "wd" en el directorio /etc, sin importar las mayúsculas y minúsculas y redirigir la salida al fichero find.log

find /etc -iname "*wd" > find.log

Realizar lo mismo de lo anterior solo que mandando los mensajes de error al fichero findErrors.log

find /etc -iname "*wd" 2>findErrors.log

La misma búsqueda que la anterior haciendo que no se muestren los mensajes de error por la pantalla:

find /etc/ -iname "*wd" 2>/dev/null

Buscar en el directorio actual los directorios que hay:

find . -type d

Buscar en el directorio actual los directorios que empiezan por A:

find . -type d -name "A*"

Búsquedas complejas

Hasta ahora las búsquedas que hemos visto son búsquedas sencillas pero ahora voy a poner ejemplos de búsquedas más complejas ayudandonos de pipes.

Buscar en el directorio /etc el archivo "passwd" y buscar dentro si hay un usuario llamado root:

find /etc -name "passwd" | xargs grep "root"

Hacer la misma búsqueda evitando que se muestren mensajes de error por pantalla

find /etc -name "passwd" 2>/dev/null | xargs grep "root"

El comando xargs lo que permite es la ejecución de un comando tomando como parámetro de entrada la entrada standard. Para el ejemplo anterior lo que haría sería buscar el archivo "passwd" dentro del directorio /etc y en el caso de encontrar alguna coincidencia se ejecutaría el comando grep que buscaría la cadena de texto "root". En el caso de que se produzcan errores en la busqueda del fichero "passwd" debido por ejemplo a la falta de permisos para acceder a un determinado directorio estos se mandarán a /dev/null y no veríamos dichos mensajes por la pantalla.

Hacer la misma búsqueda que en el caso anterior pero esta vez que se muestren todos los usuarios del archivo passwd excepto "root":

find /etc -name "passwd" 2>/dev/null | xargs grep -v "root"

Borrar los archivos que empiezen por "A" en el directorio actual y hacia abajo:

find . -type f -iname "A*" | xargs rm

Lo mismo que en el caso anterior pero que se pida confirmación antes de borrar

find . -type f -name "A*" -exec rm -i {} \;

La opción -exec permite realizar lo mismo que sí se pone xargs pero sin usar un pipe. La sintaxis de -exec es la siguiente:

find path -name nombreArchivo -exec comandoAEjecutar {} \;

Cuando se usa la opcion -exec el comando find todos los resultados obtenidos con a exec para que trabaje con cada uno. Lo que pasa es que en algunos sistemas hay un límite en la longitud de la cadena que se le pasa a exec por lo que al rato de estar ejecutandose esta búsqueda termina por error. Para estos casos es mejor utilizar xargs.

He puesto esta opción porque al querer ejecutar el borrado interactivo de los ficheros con xargs no funcionaba bien del todo pues no me dejaba responder a sí quería o no borrar un fichero.

Buscar archivos dentro del nuestro directorio de trabajo que contegan sh en su nombre y ver su información.

find $HOME -name "*sh*" | xargs ls -l

El "$HOME" es una variable del sistema que define donde se encuentra el directorio de trabajo de un usuario. El caracter "~" realiza la misma función.

Buscar aquellos ficheros que han sido modificados en los últimos 14 días:

find . -type f -mtime -14

Sí se quiere buscar más de un fichero con el comando find se hace usando el parámetro -o. Lo que se consigue con este parámetro es hacer busquedas en las que se cumpla o una condición u otra. Por ejemplo para buscar todos los fichero con extensión "xml" y "xsl" del directorio actual se haría de la siguiente forma:

find . -name "*.xml" -o -name "*.xsl"


Programar tareas

Sí se quieren dejar tareas que se ejecuten de forma periódica se puede usar el comando crontab. Para crear o editar un fichero de cron se usa el comando crontab -e. Al escribir este comando se abre un archivo vacio listo para ser editado con VI. En este nuevo fichero se añadirán las tareas que deseemos programar.

La sintaxis de cada línea es la siguiente:

minutos (0 - 59) hora (0 - 23) día del mes (1 - 31) mes (1 - 12) día de la semana (0 - 6, el domingo es 0) comando a ejecutar


Comparar archivos y directorios con diff

En linux podemos comparar el contenido de dos archivos o ver las diferencias entre dos directorios usando el comando diff. La sintaxis básica es la siguiente:

diff fichero1 fichero2

diff directorio1 directorio2

En la salida que se muestra al comparar dos archivos las líneas que comienzan con los caracteres "%<" corresponden a líneas del primer fichero, mientras que las que empiezan con "%>" corresponden a líneas del segundo fichero.

Sí por ejemplo tenemos dos directorios y solo queremos ver que ficheros son diferentes entre los dos habría que poner:

diff -q directorio1 directorio2

Sí por ejemplo ahora queremos comparar dos directorios, queremos ver que ficheros son diferentes, que la búsqueda sea recursiva, nos muestre las diferenicas en dos columnas y enviar la salida a un fichero habría que poner:

diff -ryq directorio1 directorio2 > resultado

Sí al comparar dos archivos se quiere que no se tengan en cuenta las mayusculas y las minusculas hay que poner:

diff -i fichero1 fichero2

Sí al comparar dos archivos no se quiere que se tengan en cuenta los blancos hay que poner:

diff -w fichero1 fichero2


Permisos

En linux podemos dar diferentes tipos de permisos a los ficheros y permisos que tenemos en nuestro sistema. Para ello cada fichero tiene 3 tipos de permisos para cada propietario, grupo y el resto que no pertenecen a los dos anteriores. Los tipos de permisos que podemos encontrar son los siguientes:

r -> permiso de lectura, para un fichero significa que se puede leer el contenido mientras que para un directorio quiere decir que se permite listar el contenido de dicho directorio
w -> permiso de escritura, para un fichero significa que se puede modificar el contenido mientras que para un directorio quiere decir que se pueden crear y borrar contenidos dentro del directorio
x -> permiso de ejecución, para un fichero significa que se puede ejecutar ese fichero y para un directorio quiere decir que se puede acceder al directorio

Sí listamos el contenido de un directorio con "ls -l" podremos ver cuales son los permisos de lo que contiene el directorio:

-rw-r--r-- 1 lostscene lost 4960 Jul 11 12:12 prueba.txt

De lo que se ve en la línea anterior esto es lo que significa cada campo:

- -> indica que se trata de un fichero, sí fuese un directorio se mostraría el caracter "d" y sí fuese un enlace simbólico el caracter "l"
rw- -> esos tres caracteres son los permisos para el propieptario del fichero que en esta caso se llama "lostscene". Los permisos que tendrí son lectura y escritura, no tendría ejecución porque aparace el caracter "-". Cuando no se tiene un permiso se muestra el caracter "-"
r-- -> esos tres caracteres son los permisos para el grupo al que pertenece el fichero que en este caso se llama "lost". Para el grupo tiene el permiso de lectura solamente
r-- -> esos tres caracteres son los permisos para aquellos que no son el propietario ni el grupo al que pertenece el fichero. Para este caso solo se tiene el permiso de lectura

Sí ahora quisieramos cambiar los permisos de ese fichero usaremos el comando "chmod". Este comando se puede usar de varias formas.
Una de ellas se llama forma octal que consiste en que cada permiso tiene un valor, los valores son los siguientes:

permiso de lectura (r) -> vale 4
permiso de escritura (w) -> vale 2
permiso de ejecución (x) -> vale 1

Para dar permisos con la forma octal lo que se hace es sumar lo que vale cada uno de los permisos que vamos a dar. Sí por ejemplo al fichero le queremos dar todos los permisos al propietario, de lectura al grupo y al resto nada lo harímos poniendo "chmod 740 prueba.txt". Primero se pone "chmod" luego los permisos y después a lo que se lo queramos aplicar. Ponemos 740 porque 7 es la suma de los valores de los permisos que le damos al propietario, 4 al grupo y 0 al resto.

permisos para el propietario -> 4 (valor del permiso de lectura) + 2 (valor del permiso de escritura) + 1 (valor del permiso de ejecución) = 7
permisos para el grupo -> 4 (valor del permiso de lectura) + 0 (vale 0 porque no le queremos dar el permiso) + 1 (vale 0 porque no le queremos dar el permiso) = 4
permisos para el resto -> 0 (vale 0 porque no le queremos dar el permiso) + 0 (vale 0 porque no le queremos dar el permiso) + 1 (vale 0 porque no le queremos dar el permiso) = 4

Sí por ejemplo quisieramos dar todos los permisos al usuario, grupo y resto serí "chmod 777 prueba.txt".

La otra forma de dar permisos es indicar al comando chmod a quien se lo queremos dar y que permiso. A quien se lo queremos dar se indica de la siguiente forma:

u -> propietario del fichero
g -> grupo al que pertenece el fichero
o -> aquellos que no son el propietario
a -> a todos

Los permisos se indican de la siguiente forma:

r -> permiso de lectura
w -> permiso de escritura
x -> permiso de ejecución

Para dar, quitar o igualar permiso se indican con los siguiente caracteres:

+ -> se añade un permiso
- -> se quita un permiso
= -> se igualan los permisos

Sí por ejemplo queremos quitar al grupo el permiso de ejecució habría que poner "chmod g-x prueba.txt". Sí queremos dar todos los permisos al propietario sería "chmod u+rwx prueba.txt" y sí por ejemplo al grupo le queremos dar el permiso de lectura y al resto quitarle el permiso de ejecución sería "chmod g+w,o-x prueba.txt".

Conocer la versión de GNU/Linux instalada.

Sí estamos trabajando con una máquina GNU/Linux y queremos saber que versión es basta con ejecutar el siguiente comando:

lsb_release -a


Como generar contraseñas.

Para generar contraseñas en GNU/Linux lo podemos hacer usando el comando pwgen.
Este comando acepta como parámetros de entrada primero la longitud de la contraseña y luego el número de contraseñas que queremos generar.
Por ejemplo sí queremos crear 3 contraseñas de 12 caracteres de longitud sería de la siguiente manera:

pwgen 12 3

Además de los parámetros de entrada descritos arriba podemos añadir los siguientes modificadores para personalizar las contraseñas que queremos generar:

-c -> incluir en la contraseña al menos una letra en mayúsculas
-n -> incluir en la contraseña al menos un número
-y -> incluir en la contraseña al menos un caracter especial
-s -> crear una clave completamente aleatoria y que sea dificil de recordar
-1 -> cada contraseña se muestra en una línea diferente

Estos parámetros se pueden combinar de la manera que nos parezca más apropiada.
Por ejemplo sí queremos crear 5 contraseñas de 15 caracteres cada una en una fila y que sea difícil de recordar sería lo siguiente:

pwgen -1s 15 5


Como saber que dirección IP tenemos

Para conocer nuestra dirección IP basta con usar el comando ifconfig.
Sí lo ponemos sin ningún argumento nos mostrará todas las interfaces de red que tenemos en el equipo y la dirección de red asociada para cada una.
Sí ponemos después del comando el interfaz de red para el que queremos saber la IP veremos la IP asociada a ese interfaz. Sí por ejemplo queremos saber la IP que tiene nuestra tarjeta de red sería de la siguiente manera.

ifconfig eth0

Además de ver la dirección IP vemos máa información como la dirección MAC del dispositivo, la dirección IPV6, la máscara de red ...

Conocer la dirección IP de un dominio

Para saber la dirección IP de un dominio se puede hacer con el comando ping y el nombre del dominio. Sí por ejemplo queremos saber la dirección IP de www.google.con sería:

ping www.google.com

También para esta misma tarea podemos usar el comando nslookup. Para conocer la IP de www.google.es sería:

nslookup www.google.com


Conexiones de red activas y puertos que están a la escucha

Para saber las conexiones que hay activas en nuestro ordenador podemos usar el comando netstat. Sí al comando le añadimos las opciones -t y -u veremos las conexiones para TCP y UDP.
Sí queremos ver la conexiones TCP y UDP que tenemos actualmente lo podemos hacer de la siguiente manera:

netstat -tu

Con las opciones -t y -u en lugar de aparecer la dirección IP vienen los nombres, sí preferimos ver las direcciones IP se hace usando el parámetro -n:

netstat -tun

Con el comando netstat también podemos saber los puertos que tenemos a la escucha con el parámetro -l:

netstat -tul


Conocer que equipo enruta los paquetes

Sí queremos saber que equipo se encarga de hacer de pasarela lo podemos hacer con varios comandos.
Con el comando netstat sería de la siguiente manera:

netstat -rn

Con el comando route (este comando además permite manejar las tablas de enrutamiento) sería de la siguiente manera:

route

Historial del manual

23 de Junio del 2013

Añadidos como ver nuestra dirección IP, ver conexiones activas, puertos a la escucha, a partir de un nombre de máquina saber su IP y conocer quien enruta los paquetes.

18 de Junio del 2013

Añadido como generar contraseñas.

30 de Mayo del 2013

Añadido el comando XZ para comprimir y descomprimir.

16 de Junio del 2012

Conocer la versión de GNU/Linux instalada.

02 de Mayo del 2012

Añadido nuevo ejemplo de comparación con el comando diff.

15 de Julio del 2010

Añadido el comando chmod.

08 de Junio del 2008

Añadido el comando diff.

19 de Abril del 2008

Añadido en la sección del comando tar lo siguiente:

  1. Como ver el contenido de un fichero tar.gz
  2. Como ver el contenido de un fichero tar.bz2
  3. Descomprimir y desempaquetar el contenido de un fichero tar.gz a un directorio en concreto
  4. Descomprimir y desempaquetar el contenido de un fichero tar.bz2 a un directorio en concreto

18 de Febrero del 2008

Añadido el comando crontab.
Añadido como buscar más de un fichero con el comando find.

09 de Julio del 2006

Añadido el comando find.

08 de Agosto del 2005

Añadidos nuevos comandos y realizada alguna modificación sobre los que ya había. Las secciones añadidas de comandos han sido las siguientes:

  1. Ver tamaño de archivos y carpetas
  2. Ver procesos
  3. Matar procesos
  4. Memoria disponible
  5. Rendimiento del sistema

03 de Abril del 2005

Añadidos nuevos comandos y realizada alguna modificación sobre los que ya había. Las secciones añadidas de comandos han sido las siguientes:

  1. Crear directorios.
  2. Ver el contenido de archivos.
  3. Comprimir y descomprimir archivos.
  4. Empaquetar directorios. Comando tar.
  5. Ver espacio libre en sistemas de ficheros.

30 de Marzo del 2005

Subida la primera versión del manual.