Está en la página 1de 7

Capítulo 1 Introducción

Este capítulo cubrirá los siguientes objetivos del examen:


103.1: Trabajar en la línea de comando v2
Peso: 4
Los candidatos deben poder interactuar con shells y comandos mediante la línea de comandos. El objetivo
asume el caparazón Bash.
Áreas clave de conocimiento:

 Use comandos de un solo shell y secuencias de comandos de una línea para realizar tareas básicas en
la línea de comandos.
Sección 1.3.1

Chapter 1: Introduction
bash

Bourne Again SHell - an sh-compatible command language interpreter that executes commands read
from the standard input or from a file.
Section 1.3.1

ls

Command that will list information about files. The current directory is listed by default.
Section 1.3.1

1.1 Introducción
‌La definición de la palabra Linux depende del contexto en el que se utilice. Técnicamente hablando, Linux es
el núcleo del sistema, que es el controlador central de todo lo que sucede en la computadora. Las personas que
dicen que su computadora "ejecuta Linux" generalmente se refieren al kernel y al conjunto de herramientas que
vienen con él (llamado distribución ) . Si alguien dice que tiene experiencia con Linux, podría referirse a la
configuración de sistemas, la ejecución de servidores web o cualquier otro servicio y programa que opere sobre
Linux. Con el tiempo, la administración de Linux ha evolucionado para abarcar casi todas las tareas que una
institución empresarial, educativa o gubernamental moderna puede utilizar en sus operaciones diarias.
¿ Qué pasa con UNIX ? UNIX fue originalmente un sistema operativo desarrollado en AT&T Bell Labs en la
década de 1970. Ha sido modificado y bifurcado (es decir, la gente lo modificó y esas modificaciones sirvieron
como base para otros sistemas) de modo que ahora hay muchas variantes diferentes de UNIX. Sin embargo,
UNIX ahora es tanto una marca registrada como una especificación, propiedad de un consorcio industrial
llamado Open Group. Solo el software que ha sido certificado por Open Group puede llamarse UNIX. A pesar
de adoptar la mayoría, si no todos, los requisitos de la especificación UNIX, Linux no ha sido certificado, ¡así
que Linux realmente no es UNIX! Es solo... como UNIX.
Nota
Gran parte del material inicial de este capítulo es muy similar al que se puede encontrar en NDG Linux
Essentials . Si ya tomó ese curso, puede usar esto como una oportunidad para actualizar sus conocimientos o
siéntase libre de saltar algunas páginas.

1.1.1 Rol del Kernel


Los tres componentes principales de un sistema operativo son el kernel, el shell y el sistema de archivos. El
núcleo del sistema operativo es como un controlador de tráfico aéreo en un aeropuerto. El kernel dicta qué
programa obtiene qué partes de la memoria, inicia y elimina programas, interpreta las instrucciones que le da el
usuario y maneja tareas más comunes y simples, como mostrar texto en un monitor. Cuando una aplicación
necesita escribir en el disco, debe pedirle al kernel que complete la operación de escritura.
El kernel también maneja el cambio de aplicaciones. Una computadora tendrá una o más CPU y una cantidad
finita de memoria. El kernel se encarga de descargar tareas y cargar nuevas tareas, y puede administrar
múltiples tareas en múltiples CPU. Cuando la tarea actual se ha ejecutado una cantidad de tiempo suficiente, la
CPU pausa la tarea para que se pueda ejecutar otra. Esto se llama multitarea preventiva . Multitarea significa
que la computadora realiza varias tareas a la vez, y preventiva significa que el kernel decide cuándo cambiar el
enfoque entre las tareas. Con las tareas cambiando tan rápidamente, parece que la computadora está haciendo
muchas cosas a la vez.
Cada aplicación puede pensar que tiene un gran bloque de memoria en el sistema, pero es el núcleo el que
mantiene esta ilusión; reasignar bloques de memoria más pequeños, compartir bloques de memoria con otras
aplicaciones o incluso intercambiar bloques que no se han utilizado en mucho tiempo en el disco.
‌Cuando la computadora se inicia, carga un pequeño fragmento de código llamado gestor de arranque . El
trabajo del cargador de arranque es darle una opción (si está configurada) de opciones para cargar una o más
versiones de Linux, o incluso otros sistemas operativos, y luego cargar el kernel de la opción elegida y
comenzar. Si está más familiarizado con sistemas operativos como Microsoft Windows o OS X de Apple,
probablemente nunca vea el gestor de arranque, pero en el mundo de UNIX, generalmente está visible para
que pueda ajustar la forma en que arranca su computadora.
El cargador de arranque carga el kernel de Linux y luego transfiere el control. Luego, Linux continúa ejecutando
los programas necesarios para que la computadora sea útil, como conectarse a la red o iniciar un servidor web.

1.1.2 Aplicaciones
Como un controlador de tráfico aéreo, el núcleo no es útil sin algo que controlar. Si el núcleo es la torre, las
aplicaciones son los aviones. Las aplicaciones realizan solicitudes al kernel y reciben recursos, como memoria,
CPU y disco, a cambio. El núcleo también abstrae los detalles complicados de la aplicación. La aplicación no
sabe si el bloque de un disco está en una unidad de estado sólido del fabricante A, un disco duro de metal
giratorio del fabricante B o incluso un recurso compartido de archivos de red. Las aplicaciones simplemente
siguen la interfaz de programación de aplicaciones (API) del kernel y, a cambio, no tienen que preocuparse por
los detalles de implementación.
Cuando nosotros, como usuarios, pensamos en aplicaciones, tendemos a pensar en procesadores de texto,
navegadores web y clientes de correo electrónico. Al kernel no le importa si está ejecutando algo orientado al
usuario, un servicio de red que se comunica con una computadora remota o una tarea interna. Entonces, a
partir de esto, obtenemos una abstracción llamada proceso . Un proceso es solo una tarea que el kernel carga y
rastrea. Una aplicación puede incluso necesitar varios procesos para funcionar, por lo que el kernel se encarga
de ejecutar los procesos, iniciarlos y detenerlos según se solicite, y distribuir los recursos del sistema.

1.1.3 Papel del código abierto


Los proyectos de software toman la forma de código fuente , que es un conjunto de instrucciones de
computadora legibles por humanos. El código fuente puede estar escrito en cualquiera de los cientos de
lenguajes de programación diferentes. El kernel de Linux está escrito principalmente en C, que es un lenguaje
que comparte historia con el UNIX original.
La computadora no entiende directamente el código fuente, por lo que un compilador debe compilarlo en
instrucciones de máquina . El compilador reúne todos los archivos fuente y genera algo que se puede ejecutar
en la computadora, como el kernel de Linux.
Históricamente, la mayoría del software se ha emitido bajo una licencia de código cerrado , lo que significa que
tiene derecho a usar el código de máquina, pero no puede ver el código fuente. ¡A menudo, la licencia dice
específicamente que no intentará aplicar ingeniería inversa al código de la máquina para volver al código fuente
para averiguar qué hace!
El código abierto tiene una visión del software centrada en la fuente. La filosofía de código abierto es que usted
tiene derecho a obtener el software y modificarlo para su propio uso. Linux adoptó esta filosofía con gran éxito.
En 1991, Linux comenzó como un proyecto de pasatiempo de Linus Torvalds. Hizo que la fuente estuviera
disponible gratuitamente, lo que permitió que otros se unieran y dieran forma a este incipiente sistema
operativo. No fue el primer sistema desarrollado por un grupo de voluntarios, pero dado que se construyó desde
cero, los primeros en adoptarlo pudieron influir en la dirección del proyecto. Las personas tomaron la fuente,
hicieron cambios y los compartieron con el resto del grupo, lo que aceleró enormemente el ritmo de desarrollo y
aseguró que no se repitieran los errores de otros sistemas operativos.
El kernel de Linux tiene la licencia GNU Public License (GPL), que requiere que haga cambios disponibles. Esto
garantiza que aquellos que usan el código también contribuirán al bien común al hacer que esos cambios estén
disponibles para todos.
Junto a esto, estaba el proyecto GNU (GNU, no UNIX). Si bien GNU (pronunciado "guh-noo") estaba
construyendo su propio sistema operativo, tuvieron mucho más éxito en la construcción de las herramientas que
acompañan a un sistema operativo UNIX, como los compiladores y las interfaces de usuario. La fuente estaba
disponible gratuitamente, por lo tanto, Linux pudo orientar sus herramientas y proporcionar un sistema
completo. Como tal, la mayoría de las herramientas que forman parte del sistema Linux provienen de estas
herramientas GNU.
Hay muchas variantes diferentes en código abierto. Sin embargo, todos están de acuerdo en que debe tener
acceso al código fuente, pero difieren en cómo puede, o en algunos casos, debe redistribuir los cambios.

1.1.4 Distribuciones de Linux


Tome el kernel de Linux y las herramientas GNU, agregue algunas aplicaciones más orientadas al usuario,
como un cliente de correo electrónico, procesadores de texto y otros programas, y tendrá un sistema Linux
completo. La gente comenzó a agrupar todo este software en una distribución casi tan pronto como se pudo
utilizar Linux. La distribución se encarga de configurar el almacenamiento, instalar el kernel e instalar el resto
del software. Las distribuciones con todas las funciones también incluyen herramientas para administrar el
sistema y un administrador de paquetes para ayudarlo a agregar y eliminar software una vez que se completa la
instalación.
Al igual que UNIX, hay muchos sabores diferentes de distribuciones. En estos días, hay distribuciones que se
enfocan en ejecutar servidores, computadoras de escritorio o incluso herramientas específicas de la industria,
como el diseño electrónico o la computación estadística. Los principales jugadores en el mercado se remontan
a Red Hat o Debian . La diferencia más visible es el administrador de paquetes de software, aunque encontrará
otras diferencias en todo, desde ubicaciones de archivos hasta filosofías políticas.
Red Hat comenzó como una distribución simple que introdujo Red Hat Package Manager (RPM) basado en
el .rpm formato de archivo. El desarrollador finalmente formó una empresa a su alrededor, que intentó
comercializar un escritorio Linux para empresas. Con el tiempo, Red Hat comenzó a centrarse más en las
aplicaciones de servidor, como la web y el servicio de archivos, y lanzó Red Hat Enterprise Linux, que era un
servicio pago en un ciclo de lanzamiento prolongado . El ciclo de lanzamiento determina la frecuencia con la
que se actualiza el software. Una empresa puede valorar la estabilidad y desear ciclos de lanzamiento
prolongados, mientras que un aficionado o una empresa nueva puede desear el software más reciente y optar
por un ciclo de lanzamiento más corto. Para satisfacer a este último grupo, Red Hat patrocina el Proyecto
Fedoralo que crea un escritorio personal que comprende el software más reciente pero que aún se basa en los
mismos cimientos que la versión empresarial.
Debido a que todo en Red Hat Enterprise Linux es de código abierto, surgió un proyecto llamado CentOS , que
recopiló todos los paquetes RHEL y los entregó de forma gratuita. CentOS y otros similares
(como Scientific Linux ) son en gran parte compatibles con RHEL e integran software más nuevo, pero no
ofrecen el soporte pago que ofrece Red Hat.
Debian es más un esfuerzo de la comunidad y, como tal, también promueve el uso de software de código
abierto y el cumplimiento de los estándares. Debian ideó su propio sistema de administración de paquetes
basado en el .deb formato de archivo. Si bien Red Hat deja la compatibilidad con plataformas que no son Intel
y AMD para proyectos derivados, Debian admite muchas de estas plataformas directamente.
Ubuntu es la distribución derivada de Debian más popular. Es la creación de Canonical , una empresa que se
hizo para promover el crecimiento de Ubuntu y gana dinero brindando soporte.
1.2 Plataformas de hardware
Linux comenzó como algo que solo funcionaría en una computadora como la de Linus: una 386 con un
controlador de disco duro específico. El rango de soporte creció a medida que se creaba soporte para otro
hardware. Eventualmente, Linux comenzó a admitir otros conjuntos de chips, ¡incluido el hardware creado para
ejecutar sistemas operativos competitivos!
Los tipos de hardware crecieron desde el humilde chip Intel hasta las supercomputadoras. Finalmente, se
desarrollaron chips compatibles con Linux de menor tamaño para adaptarse a los dispositivos de consumo
(llamados dispositivos integrados). El soporte para Linux se volvió tan omnipresente que a menudo es más fácil
construir hardware para soportar Linux y luego usar Linux como un trampolín para su software personalizado
que construir el hardware y software personalizados desde cero.
Eventualmente, los teléfonos celulares y las tabletas adoptaron Linux. Una empresa, luego comprada por
Google, ideó la plataforma Android, que es un paquete de Linux y el software necesario para ejecutar un
teléfono o una tableta. Esto significa que el esfuerzo para llevar un teléfono al mercado es significativamente
menor. En lugar de un largo desarrollo de un nuevo sistema operativo, las empresas pueden dedicar su tiempo
a innovar en el software orientado al usuario. Android es ahora uno de los líderes del mercado en el espacio de
teléfonos y tabletas.
Aparte de los teléfonos y tabletas, Linux se puede encontrar en muchos dispositivos de consumo. Los
enrutadores inalámbricos a menudo ejecutan Linux porque tiene un amplio conjunto de funciones de red. El
TiVo es un grabador de video digital de consumo basado en Linux. Aunque estos dispositivos tienen Linux en el
núcleo, los usuarios finales no tienen que saber cómo usar Linux. El software personalizado interactúa con el
usuario y Linux proporciona la plataforma estable.

