¿Por qué aprender Linux?
El campo de la Tecnología de la Información (TI) está lleno de oportunidades.
Para las personas que desean seguir una carrera en TI, uno de los mayores desafíos
puede ser decidir dónde y cómo comenzar. A menudo, las personas están motivadas para
adquirir nuevos conocimientos y aprender nuevas técnicas que les permitan acceder a
mejores oportunidades tanto en su vida personal como profesional. Aprender una nueva
habilidad requiere tiempo y disciplina, pero con la motivación correcta, esto no tiene
por qué ser doloroso. En esta sección vamos a discutir por qué el tiempo y el esfuerzo
invertido en aprender Linux le puede ser beneficioso; y recuerde, todos los que trabajan
en TI tuvieron que empezar en algún lugar.
Aprender Linux es una gran manera de empezar. ¿Por qué es importante
aprender Linux en un mundo impulsado por la tecnología como el actual?
¿Qué es Linux?
Antes de determinar qué hace que Linux sea una gran adición a su repertorio de
habilidades y conocimientos, definámoslo. Linux es un sistema operativo que se ejecuta
en un sistema informático o hardware (ordenador). Un sistema operativo es un software
que permite instalar y ejecutar otros programas como procesadores de texto o
navegadores web en un ordenador.
Su teléfono celular, tableta, portátil y computadora de escritorio necesitan un
sistema operativo para ejecutar el software (a menudo llamado aplicaciones) que desea
utilizar. Esto significa que Linux no está limitado sólo a computadoras de escritorio y
portátiles. Ampliaremos este punto a medida que avancemos con nuestra discusión.
¡La razón principal por la que aprender Linux es útil es que Linux se utiliza en
casi todas partes! Linux se utiliza en computadoras de escritorio y portátiles, servidores
web, dispositivos móviles (Android), tecnología de nube pública (i.e., Google, Amazon,
etc.), Chromebooks y redes (i.e., redes Cisco). Aunque es posible que nunca haya
utilizado Linux en un ordenador de escritorio o portátil, es probable que esté utilizando
otra tecnología que funciona con Linux, por ejemplo un teléfono móvil Android, una
tableta o páginas web populares como Facebook, Twitter o Amazon. De hecho, se
estima que más de la mitad de las páginas web en Internet se generan a partir de
servidores Linux.
¿Quién puede usar Linux?
Puede que usted haya oído hablar de Linux y piense que sólo individuos
expertos en tecnología lo están usando para programación y desarrollo. ¡O, tal vez
incluso para hackear! Aunque es cierto que muchos de los expertos usan Linux, esto no
significa que Linux sea demasiado difícil para aprender o que no sea útil para
principiantes.
De hecho, entender Linux, especialmente la interfaz de su línea de comandos, le
ayudará a entender mejor la informática y le proporcionará conocimientos informáticos
básicos que puede utilizar en carreras futuras.
Para entender por qué Linux ofrece competencias únicas, examinemos la
interfaz gráfica de usuario (GUI, graphic user interface). Esta es la interfaz que
probablemente usted está usando en su smartphone, tableta o computadora hoy mismo.
La GUI muestra iconos e imágenes que usted puede seleccionar para indicar a su
dispositivo lo que desea hacer o utilizar. Detrás de la GUI, existe un código desarrollado
por un programador. Cuando usted hace clic sobre un icono o carpeta en la GUI, se
envía un comando al código que indica al sistema qué debe hacer.
Ilustración 1:
Linux
Los ordenadores Linux utilizan una GUI, pero también poseen una herramienta
más eficiente para llevar a cabo las mismas acciones que una GUI, la interfaz de línea
de comandos (CLI, command line interface)
Antes de empezar
Visita virtual
Si nunca ha utilizado un curso NDG Online, familiarícese con nuestra interfaz
haciendo un recorrido virtual. Puede acceder a este recorrido en cualquier momento
utilizando el menú Ayuda (Help) situado en la esquina superior derecha.
Ilustración 2:
Visita Virtual
Objetivos:
Este contenido se alinea con varios objetivos del LPI Linux Essentials Exam
010-160. Tenga en cuenta que Linux Unhatched está diseñado para ser un módulo
exploratorio para principiantes que se alinea con varios objetivos de LPI Linux
Essentials, pero no está diseñado para ser un módulo de preparación de exámenes
completo. Para más información, haga clic en la pestaña Objetivos:
Ilustración 3:
Objetivos
Máquinas virtuales
A la derecha del contenido se le ha proporcionado una máquina virtual Linux
para practicar. Todos los ejemplos en este curso fueron creados con nuestros equipos y
le animamos a probarlos. Tenga en cuenta que el resultado o output que ve en la interfaz
de línea de comandos no siempre coincidirá exactamente con el ejemplo en el
contenido.
Ilustración 4:
Máquinas Virtuales.
Sintaxis de comandos básicos
Este módulo se ocupa exclusivamente de la CLI o interfaz de línea de comandos,
en lugar de la GUI o interfaz gráfica de usuario con la que quizás esté más
familiarizado. El terminal CLI es una poderosa herramienta y a menudo es el método
principal utilizado para administrar dispositivos pequeños de bajo consumo, servidores
de computación de gran capacidad en la nube, y mucho más. Una comprensión básica
del terminal es esencial para diagnosticar y reparar la mayoría de los sistemas basados
en Linux. Puesto que Linux se ha vuelto tan omnipresente, incluso aquellos que planean
trabajar con sistemas que no utilizan el núcleo Linux pueden beneficiarse de tener una
comprensión básica del terminal.
¿Qué es un comando? Un comando es un programa de software que, cuando se
ejecuta en la CLI (interfaz de línea de comandos), realiza una acción en el ordenador.
Cuando usted escribe un comando, el sistema operativo ejecuta un proceso para leer su
entrada, manipular datos y producir resultados. Un comando ejecuta un proceso en el
sistema operativo, que luego hace que el ordenador realice una tarea determinada.
Para ejecutar un comando, el primer paso es escribir el nombre del comando.
Haga clic en el terminal de la derecha. Escriba ls (letras minúsculas L y S) y
pulse Enter. Obtendrá un resultado parecido al del siguiente ejemplo:
sysadmin@localhost:~$ ls
Desktop Documents Downloads Music Pictures Public Templates
Videos
Generalmente, el nombre del comando se basa en la tarea que hace o en lo que el
programador que creó el comando cree que mejor describe la función del comando. Por
ejemplo, el comando ls muestra una lista de información sobre archivos. Asociar el
nombre del comando con algo mnemotécnico sobre lo que hace puede ayudarle a
recordar los comandos más fácilmente.
A tener en cuenta generalmente, los comandos distinguen entre mayúsculas y
minúsculas. Por ejemplo, LS es incorrecto y generará un mensaje de error, pero ls es
correcto y se ejecutará normalmente.
sysadmin@localhost:~$ LS
-bash: /usr/games/LS: Permission denied
La mayoría de los comandos siguen un patrón de sintaxis simple:
comando [opciones…] [argumentos…]
En otras palabras, escriba un comando, seguido de
las opciones y/o argumentos antes de presionar la tecla Enter. Generalmente, las
opciones (options) alteran el comportamiento del comando y los argumentos
(arguments) son elementos o valores sobre los que debe actuar el comando. Aunque hay
algunos comandos en Linux que no son completamente consistentes con estas normas
de sintaxis, la mayoría de los comandos usan esta sintaxis o alguna similar.
En el ejemplo anterior, el comando ls se ejecutó sin opciones ni argumentos.
Cuando este es el caso, su comportamiento predeterminado es el de devolver una lista
de los archivos contenidos en el directorio actual.
sysadmin@localhost:~$ ls
Desktop Documents Downloads Music Pictures Public Template
Argumentos
comando [opciones…] [argumentos…]
Un argumento (argument) se puede usar para especificar algo sobre lo que el
comando debe actuar. Si al comando ls se le da el nombre de un directorio como
argumento, obtendremos como resultado una lista del contenido de ese directorio. En el
siguiente ejemplo, el directorio Documents se utilizará como argumento:
sysadmin@localhost:~$ ls Documents
School [Link] [Link] [Link] [Link]
Work [Link] [Link] [Link]
[Link]
[Link] [Link] [Link] [Link]
[Link]
[Link] [Link] [Link] [Link] [Link]
El resultado es una lista de los archivos incluidos en el directorio documentos.
Debido a que Linux es de código abierto, contiene algunas funciones curiosas
que han ido siendo agregadas por sus programadores y usuarios. Por ejemplo, el
comando aptitud es una función de gestión de paquetes disponible en algunas versiones
de Linux. Este comando acepta moo como argumento:
sysadmin@localhost:~$ aptitude moo
There are no Easter Eggs in this program.
Este comando no solamente es lo que parece. ¡Siga leyendo para saber qué más
hay detrás de este truco!
Opciones
comando [opciones…] [argumentos…]
Las opciones (options) se pueden utilizar para modificar el comportamiento de
un comando. En la página anterior, el comando ls se utilizó para enumerar el contenido
de un directorio. En el ejemplo siguiente, la opción -l se agrega al comando ls para
obtener un resultado de “pantalla larga”, y proporcionar más información sobre cada
uno de los archivos enumerados:
sysadmin@localhost:~$ ls -l
total 32
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Desktop
drwx------ 4 sysadmin sysadmin 4096 Dec 20 2017 Documents
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Downloads
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Music
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Pictures
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Public
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Templates
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Videos
Tenga en cuenta que, en el comando anterior, -l es la letra "L" minúscula.
A menudo, el carácter elegido para el comando es mnemotécnico de su propósito
en inglés. Por ejemplo, la letra l para indicar largo (long) o r para invertir (reverse en
inglés). De forma predeterminada, el comando ls imprime los resultados en orden
alfabético, al agregar la opción -r se imprimirán los resultados en orden alfabético
inverso.
sysadmin@localhost:~$ ls -r
Videos Templates Public Pictures Music Downloads Documents
Desktop
Se pueden usar varias opciones a la vez, ya sea como opciones separadas como
en -l -r o combinadas como -lr . El resultado de los siguientes ejemplos sería el
mismo:
ls -l -r
ls -rl
ls -lr
Como se ha explicado anteriormente, -l proporciona un formato de listado largo
y -r invierte el listado. El resultado de usar ambas opciones será un listado largo en
orden alfabético inverso:
sysadmin@localhost:~$ ls -l -r
total 32
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Videos
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Templates
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Public
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Pictures
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Music
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Downloads
drwx------ 4 sysadmin sysadmin 4096 Dec 20 2017 Documents
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Desktop
sysadmin@localhost:~$ ls -rl
total 32
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Videos
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Templates
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Public
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Pictures
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Music
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Downloads
drwx------ 4 sysadmin sysadmin 4096 Dec 20 2017 Documents
drwx------ 2 sysadmin sysadmin 4096 Dec 20 2017 Desktop
Los comandos pueden utilizar muchas combinaciones de opciones y
argumentos. Las posibilidades para cada comando serán únicas. ¿Recuerda los huevos
de Pascua (Easter Eggs) del comando aptitude?
sysadmin@localhost:~$ aptitude moo
There are no Easter Eggs in this program.
Es posible modificar el comportamiento de este comando usando opciones. Vea lo que
sucede cuando se agrega la opción -v (verbose):
sysadmin@localhost:~$ aptitude -v moo
There really are no Easter Eggs in this program.
Mediante la combinación de múltiples opciones -v, podemos obtener una variedad de
respuestas:
sysadmin@localhost:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this
program?
sysadmin@localhost:~$ aptitude -vvv moo
Stop it!
Recuerde que las varias opciones se pueden denotar por separado o combinadas:
aptitude -v -v moo
aptitude -vv moo
¡Siga añadiendo opciones -v para ver cuántas respuestas únicas puede obtener!
Imprimir el directorio de trabajo
Para descubrir dónde se encuentra actualmente dentro del sistema de archivos,
puede utilizar el comando pwd. El comando pwd imprime el directorio de trabajo (print
working directory), su ubicación actual dentro del sistema de archivos:
pwd [OPCIONES]
A tener en cuenta:
¡No encienda su impresora todavía! En los inicios de la computación, el
resultado de un comando se enviaba directamente a impresoras físicas. Este método ha
sido reemplazado por pantallas de vídeo que muestran información más rápidamente.
Aún así, actualmente seguimos utilizando la palabra imprimir (print) aunque el
resultado se esté mostrando en una pantalla.
sysadmin@localhost:~$ pwd
/home/sysadmin
El resultado del comando anterior indica que el usuario está actualmente en su carpeta de
inicio, tal y como muestra el sistema de archivos siguiente.
Ilustración 5:
Directorio de trabajo
Considere esto
Observe que nuestras máquinas virtuales emplean un indicador para mostrar el
directorio de trabajo actual, resaltado en color azul. En el primer mensaje, el
carácter ~ azul es equivalente a /home/sysadmin, y representa el directorio de inicio del
usuario.
sysadmin@localhost:~$
Después de cambiar de directorio (aprenderemos cómo hacerlo en la siguiente
sección), la nueva ubicación también se puede confirmar en el nuevo indicador, que
nuevamente se muestra en azul.
sysadmin@localhost:/etc/calendar$
Cambio de Directorios
Los archivos se utilizan para almacenar datos como texto, gráficos y programas.
Los directorios son un tipo de archivo utilizado para almacenar otros archivos:
proporcionan una estructura organizativa jerárquica. La siguiente imagen muestra una
versión abreviada de la estructura del sistema de archivos de nuestras máquinas
virtuales.
Ilustración 6:
Cambio De Directorios
Al iniciar una máquina virtual nueva, ya sea abriendo el curso o después de usar
el botón de reinicio, usted inicia una sesión como usuario sysadmin en su directorio
principal, resaltado en azul a continuación:
Ilustración 7
Cambio de Directorios De Azul
Utilice el comando cd (change directory) para cambiar de directorio y navegar
por la estructura del sistema de archivos.
cd [opciones] [ruta]
Si examina el gráfico anterior, notará que el directorio Documents se encuentra
dentro del directorio de inicio home, donde usted se encuentra actualmente. Para
desplazarse al directorio Documents, utilícelo como argumento para el comando cd:
sysadmin@localhost:~$ cd Documents
sysadmin@localhost:~/Documents$
Los directorios son equivalentes a las carpetas en Windows y Mac OS. Al igual
que estos sistemas operativos más populares, una estructura de directorios Linux
también tiene un nivel superior. No se llama “Mi PC”, sino directorio raíz (root) y está
representado por el carácter /. Para desplazarse al directorio root, utilice el
carácter / como argumento del comando cd.
sysadmin@localhost:~/Documents$ cd /
sysadmin@localhost:/$
Ilustración 8:
Directorio
El argumento para el comando cd es más que el nombre de un directorio, en
realidad es una ruta (path). Una ruta es una lista de directorios separados por el
carácter /. Por ejemplo, /home/sysadmin es la ruta a su directorio de inicio:
Ilustración 9:
Directorio 1
Imagine que el sistema de archivos es un mapa, las rutas son las instrucciones
que indican paso a paso la ubicación de cualquier archivo dentro del sistema de
archivos. Hay dos tipos de rutas: absolutas y relativas. Las rutas absolutas comienzan en
la raíz del sistema de archivos, las rutas relativas comienzan en su ubicación actual
Rutas absolutas
Una ruta absoluta le permite especificar la ubicación exacta de un directorio.
Siempre comienza en el directorio root, por lo tanto siempre comienza con el carácter /.
La ruta al directorio de inicio (home) /home/sysadmin es una ruta absoluta. La ruta
comienza en el directorio root /, se mueve al directorio de inicio home y, a continuación,
al directorio sysadmin. Esta ruta en una interfaz gráfica de usuario (GUI) como la de su
ordenador personal aparecería así:
Ilustración 10:
Rutas absolutas
Utilice esta ruta como argumento para el comando cd para volver al directorio principal del
usuario sysadmin.
sysadmin@localhost:/$ cd /home/sysadmin
sysadmin@localhost:~$
Que no aparezca un resultado en la línea de comandos significa que el comando se ha
ejecutado correctamente. Continúe y confirme que es así usando el comando pwd:
sysadmin@localhost:~$ pwd
/home/sysadmin
Rutas relativas
Una ruta relativa ubica un archivo en relación con la ubicación actual del usuario
en el sistema de archivos. Las rutas relativas no comienzan con el carácter /, comienzan
con el nombre de un directorio. Eche otro vistazo al primer ejemplo de comando cd. En
este caso, el argumento es un ejemplo de la ruta relativa más simple: el nombre de un
directorio en su ubicación actual.
sysadmin@localhost:~$ cd Documents
sysadmin@localhost:~/Documents$
Ilustración 11:
Rutas Relativas
La siguiente imagen muestra un mapa de los archivos contenidos en el
directorio sysadmin. Actualmente se encuentra en el directorio Documents y desea
desplazarse al directorio Art:
Ilustración 12:
Rutas Relativas
Una ruta relativa comienza con el directorio actual, sin embargo, éste no se
incluye en la ruta. El primer paso sería pasar al directorio School y, a continuación,
pasar al directorio Art. Utilice el carácter / para separar los nombres de directorio. El
resultado School/Art es una ruta relativa desde el directorio Documents hasta el
directorio Art:
Utilice la ruta relativa como argumento para el comando cd para desplazarse al
directorio Art.
sysadmin@localhost:~/Documents$ cd School/Art
sysadmin@localhost:~/Documents/School/Art$
Utilice el comando pwd para confirmar que el cambio ha ocurrido:
sysadmin@localhost:~/Documents/School/Art$ pwd
/home/sysadmin/Documents/School/Art
reed
read
Este carácter se puede utilizar tantas veces como se desee. Para encontrar todas las
palabras de al menos cuatro caracteres se puede utilizar el siguiente patrón:
sysadmin@localhost:~/Documents$ grep '....' [Link]
reef
reeed
roof
reed
root
reel
read
La línea no tiene que coincidir exactamente, simplemente debe contener el patrón, como
se ve a continuación cuando se busca r..t en el archivo /etc/passwd:
sysadmin@localhost:~/Documents$ grep 'r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:1000:37::/root: