Aprende GNU/Linux 12

Introducción a la linea de comandos de Linux

Actualmente la mayoría de las distribuciones ofrecen una interfaz gráfica con la que no necesitaremos aprender a utilizar lo que es para muchos un mundo desconocido y tenebroso, aun así conocer lo básico de esta potente herramienta nos va a permitir explotar nuestro sistema y ser mucho mas productivos en tareas tanto cotidianas como puntuales. Con esta introducción a la linea de comandos de Linux pretendemos explicar que es la shell, como utilizarla y explicar unos comandos básicos que nos van a ser de mucha utilidad.

¿ Que es la Shell ?

El interprete de comandos permite ejecutar instrucciones que el usuario introduce vía teclado o en un script y este le devuelve los resultados. A este interprete se le llama Shell. Este shell es la concha ( shell es concha en ingles ) que rodea el núcleo de Linux, es decir, es una interfaz que funciona en modo de texto con el cometido de comunicar a los usuarios con el núcleo de Linux.Diagrama de la Shell en Linux

Existen varios shells como Bourne shell, C-shell, Korn-shell… El shell por defecto en los sistemas Linux es Bash shell. Este shell funciona en una terminal. Originalmente una terminal era una maquina que solamente podía ejecutar instrucciones y obtener resultados por la linea de comandos pero hoy en día se utilizan programas que simulan terminales en los diferentes entornos gráficos de ventanas.

La lista de los shells presentes en tu sistema Linux se encuentra en el fichero /etc/shells

Linea de comandos

El shell espera instrucciones por el teclado en una linea llamada linea de comandos o prompt. Esta linea de comandos nos ofrece cierta información fácilmente reconocible :

Explicacion de los diferentes elementos de la linea de comandos

Esta linea de comandos nos informa de que el usuario asierph sin privilegios de administración esta conectado a la maquina lógica Manjaro en la posición del sistema de ficheros Documentos.

La señalizacion de la posición actual en el sistema de ficheros puede variar, dando la ruta completa /home/Documentos, con el carácter ~ que indica directorio personal o ~/Documentos que indica que esta en el subdirectorio Documentos de su directorio personal.
¡Ojo!

Sintaxis de los comandos

Los comandos GNU/Linux tienen una sintaxis del tipo :

              Instrucción [parámetros] [argumentos]

  No es necesario introducir los parámetros y los argumentos, si estos no se introducen se ejecutaran los que estén programados por defecto.

Los parámetros son opciones del comando y normalmente se escriben mediante un guion y una letra ( -l por ejemplo ). Se puede ejecutar mas de un parámetro por instrucción escribiendo guion y letra varias veces ( -l -a) o uniendo las letras detrás del guion ( -la ).

Algunos parámetros o instrucciones requieren un argumento, por ejemplo el nombre de un fichero, que se colocara detrás del parámetro separado por un espacio.

Ejemplo : >mkdir dir1 ( este comando creara la carpeta dir1 en la situación actual en el sistema de ficheros )

El comando es mkdir y el argumento dir1 ( en este caso no hemos utilizado parámetros )

 

Se puede ejecutar varios comandos en una misma linea encadenandolos con punto y coma. Ejemplo –> date;cal ( ejecutara primero el comando date y después el comando cal )
Concatena instrucciones

Comandos internos y externos

Los comandos pueden ser de tipo interno o externo

Interno : Estos comandos son internos a la shell, se ejecutan dentro de esta y forman parte de ella.

Externo : Los comandos externos son binarios dentro del sistema que son llamados cuando se ejecuta el comando asociado,  este comando se carga en memoria y se inicia como proceso.

Para saber si un comando es de tipo interno o externo podemos ejecutar la instrucción type [comando]. En el caso de que el comando sea externo también nos indicara su ubicación.

Historial

El shell conserva un historial de los comandos que vamos ejecutando y que podemos consultar con el comando history. También podemos navegar por este historial pulsando la flecha para arriba o la flecha para abajo de nuestro teclado. Esto es algo de mucha utilidad ya que nos va permitir no tener que re-escribir los comandos utilizados hace poco.

Ayuda de las instrucciones

Es imposible conocer cada uno de los parámetros y argumentos de todas las instrucciones que tenemos a nuestra disposición pero esto no hace falta gracias a la ayudas que nos ofrece Linux. Tenemos tres tipos de ayuda que nos van a ofrecer información sobre cada una de las instrucciones :

  • Ayuda interna del shell : Cuando necesitemos ayuda sobre comandos internos tenemos que utilizar esta opción. El comando en cuestión es >help . Si utilizamos help sin ningún parámetro nos devolverá todos los comandos internos. Si le pasamos como parámetro la instrucción de la que deseamos información esta nos devolverá los parámetros y argumentos que puede usar esta instrucción
  • Ayuda propia de los comandos : Los comandos pueden traer ayuda con ellos mismos, es decir, en el mismo programa traerán una ayuda que podremos llamar. Para llamar esta ayuda usaremos el comando >Instrucción –help ( doble guion ) , siendo instrucción la orden de la que queremos la información. No todos los comandos traen esta ayuda por lo que puede que la instrucción nos devuelva un mensaje de error.
  • Ayuda en linea : Como tercera opción tenemos el manual de Unix en linea. Esta opción es la mas completa y la que mas información ofrece. No esta asociada a ningún shell y vale en todos los sistemas Unix. Para llamar a esta ayuda basta con >man instrucción donde instrucción es el comando del que queremos información.

Privilegios

Muchos de los comandos que vamos a presentar a continuación necesitan privilegios para poder ser ejecutados. Para llamar a un comando con derechos de administrador tendremos que colocar antes de la instrucción el comando >sudo ( por ejemplo >sudo shutdown ). Después de ejecutar instrucciones con sudo el interprete nos pedirá las credenciales de administrador.

También podemos ejecutar el comando >su con el que conseguiremos derechos de root, evidentemente el interprete también nos pedirá las credenciales de root.

Chiste muy Geek 🙂

 

– Mama cambia de canal por favor.

– Cambia tu!

– Sudo mama cambia de canal por favor.

– Claro.

 

Comandos básicos

Comandos y una breve descripción de las instrucciones mas básicas de la linea de comandos.

Comandos de sistemaComandos de gestión de ficheros y directoriosBusqueda
Comandos de sistema

Comandos que nos van a servir tanto para obtener información de nuestro sistema como para apagarlo, reiniciarlo…

Mostrar la arquitectura del PC >uname -m 

Mostrar la versión del kernel usado >uname -r

Mostrar los componentes hardware del sistema >dmidecode -q

Mostrar fecha >date

Mostrar calendario >cal

Con el comando cal podemos usar parámetros tipo:

>cal 2013 ( nos mostrara el calendario de 2013 )

>cal 05 2013v ( nos mostrara mayo del 2013 )

Apagar el sistema >shutdown -h now

Reiniciar el sistema >reboot

Cerrar sesion >logout

Comandos de gestión de ficheros y directorios

Para gestionar nuestros ficheros y directorios tenemos una lista de comandos básicos que nos van a ayudar con este cometido.

Mostrar ruta completa >pwd

Nos muestra la ruta completa del directorio actual.

Contenido del directorio actual >ls

El comando ls nos mostrara el contenido del directorio actual.

Movernos por los directorios >cd

El comando cd sirve para movernos de directorio ( changue directory ).

>cd Documentos  (esto nos situara en la carpeta Documentos).

>cd /etc/systemd/system/ (de esta manera nos situaremos en esta ubicación directamente.)

>cd ..  (subiremos un nivel. Por ejemplo si estamos en home/Documentos y hacemos cd .. nos situaremos en home)

>cd ( sin nada nos llevara a la carpeta de usuario.)

Crear directorios >mkdir

El comando mkdir ( make directory ) nos va permitir crear uno o varios directorios. También podemos crear una estructura completa.

>mkdir dir1 ( creara una carpeta dir1 en la posición actual )

>mkdir -p dir1/dir2 ( creara una carpeta dir2 dentro de otra carpeta dir1 en la situación actual en el sistema de ficheros )

Borrar directorios >rmdir

El comando rmdir ( remove directory ) remueve uno o varios directorios pero no puede remover estructuras. Funciona de la misma manera que mkdir pero sin este detalle de las estructuras.

 Copiar ficheros >cp

El comando cp ( copy ) nos permite copiar uno o varios ficheros.

>cp fichero1 fichero2 ( este comando ara una copia de fichero1 y lo guardara en fichero2)

 Mover o cambiar de nombre a ficheros >mv

El comando mv ( move ) permite mover y/o renombrar un fichero.

>mv fich1 hola/fich1 ( movemos el fichero fich1 a la carpeta hola ).

>mv fich1 fich1.doc ( renombramos el fichero fich1 a fich1.doc ).

 Suprimir ficheros y estructuras >rm

El comando rm ( remove ) eliminara un fichero o varios. También podemos eliminar estructuras. Tenemos que tener en cuenta que el borrado sera definitivo.