1.3 Shell
Un sistema operativo proporciona al menos un shell que permite al usuario comunicarse con el sistema
operativo. Un shell a veces se denomina intérprete porque toma los comandos que emite un usuario y los
interpreta en una forma que el kernel puede ejecutar en el hardware de la computadora. Los dos tipos más
comunes de shells son la interfaz gráfica de usuario (GUI) y la interfaz de línea de comandos (CLI).
Microsoft Windows™ generalmente usa un shell de GUI, principalmente usando el mouse para indicar lo que
desea lograr. Si bien el uso de un sistema operativo de esta manera puede considerarse fácil, el uso de una CLI
tiene muchas ventajas, entre ellas:
 Repetición de comandos : en un shell de GUI, no hay una manera fácil de repetir un comando
anterior. En una CLI hay una manera fácil de repetir (y también modificar) un comando anterior.
 Flexibilidad de comandos : el shell de la GUI proporciona una flexibilidad limitada en la forma en que
se ejecuta el comando. En una CLI, las opciones se especifican con comandos para proporcionar una
interfaz más flexible y potente.
 Recursos : un shell de GUI generalmente usa una cantidad relativamente grande de recursos (RAM,
CPU, etc.). Esto se debe a que se necesita una gran cantidad de memoria y potencia de procesamiento
para mostrar gráficos. Por el contrario, una CLI utiliza muy pocos recursos del sistema, lo que permite
que más de estos recursos estén disponibles para otros programas.
 Secuencias de comandos : en un shell de GUI, completar varias tareas a menudo requiere varios clics
del mouse. Con una CLI, se puede crear un script para ejecutar muchas operaciones complejas
simplemente escribiendo el nombre del script. Un script es una serie de comandos colocados en un solo
archivo. Cuando se ejecuta, el script ejecuta todos los comandos del archivo.
 Acceso remoto : si bien es posible ejecutar comandos en un shell de GUI de forma remota, esta
característica no suele configurarse de forma predeterminada. Con un shell CLI, obtener acceso a una
máquina remota es fácil y, por lo general, está disponible de forma predeterminada.
 Desarrollo : normalmente, los desarrolladores tardan más en crear un programa basado en GUI en
