Linux
          Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Contáctenos
  • LPI.org
2.1 Lección 1

Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto
1.1 Los sistemas operativos populares y la evolución de Linux
  • 1.1 Lección 1
1.2 Principales aplicaciones de código abierto
  • 1.2 Lección 1
1.3 Software de Código Abierto y las licencias
  • 1.3 Lección 1
1.4 Destrezas TIC y el trabajo con Linux
  • 1.4 Lección 1
Tema 2: Encontrando el camino en un sistema Linux
2.1 Aspectos básicos de la línea de comandos
  • 2.1 Lección 1
  • 2.1 Lección 2
2.2 Uso de la línea de comandos para obtener ayuda
  • 2.2 Lección 1
2.3 Uso de directorios y listado de archivos
  • 2.3 Lección 1
  • 2.3 Lección 2
2.4 Crear, mover y borrar archivos
  • 2.4 Lección 1
Tema 3: El poder de la línea de comandos
3.1 Archivar ficheros desde la línea de comandos
  • 3.1 Lección 1
3.2 Buscar y extraer datos de los ficheros
  • 3.2 Lección 1
  • 3.2 Lección 2
3.3 Crear un script a partir de una serie de comandos
  • 3.3 Lección 1
  • 3.3 Lección 2
Tema 4: El sistema operativo Linux
4.1 La elección del sistema operativo
  • 4.1 Lección 1
4.2 Conocer el hardware del ordenador
  • 4.2 Lección 1
4.3 Donde los datos se almacenan
  • 4.3 Lección 1
  • 4.3 Lección 2
4.4 Tu ordenador en la red
  • 4.4 Lección 1
Tema 5: Seguridad y sistema de permisos de archivos
5.1 Seguridad básica e identificación de tipos de usuarios
  • 5.1 Lección 1
5.2 Creating Users and Groups
  • 5.2 Lección 1
5.3 Gestión de los permisos y la propiedad de los archivos
  • 5.3 Lección 1
5.4 Directorios y archivos especiales
  • 5.4 Lección 1
  1. Tema 2: Encontrando el camino en un sistema Linux
  2. 2.1 Aspectos básicos de la línea de comandos
  3. 2.1 Lección 1

2.1 Lección 1

Certificación:

Linux Essentials

Versión:

1.6

Tema:

2 Encontrando tu camino en el sistema Linux

Objetivo:

2.1 Conceptos básicos de la línea de comandos

Lección:

1 de 2

Introducción

A pesar de que las distribuciones modernas de GNU/Linux tienen una amplia gama de interfaces gráficas de usuario, un administrador siempre necesitará saber cómo trabajar con la línea de comandos o shell (nombre que recibe en inglés). Shell es un programa que permite la comunicación basada en texto entre el sistema operativo y el usuario. Por lo general, es un programa en modo de texto que lee la entrada del usuario y la interpreta como comandos para el sistema.

Tenemos diferentes shells en GNU/Linux, estos son algunos ejemplos:

  • Bourne-again shell (Bash)

  • C shell (csh or tcsh, the enhanced csh)

  • Korn shell (ksh)

  • Z shell (zsh)

En GNU/Linux, el más común es el Bash Shell. Este se utilizará en diferentes ejemplos o ejercicios que veremos durante este tema.

Cuando se utiliza un shell interactivo, el usuario ingresa comandos en un indicador llamado (prompt). En cada distribución de GNU/Linux, el indicador predeterminado podría verse un poco diferente, pero generalmente sigue esta estructura:

username@hostname current_directory shell_type

En Ubuntu o Debian GNU/Linux, la solicitud para un usuario normal probablemente se verá así:

carol@mycomputer:~$

El indicador del superusuario se verá así:

root@mycomputer:~#

En CentOS o Red Hat Linux, el mensaje para un usuario normal se vea así:

[dave@mycomputer ~]$

Y el indicador(prompt) del superusuario se verá así:

[root@mycomputer ~]#

Vamos a explicar cada componente de la estructura:

username

Nombre del usuario que ejecuta la shell.

hostname

Nombre del host donde se ejecuta el shell. También hay un comando hostname, con el cual puede mostrar o configurar el nombre de host del sistema.

current_directory

Es el directorio en el que se encuentra actualmente el shell. El caracter ~ significa que la shell está en el directorio principal (home) del usuario.

shell_type

$ indica que el shell lo ejecuta un usuario normal.

# indica que el shell es ejecutado por el superusuario root.

Como no necesitamos ningún privilegio especial, utilizaremos una solicitud sin privilegios en los siguientes ejemplos. Por brevedad, solo usaremos el $ (signo de dólar) como indicador.

Estructura de la línea de comandos

La mayoría de los comandos siguen la misma estructura básica:

comando [opción(es)/párametro(s)...]  [argumento(s)...]

Tome el siguiente comando como ejemplo:

$ ls -l /home

Expliquemos el propósito de cada componente:

Comando