>rm fich1 ( Eliminamos fich1 )

>rm -r hola ( suprime la carpeta hola y todo el contenido de esta, tanto ficheros como directorios )

>rm -r dir1/dir2 ( Elimina la estructura dir1/dir2 )

 

Busqueda

La instrucción Find permite buscar ficheros en la estructura del sistema de ficheros con la ayuda de diferentes criterios. El comando tiene una estructura tipo :

  find [ruta] [criterios] [opciones]

El comando >find es recursivo por lo que cuando le indiquemos un directorio básico nos devolverá toda la estructura.

Como criterios de búsqueda tenemos diferentes opciones:

  • -size : para definir el tamaño de los archivos buscados. ( Funciona por bloques de 512kb por defecto ). Se puede utilizar un + o un – despues del tamaño para acotar la búsqueda por mas o menos del tamaño especificado.
  • -name :para realizar una busqueda por nombre. ( Se especifica entre dobles comillas )
  • -type : seleccion por tipo de fichero ( Funciona con codigos, por ejemplo d son directorios )
  • -ctime, -mtime, -atime :Busqueda por fechas ( ctime = modificacion , mtime = ultima modificacion , atime = ultimo acceso )

El comando por defecto es -print que nos imprimirá por pantalla los resultados, pero existen otros como -ls que nos dará información detallada del resultado.

La búsqueda de archivos trae consigo criterios y conceptos mas complejos que no traeremos aquí debido a que no es nuestra intencion profundizar mucho.

 

Comandos por un tubo!

Gracias a esta fantástica wiki de GUTL tenemos esta lista de comandos que os adjunto en un pdf.

Podéis descargar el pdf desde aquí -> .

Si quieres profundizar más en el tema estate atento a ovtoaster, aquí esta la lista de artículos escritos hasta hoy sobre el tema:

 

Sobre el autor / 

AsierPH

Entusiasta de las tecnologías libres y fundador de OvToaster.com | “Las obras de conocimiento deben ser libres, no hay excusas para que no sea así“

Articulos relacionados

12 comentarios

  1. JRGSM70 21 diciembre, 2016 at 5:04 pm -  Responder

    Me encantó esta publicación. Es buenísimia y además muy didáctica. Gracias por tus aportaciones que son increíblemente valiosas. Voy a twittear este sitio. Gracias

    • AsierPH 12 enero, 2017 at 9:59 am -  Responder

      Me alegro mucho de que te sea de utilidad JRGSM70, y gracias por el detalle de compartir la publicación, se agradece muchísimo.

  2. Alfonso 23 julio, 2014 at 8:47 am -  Responder

    Es muy bueno y censillo de entender. Muchísimas gracias por compartir sus conocimientos.

    • AsierPH 31 enero, 2015 at 9:35 pm -  Responder

      Es un placer Alfonso, gracias por comentar.

  3. Francisco 25 junio, 2014 at 11:04 pm -  Responder

    Excelente Asier,te felecito,no hay mas palabras,SALUDOS.

    • AsierPH 31 enero, 2015 at 9:35 pm -  Responder

      ¡Gracias! Me alegro de que te guste

  4. Paco Garcia 7 mayo, 2014 at 7:28 am -  Responder

    Muchas gracias AsierPH. Llevo poco tiempo con Raspberry Pi y tus artículos sobre la línea de comandos me resultan de muchísima ayuda.

    Gracias de nuevo.

    • AsierPH 7 mayo, 2014 at 9:18 am -  Responder

      Hola Paco, muchas gracias por el comentario, me alegra de que te sea útil 🙂

  5. makario 2 abril, 2014 at 5:45 pm -  Responder

    Gracias por tu dedicación, me ha sido muy útil el articulo.
    Gracias de nuevo-

    • AsierPH 2 abril, 2014 at 6:03 pm -  Responder

      Me alegro de que te sea útil 🙂

  6. ALX 22 marzo, 2014 at 2:23 am -  Responder

    Excelente articulo de introducción… la terminal es una muy buena herramienta y faltan mas artículos que hablen de sus bondades, en ves de seguir repitiendo los mismos tips para tal o cual lenguaje de moda

    • AsierPH 22 marzo, 2014 at 2:42 pm -  Responder

      Muchas gracias ALX,
      la verdad que la terminal es muy potente y ofrece muchísimas posibilidades, aprender sobre ella trae abre un mundo nuevo xD

Deja tu comentario

Tu correo no sera publicado. Los campos requeridos están marcados *