comparación con los programas basados en CLI. Como resultado, generalmente hay miles de
programas CLI en un sistema operativo Linux típico en comparación con solo un par de cientos de
programas en un sistema operativo basado principalmente en GUI como Microsoft Windows. Más
programas significan más potencia y flexibilidad.
El sistema operativo Microsoft Windows fue diseñado para usar principalmente la interfaz GUI debido a su
simplicidad, aunque también hay varias interfaces CLI disponibles. Para comandos simples, existe el cuadro de
diálogo Ejecutar, donde puede escribir o buscar los comandos que desea ejecutar. Si desea escribir varios
comandos o si desea ver el resultado del comando, puede usar el símbolo del sistema, también llamado shell
de DOS. Recientemente, Microsoft se dio cuenta de lo importante que es tener un entorno de línea de
comandos potente e introdujo Powershell.
Al igual que Windows, Linux también tiene una CLI y una GUI. A diferencia de Windows, Linux le permite
cambiar fácilmente el shell de la GUI (también llamado entorno de escritorio) que desea usar. Los dos entornos
de escritorio más comunes para Linux son GNOME y KDE; sin embargo, hay muchos otros shells de GUI
disponibles.
Para acceder a la CLI desde la GUI en un sistema operativo Linux, el usuario puede abrir un programa de
software llamado terminal . Linux también se puede configurar solo para ejecutar la CLI sin la GUI; esto
normalmente se hace en servidores que no requieren una GUI, principalmente para liberar recursos del
sistema.

1.3.1 Bourne Shell


El sistema operativo Linux no solo proporciona múltiples shells de GUI, sino que también hay disponibles
múltiples shells de CLI. Normalmente, estos shells se derivan de uno de los dos shells UNIX más antiguos:
Bourne Shell y C Shell. De hecho, el shell Bash, un shell CLI predeterminado que se usa en los sistemas
operativos Linux modernos, deriva su nombre de Bourne Shell: Bourne A gain SH ell . En este curso, se
concentrará en aprender a usar la CLI para Linux con el shell Bash, posiblemente la CLI más popular en Linux.
Los usuarios interactúan con un sistema ejecutando comandos que son interpretados por el shell y
transformados en acciones por el kernel. Estas acciones pueden o no devolver información a la línea de
comando según el comando emitido y su resultado. Por ejemplo, cuando lsse escribe el comando en la
consola, devolverá el contenido del directorio en el que se encuentre el usuario.

sysadmin@localhost : ~ $ ls
Escritorio Documentos Descargas Música Imágenes Público Plantillas Videos

Un comando puede ir seguido de opciones que modifican cómo se ejecuta el comando y argumentos, que
suelen ser los archivos en los que se va a operar:

comando [ opciones ] [ argumentos ]

Nota
Algunos comandos requieren opciones y argumentos, mientras que otros, como ls, se pueden usar solos.
Los comandos ingresados se consideran entrada estándar (stdin), ya sea que los ingrese un operador, un script
o como resultado de otro comando. El texto devuelto a la consola puede ser una salida estándar (stdout) o un
error estándar (stderr).
Este método engañosamente simple de comunicarse con el kernel de Linux es la base de casi todas las
interacciones que un administrador de Linux tiene con sus sistemas. Puede ser confuso al principio para los
usuarios que solo han experimentado interfaces GUI, pero finalmente le da al operador experimentado mucho
más poder que cualquier interfaz gráfica.
El shell Bash tiene numerosos comandos y funciones integrados que aprenderá, entre ellos:
 Alias : asigne a un comando un nombre diferente o más corto para que el trabajo con el shell sea más
eficiente.
 Reejecución de comandos : para evitar tener que volver a escribir largas líneas de comando.
 Coincidencia con comodines : utiliza caracteres especiales como ?, *y []para seleccionar uno o más
archivos como grupo para su procesamiento.
 Redirección de entrada/salida : utiliza caracteres especiales para redirigir la entrada, <o <<, y la