Programa que el usuario ejecutó: ls en el ejemplo anterior.

Opción(es)/Parámetro(s)

Un “switch” modifica el comportamiento del comando de alguna manera, como es el caso de -l (ejemplo anterior). Se puede acceder a las opciones en forma corta y larga. Por ejemplo, -l es idéntico a --format=long.

También se pueden combinar varias opciones, las letras generalmente se pueden escribir juntas haciendolo de forma abreviada. Por ejemplo, los siguientes comandos hacen lo mismo:

$ ls -al
$ ls -a -l
$ ls --all --format=long
Argumento(s)

Datos adicionales que requiere el programa, como un nombre de archivo o ruta, como /home en el ejemplo anterior.

La única parte obligatoria de esta estructura es el comando. En general, todos los demás elementos son opcionales, pero un programa puede requerir que se especifiquen ciertas opciones, parámetros o argumentos.

Note

La mayoría de los comandos muestran una breve descripción de Opción(es)/Parámetro(s) disponibles cuando se ejecutan con el parámetro --help. Muy pronto conoceremos formas adicionales de aprender más sobre los comandos en GNU/Linux.

Tipos de comportamiento de los comando

Shell admite dos tipos de comandos:

Interno

Estos comandos son parte del propio shell y no son programas separados. Hay alrededor de 30 de estos comandos, y su principal objetivo es ejecutar tareas dentro del shell (por ejemplo, cd, set, export).

Externo

Estos comandos residen en archivos individuales; suelen ser programas binarios o scripts. Cuando se ejecuta un comando que no es un shell incorporado, el shell utiliza la variable PATH para buscar un archivo ejecutable con el mismo nombre del comando. Además de los programas que se instalan con el administrador de paquetes de la distribución, los usuarios también pueden crear sus propios comandos externos.

El comando type muestra de qué tipo es un comando específico:

$ type echo
echo is a shell builtin
$ type man
man is /usr/bin/man

Comillas (Quoting)

Como usuario de GNU/Linux, deberá crear o manipular archivos o variables de diferentes maneras. Esto es fácil cuando se trabaja con nombres de archivo cortos y valores únicos, pero se vuelve más complicado cuando, por ejemplo, hay espacios involucrados, caracteres especiales y variables. Las shells proporcionan una característica llamada comillas que encapsula los datos usando varios tipos de comillas (" ", ' '). En Bash, hay tres tipos de comillas:

  • Comillas dobles (Double quotes)

  • Comillas simples (Single quotes)

  • Caracteres de Escape (Escape characters)

Por ejemplo, los siguientes comandos no actúan de la misma manera debido a las comillas:

$ TWOWORDS="two words"
$ touch $TWOWORDS
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 14:56 two
-rw-r--r-- 1 carol carol     0 Mar 10 14:56 words
$ touch "$TWOWORDS"
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  two
-rw-r--r-- 1 carol carol     0 Mar 10 14:58 'two words'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  words
$ touch '$TWOWORDS'
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 15:00 '$TWOWORDS'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  two
-rw-r--r-- 1 carol carol     0 Mar 10 14:58 'two words'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  words
Note

La línea con TWOWORDS= es una variable Bash que nosotros mismos creamos. Introduciremos variables más tarde. El objetivo de esta es mostrarle como las comillas afectan el resultado de las variables.

Comillas dobles (Double Quotes)

Las comillas dobles le dicen al shell que interprete el texto entre comillas ("...") como caracteres regulares. Todos los caracteres especiales pierden su significado, excepto el $ (signo de dólar), \ (barra invertida) y ` (comilla invertida). Esto significa que las variables, la sustitución de comandos y las funciones aritméticas todavía se pueden usar.

Por ejemplo, la sustitución de la variable $USER no se ve afectada por las comillas dobles:

$ echo I am $USER
I am tom
$ echo "I am $USER"
I am tom

Por otro lado, un carácter de espacio pierde su significado como separador de argumentos:

$ touch new file
$ ls -l
-rw-rw-r-- 1 tom students 0 Oct 8 15:18 file
-rw-rw-r-- 1 tom students 0 Oct 8 15:18 new
$ touch "new file"
$ ls -l
-rw-rw-r-- 1 tom students 0 Oct 8 15:19 new file

En el primer ejemplo, el comando touch crea dos archivos individuales, el comando interpreta las dos cadenas como argumentos individuales. En el segundo ejemplo, el comando interpreta ambas cadenas como un argumento, por lo tanto, solo crea un archivo. Sin embargo, es una buena práctica evitar el carácter de espacio en los nombres de archivo. En su lugar podría usar un guión bajo (_) o un punto (.).

Comillas simples (Single Quotes)

Las comillas simples no tienen la excepción de las comillas dobles. Estos revocan cualquier significado especial de cada caracter. Tomemos uno de los primeros ejemplos de arriba:

$ echo I am $USER
I am tom

Al aplicar las comillas simples, verá un resultado diferente:

$ echo 'I am $USER'
I am $USER

El comando ahora muestra la cadena exacta sin sustituir la variable.

Caracteres de Escape (Escape characters)

Podemos usar caracteres de escape para eliminar significados especiales de los caracteres de Bash. Volvamos a la variable de entorno $USER:

$ echo $USER
carol

Vemos que por defecto, el contenido de la variable se muestra en la terminal. Sin embargo, si precedemos el signo de dólar con un carácter de barra diagonal inversa (\), negará su significado especial. Esto provocara que Bash no expanda el valor de la variable al nombre de usuario de la persona que ejecuta el comando, sino que literalmente interpretará el nombre de la variable:

$ echo \$USER
$USER

Como hemos visto en el apartado "Comillas simples", podemos obtener resultados similares a estos usando la comilla simple, que imprime el contenido literal de lo que esté entre ellas. Sin embargo, el carácter de escape funciona de manera diferente al indicarle a Bash que ignore cualquier significado especial que pueda tener sólo el caracter que precede.

Ejercicios guiados

  1. Divida las líneas a continuación en comando, opción(s)/parámetro(s) y argumento(s):

    • Ejemplo: cat -n /etc/passwd

      Comando:

      cat

      Opción:

      -n

      Argumento:

      /etc/passwd

    • ls -l /etc

      Comando:


      Opción:


      Argumento:


    • ls -l -a

      Comando:


      Opción:


      Argumento:


    • cd /home/user

      Comando:


      Opción:


      Argumento:


  2. Encuentre de que tipo son los siguientes comandos:

    Ejemplo:

    pwd

    Shell builtin

    mv

    External command

    cd


    cat


    exit


  3. Resuelva los siguientes comandos que usan comillas:

    Example:

    echo "$HOME is my home directory"

    echo /home/user is my home directory

    touch "$USER"


    touch 'touch'


Ejercicios exploratorios

  1. Con un comando y usando brace expansion en Bash (revise la página del manual para Bash), cree 5 archivos numerados del 1 al 5 con el prefijo game (game1, game2, …​).


  2. Elimine los 5 archivos que acaba de crear con un solo comando, utilizando un carácter especial diferente (revise Pathname Expansion en las páginas del manual de Bash).


  3. ¿Hay alguna otra forma de hacer que dos comandos interactúen entre sí? ¿Cuáles son?


​

Resumen

En esta lección, usted aprendió:

  • Conceptos del shell de Linux

  • ¿Qué es Bash shell?

  • La estructura de la línea de comando

  • Una introducción a las comillas (quoting)

Comandos utilizados en los ejercicios:

bash

El shell más popular en las computadoras Linux.

echo

Texto de salida en la terminal.

ls

Listar el contenido de un directorio.

type

Muestra cómo se ejecuta un comando específico.

touch

Crea un archivo vacío o actualiza la fecha de modificación de un archivo existente.

hostname

Muestra o cambia el nombre del equipo de un sistema.

Respuestas a los ejercicios guiados

  1. Divida las líneas a continuación en comando, opción(s)/parámetro(s) y argumento(s):

    • ls -l /etc

      Comando:

      ls

      Opción:

      -l

      Argumento:

      /etc

    • ls -l -a

      Comando:

      ls

      Opción:

      -l -a

      Argumento:


    • cd /home/user

      Comando:

      cd

      Opción:


      Argumento:

      /home/user

  2. Encuentre de que tipo son los siguientes comandos:

    cd

    Shell builtin

    cat

    Comando externo

    exit

    Shell builtin

  3. Resuelva los siguientes comandos que usan comillas:

    touch "$USER"

    tom

    touch 'touch'

    Creates a file named touch

Respuestas a los ejercicios exploratorios

  1. Con un comando y usando brace expansion en Bash (revise la página del manual para Bash), cree 5 archivos numerados del 1 al 5 con el prefijo game (game1, game2, …​).

    Los rangos se pueden usar para expresar los números del 1 al 5 dentro de un comando:

    $ touch game{1..5}
    $ ls
    game1  game2  game3  game4  game5
  2. Elimine los 5 archivos que acaba de crear con un solo comando, utilizando un carácter especial diferente (revise Pathname Expansion en las páginas del manual de Bash).

    Dado que todos los archivos comienzan con game y terminan con un solo carácter (un número del 1 al 5 en este caso), puede usar ? como un carácter especial para el último carácter en el nombre de archivo:

    $ rm game?
  3. ¿Hay alguna otra forma de hacer que dos comandos interactúen entre sí? ¿Cuales son?

    Sí, un comando podría escribir datos en un archivo para luego ser procesado por otro. Linux también puede recopilar la salida de un comando y usarlo como entrada para otro comando. Esto se llama piping y aprenderemos más sobre esto en una lección futura.

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

2.1 Aspectos básicos de la línea de comandos (2.1 Lección 2)

Leer la próxima lección

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© Copyright 1999-2020 The Linux Professional Institute Inc. Todos los derechos reservados.