Capítulo 1 Introducción
Capítulo 1 Introducción
Capítulo 1 Introducción
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.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.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.
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:
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.
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.
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.