salida, >.
 Tuberías : se utiliza para conectar uno o más comandos simples para realizar operaciones más
complejas.
 Procesamiento en segundo plano : permite que los programas y comandos se ejecuten en segundo
plano mientras el usuario continúa interactuando con el shell para completar otras tareas.
El shell que usa su cuenta de usuario de forma predeterminada se establece en el momento en que se creó su
cuenta de usuario. De forma predeterminada, muchas distribuciones de Linux usan Bash para el shell de un
nuevo usuario. Por lo general, un usuario aprende un caparazón y se queda con ese caparazón; sin embargo,
después de haber aprendido los conceptos básicos de Linux, es posible que desee explorar las características
de otros shells.
Considera esto
Un administrador puede usar el usermodcomando para especificar un shell predeterminado diferente después
de que se haya creado la cuenta.
Como usuario, puede usar el chshcomando para cambiar su shell predeterminado. La mayoría de las veces, el
shell predeterminado que ofrece un sistema será adecuado para tareas básicas. Ocasionalmente, un
administrador querrá cambiar el shell para tener acceso a funciones más avanzadas, o simplemente porque
está más familiarizado con un shell diferente y las funciones que ofrece. En los sistemas que están cerca de su
capacidad, puede ser recomendable no cambiar los shells, ya que podría requerir recursos adicionales y un
procesamiento lento para todos los usuarios.
La ubicación donde el sistema almacena el shell predeterminado para las cuentas de usuario es
el /etc/passwdarchivo.

1.3.2 Acceso al Shell


La forma en que accede al shell de la línea de comandos depende de si su sistema proporciona un inicio de
sesión GUI o un inicio de sesión CLI:

 Sistemas basados en GUI : si el sistema está configurado para presentar una GUI, necesitará
encontrar una aplicación de software llamada terminal . En el entorno de escritorio de GNOME, la
aplicación de terminal se puede iniciar haciendo clic en el menú Aplicaciones, luego en el menú
Herramientas del sistema y el ícono Terminal.
 Sistemas basados en CLI : muchos sistemas Linux, especialmente los servidores, no están
configurados para proporcionar una GUI de forma predeterminada, por lo que presentan una CLI en su
lugar. Si el sistema está configurado para presentar una CLI, entonces el sistema ejecuta una aplicación
de terminal automáticamente después de iniciar sesión.

En los primeros días de la informática, los dispositivos terminales eran máquinas grandes que permitían a los
usuarios proporcionar entradas a través de un teclado y mostrar la salida imprimiendo en papel. Con el tiempo,
las terminales evolucionaron y su tamaño se redujo hasta convertirse en algo parecido a una computadora de
escritorio con un monitor de visualización de video para la salida y un teclado para la entrada.
Finalmente, con la introducción de las computadoras personales, las terminales se convirtieron en emuladores
de software del hardware real. Todo lo que escriba en la terminal es interpretado por su shell y traducido a un
formulario que luego puede ser ejecutado por el kernel del sistema operativo.
Si se encuentra en una ubicación remota, también se pueden realizar conexiones de pseudoterminales a través
de la red utilizando varias técnicas. Las conexiones inseguras se pueden realizar mediante protocolos
como telnety programas como rlogin, mientras que las conexiones seguras se pueden establecer mediante
programas como puttyy protocolos como ssh.

1.4 Sistemas de archivos


Además del kernel y el shell, el otro componente principal de cualquier sistema operativo es el sistema de
archivos. Para el usuario, un sistema de archivos es una jerarquía de directorios y archivos con el /directorio
raíz en la parte superior del árbol de directorios. Para el sistema operativo, un sistema de archivos es una
estructura creada en una partición de disco que consta de tablas que definen las ubicaciones de directorios y
archivos.

En este curso, aprenderá sobre los diferentes sistemas de archivos de Linux, los beneficios del sistema de
archivos y cómo crear y administrar sistemas de archivos usando comandos.

También podría gustarte