0% encontró este documento útil (0 votos)
14 vistas62 páginas

Introducción A Linux (En Proceso)

Comandos de linux para operar en redes de conecciones
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas62 páginas

Introducción A Linux (En Proceso)

Comandos de linux para operar en redes de conecciones
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 62

Introducción

a
Linux
INTRODUCCIÓN A LINUX

Introducción a Linux

#Introducción a Linux y Unix

¿Qué es un sistema operativo? Es un software que administra el hardware y los recursos de la


computadora y permite la interacción con el hardware para realizar tareas útiles.

¿Qué es Unix? Es una familia de sistemas operativos, algunos de los sistemas operativos más populares
basados en Unix incluyen: Oracle Solaris (y Open Solaris), FreeBSD, HP-UX, IBM AIX y Apple macOS, que
es uno de los sistemas operativos de escritorio más populares en la actualidad. En la década de 1960, se
creó el sistema operativo Unix original en AT&T Bell Labs, sin embargo, como muchos sistemas operativos
de la época, se creó para un sistema de hardware específico, en este caso, la computadora PDP-7. En la
década de 1970, el sistema operativo Unix se reescribió en C, distinguiéndose de otros sistemas y
haciéndolo portátil a muchas arquitecturas de hardware, luego, a finales de la década de 1970, la
Universidad de California en Berkley desarrolló Berkley Software Distribution (o BSD), un complemento de
Unix que proporcionaba software y capacidades adicionales. El famoso macOS se derivó más tarde de
BSD.

¿Qué es Linux? Linux es una familia de sistemas operativos tipo Unix, sin embargo, cuando se hace
referencia a Linux, la gente suele hablar de una distribución o versión específica, y Linux se desarrolló como
un esfuerzo por crear una versión gratuita y de código abierto del sistema operativo Unix. Las principales
características de Linux incluyen las siguientes:
●​ Linux es gratuito y de código abierto, lo que significa que cualquiera puede ver el código fuente.
●​ Con tantos ojos puestos en el código fuente, Linux se ha convertido en el sistema operativo más
seguro a lo largo de los años.
●​ Es multiusuario, Linux está diseñado para permitir que varios usuarios accedan al sistema
simultáneamente.
●​ Admite multitarea, ejecuta múltiples trabajos y aplicaciones al mismo tiempo.
●​ Linux es portátil.

Linux ha sido adaptado para ejecutarse en muchos tipos diferentes de dispositivos y plataformas de
hardware, desde computadoras de escritorio hasta servidores y dispositivos.

¿Cómo comenzó Linux? En la década de 1980, GNU se desarrolló en el MIT. GNU significa «GNU no es
Unix» y se creó como un conjunto gratuito y de código abierto de las herramientas existentes del sistema
Unix, y en 1991, Linus Torvalds desarrolló una versión gratuita y de código abierto del núcleo de Unix
llamada Linux (El núcleo es el componente central de un sistema operativo que permite que los
componentes se comuniquen con el hardware de la máquina).

Este es el famoso correo electrónico de Linus Torvalds, en el que compartía sus avances en la creación de
su propio núcleo de código abierto tipo Unix.
Hace referencia a minix, que en ese momento era otro núcleo similar a Unix, poco después, en 1992, se hizo
realidad el potencial de unificar GNU y el núcleo de Linux, con la aparición de los populares sistemas
operativos Linux, y en 1996, un informático llamado Larry Ewing creó el pingüino «Tux», que más tarde fue
adoptado por Linus Torvalds como mascota oficial de Linux, en la actualidad, el macOS basado en BSD
funciona en millones de dispositivos en todo el mundo.

Miles de millones de instancias de Linux se ejecutan en servidores, lo que nos sirve para la web
moderna, y especialmente entre los desarrolladores, los sistemas operativos Linux modernos, como Ubuntu,
están empezando a ganar popularidad en el ámbito de los PC.

¿Cuáles son los casos de uso más comunes de Linux en la actualidad? En primer lugar, se utiliza en
miles de millones de teléfonos inteligentes de todo el mundo a través del sistema operativo Android, que
utiliza un núcleo basado en Linux, y Linux también se usa ampliamente en supercomputadoras, donde
muchos servidores que funcionan con Linux se agrupan en clusters para aplicaciones informáticas de alto
rendimiento. Los centros de datos empresariales y en la nube también utilizan Linux en millones de
servidores que ejecutan todo tipo de aplicaciones, servidores web, bases de datos, etc, y por último,
las versiones de Linux se pueden utilizar fácilmente como sistema operativo de su PC, muchas
personas instalan Linux hoy en día como una experiencia de aprendizaje o como su motor diario.

#Distribuciones Linux

¿Qué es una distribución de Linux? Una distribución de Linux es una versión específica del sistema
operativo Linux, también se la puede denominar distribución. Todas las distribuciones de Linux deben
usar el núcleo de Linux, este es el componente principal del sistema operativo Linux que permite al sistema
utilizar correctamente el hardware del ordenador, y hoy en día, hay cientos de distribuciones de Linux,
cada una diseñada para una audiencia o tarea específica.

¿Qué diferencia a las distribuciones de Linux entre sí? Cada distribución de Linux incluye un
conjunto único de utilidades predeterminadas que forman parte del sistema operativo, como los
comandos y las aplicaciones que vienen pre empaquetados con la distribución, cada distribución tiene su
propia interfaz gráfica de usuario, o GUI, que se utiliza para interactuar con el sistema operativo, cada
distribución admite un conjunto específico de comandos que puede utilizar en un shell, una ventana
para introducir y recibir los resultados de los comandos, por último, cada distribución ofrece diferentes
niveles de soporte, podría desarrollarse y gestionarse como un proyecto respaldado por la comunidad o
mantenerse por una empresa comercial, y podría ser una versión con soporte a largo plazo, o LTS, o una
versión progresiva en la que las actualizaciones estables de los paquetes se publiquen de forma continua.

Debian es una de las primeras distribuciones rooteadas, la primera versión fue publicada en 1993
(denominada versión 0.01) y la primera versión estable oficial en 1996 (versión 1.1), es conocida por ser
estable, fiable y de código totalmente abierto, es compatible con muchas arquitecturas informáticas
(o tipos de hardware), estas características hacen que Debian sea muy apreciado en el ámbito de los
servidores, además, Debian es la mayor distribución gestionada por la comunidad disponible actualmente.

Otra distribución popular es Ubuntu, también es una distribución muy arraigada, con su primer
lanzamiento oficial en 2004, Ubuntu está basado en Debian, lo que significa que está construido sobre este y
utiliza muchas de las mismas herramientas que el sistema operativo Debian. Ubuntu está desarrollado y
gestionado por Canonical, y tiene tres ediciones oficiales:

●​ Desktop (para ordenadores personales, portátiles y estaciones de trabajo).


●​ Server (para servidores de archivos simples o nubes multinodo).
●​ Core (para Internet de las cosas).

Red Hat Linux, al igual que Debian, es una distribución de Linux «básica», lo que significa que no se
deriva de otra distribución de Linux. Red Hat es conocida por ser estable, fiable y de código totalmente
abierto, está gestionada por Red Hat, una filial de IBM, en la actualidad, se distribuye bajo el nombre de
Red Hat Enterprise Linux (o RHEL), una edición que se centra exclusivamente en los clientes
empresariales.

El siguiente es Fedora, conocido como un sistema operativo estable que admite muchas arquitecturas,
también es muy confiable y seguro, y ofrece características únicas de firewall y seguridad. Se desarrolla
activamente, con una comunidad grande y en crecimiento, y está patrocinado por Red Hat, en consecuencia,
Red Hat utiliza gran parte del código base de Fedora (después de probarlo, por supuesto).

Otra distribución de Linux es SUSE Linux Enterprise, también conocida como SLE, SUSE Linux
Enterprise está disponible en dos ediciones: Server (SLES), y Desktop (SLED), es compatible con
muchas arquitecturas, como ARM para Raspberry Pi, y utiliza el SUSE Package Hub, que permite a los
usuarios instalar paquetes que no forman parte oficialmente de SLE, y lo mantiene la pequeña empresa
alemana de software de código abierto, SUSE.

Por último, tenemos Arch Linux, el enfoque único de Arch Linux, basado en «hágalo usted mismo»,
permite a los usuarios personalizar cada parte de su sistema, esto lo hace altamente configurable, una
libertad que hace que Arch sea muy popular, pero también significa que es necesario tener un buen
conocimiento de Linux y de las herramientas del sistema para poder utilizar Arch de forma eficaz, y como
Arch no se centra en la estabilidad de la misma manera que otras distribuciones, tiene fácil acceso al
software más reciente, lo que tiene pocas garantías de que sea completamente estable.

#Visión general de la arquitectura Linux

El sistema Linux consta de cinco capas distintas:

●​ La capa más externa de la arquitectura Linux es la interfaz de usuario, que permite a los usuarios
realizar tareas controlando las aplicaciones con el teclado. Las versiones de escritorio de Linux incluyen
una interfaz gráfica de usuario, o capa GUI, similar a la de Microsoft Windows. Esto amplía la
funcionalidad de la interfaz de usuario a otros dispositivos de control, como un ratón.
●​ La capa de aplicación incluye los demonios del sistema, las consolas, las aplicaciones de usuario y las
herramientas que se utilizan para realizar tareas en un sistema Linux, las aplicaciones se comunican con
el sistema operativo para realizar tareas.
●​ El sistema operativo es responsable de las tareas que son vitales para la estabilidad del sistema, como
la programación de las tareas y el registro del tiempo, sus funciones también incluyen:
○​ Asignar el software a los usuarios.
○​ Detectar errores.
○​ Implementar medidas para evitar fallas totales del sistema.
○​ Realizar la administración de archivos.
Todos los sistemas operativos Linux se basan en el núcleo de Linux, que realiza las tareas más
importantes de nivel inferior.
●​ El núcleo es el componente principal del sistema operativo y es responsable de administrar la
memoria, el procesamiento y la seguridad, es el software de nivel más bajo de un sistema Linux y
tiene el control total del sistema, se inicia tan pronto como se inicia el equipo y permanece en la
memoria del equipo mientras el sistema está en funcionamiento. También actúa como puente entre
las aplicaciones y el hardware, incluye todos los dispositivos físicos o electrónicos del ordenador,
como los procesadores, los módulos de memoria, los dispositivos de entrada y el almacenamiento, de la
máquina lo que permite que ambas se comuniquen de forma eficaz mediante «llamadas al
sistema». El núcleo cumple cuatro funciones principales:
○​ Gestionar la memoria.
○​ Gestionar los procesos.
○​ Gestionar los controladores de los dispositivos para garantizar el correcto soporte del hardware.
○​ Garantizar la seguridad del sistema.
●​ La última capa del sistema Linux es el hardware, formado por los dispositivos físicos o electrónicos
que componen el ordenador. Esta capa puede incluir lo siguiente:
○​ La unidad central de procesamiento, o CPU, es responsable de ejecutar la mayoría de los cálculos.
○​ La memoria de acceso aleatorio, o RAM, que es una unidad de almacenamiento rápido que se
utiliza para almacenar la información temporal que las aplicaciones necesitan para ejecutarse.
○​ Almacenamiento para los datos que deben conservarse cuando el ordenador está apagado.
○​ La pantalla de tu ordenador.
○​ Cualquier dispositivo USB, como un teclado, un ratón o una unidad USB.

El sistema de archivos de Linux es la colección de archivos de su máquina. Incluye los archivos


necesarios para ejecutar la máquina y las aplicaciones, así como sus propios archivos que contienen
su trabajo. El nivel superior del sistema de archivos es el directorio raíz, simbolizado por una barra
inclinada (/), debajo hay una estructura en forma de árbol de los directorios y archivos del sistema, además,
el sistema de archivos asigna los derechos de acceso adecuados a los directorios y archivos.

Uno de los directorios clave es /bin, que contiene los archivos binarios de los usuarios, los archivos
binarios contienen el código que lee su máquina para ejecutar programas y comandos. Se llama
«barra diagonal» para indicar que se encuentra justo debajo del directorio raíz.

Otros directorios clave son /usr, que contiene los programas de usuario:
●​ /home, que es su directorio de trabajo personal donde debe almacenar todos sus archivos personales.
●​ /boot, que contiene los archivos de arranque del sistema, las instrucciones esenciales para el inicio del
sistema.
●​ /media, que contiene archivos relacionados con soportes temporales, como unidades de CD o USB que
están conectadas al sistema.

Hay varios otros directorios en el directorio raíz, pero no necesitará acceder a ellos durante este
curso.

Todos los archivos y directorios de un sistema Linux se organizan en una de estas carpetas designadas,
según el propósito del archivo o directorio.

#Visión general del terminal Linux

El shell de Linux es una aplicación a nivel de sistema operativo que interpreta comandos, en las
primeras versiones de Unix y Linux, el shell era la única forma de interactuar con el sistema operativo, en la
actualidad, también se pueden utilizar interfaces gráficas de usuario, pero la consola sigue siendo una opción
popular y flexible, y una forma sencilla de ejecutar archivos de script.

Puede utilizar los comandos del shell para realizar tareas como mover y copiar archivos, escribir y
leer archivos, extraer y filtrar datos y buscar datos.

Existen muchas versiones de shell, pero la funcionalidad básica de la mayoría es la misma, algunos
ejemplos populares incluyen: Bash And Zsh.

Se interactúa con el shell de Linux a través de una terminal de Linux, un terminal es una aplicación, o
interfaz de usuario, en la que se introducen los comandos que se desean ejecutar y se recibe
cualquier resultado de esos comandos, por ejemplo, para iniciar la aplicación Python y ejecutar un
programa llamado «myprogram.py», escriba python space myprogram.py, al pulsar Entrar, el shell ejecuta el
comando.

Este programa imprime las palabras «¡Hola, mundo!» a la terminal, entonces,


¿Cómo se ejecutan los comandos?

En primer lugar, tenemos un usuario que quiere ejecutar un comando. Introducen el comando en una
terminal, que luego se transmite al shell, los componentes principales del sistema operativo y del núcleo
traducen el comando para que lo ejecute el hardware, cuando el hardware completa el comando, el
núcleo lee los cambios o los resultados y los envía de vuelta a la terminal a través del shell para su
información al usuario. El terminal es una forma eficaz de ejecutar aplicaciones e interactuar con su
máquina.

La mayoría de los terminales tienen una interfaz de usuario similar para introducir comandos, el área en la
que se introducen los comandos se denomina línea de comandos, y la línea vertical, o cursor, es la línea
de comandos, esto indica dónde se mostrará el texto que escriba.

En este ejemplo, el directorio de trabajo actual es el directorio de documents, que está dentro del
directorio me, que está dentro del directorio principal. El directorio de trabajo actual es la ubicación en la que
el shell buscará los comandos que especifique para ejecutar, por ejemplo, el programa Python del ejemplo
anterior.

No todos los terminales muestran la ubicación completa, o la ruta, del directorio actual, por lo que
algunos solo muestran los documentos aquí. La ruta es la ubicación legible por humanos de un
directorio o archivo en el sistema de archivos de Linux. La estructura «a / b» indica que el archivo o
directorio denominado «b» se encuentra dentro del directorio denominado «a».

También hay rutas especiales:


●​ un solo símbolo de tilde hace referencia al directorio principal del usuario.
●​ Una sola barra al principio de una ruta hace referencia al directorio raíz.
●​ Dos puntos hacen referencia al directorio principal del directorio actual.
●​ un solo punto se refiere al directorio actual.

Entonces, veamos cómo puedes usar el terminal para cambiar el directorio de trabajo actual:

1.​ Usa el comando cd que significa cambiar de directorio.


2.​ Introduzca cd/ para ir al directorio raíz.
3.​ Introduzca cd bin para ir al directorio bin.
4.​ El directorio bin, que se encuentra dentro de la raíz, contiene los programas requeridos por el
sistema. Uno de estos programas, o archivos ejecutables, se denomina «ls».
5.​ Puede ejecutar el programa “ls” en el directorio de trabajo actual ingresando /ls, se usa para mostrar
en la ventana del terminal los nombres de todos los archivos y directorios del directorio actual.
6.​ Muchos comandos ubicados en la carpeta bin también están integrados en el shell, por lo que
también puede ejecutarlos desde otras ubicaciones.
7.​ Navegue hasta su directorio principal con cd ~ y aunque el directorio de trabajo actual, /home/me, no
contenga el programa ls, <click10> podrá ejecutar el comando correctamente.

Veamos algunos ejemplos más:

1.​ Empezando por el directorio /home Introduzca «cd..» para cambiar el directorio de trabajo actual por el
principal del directorio de trabajo actual existente, por lo tanto, en este ejemplo, el directorio principal de
/home es/, o sea, el directorio raíz.
2.​ Para, a continuación, ir a una unidad USB llamada my-usb-drive en el directorio multimedia, introduzca
cd /media/my-usb-drive.
3.​ También puede navegar hacia arriba y hacia abajo en el árbol con un solo comando. Para navegar
hasta el directorio multimedia y luego hasta la raíz, escriba “cd../..”.
4.​ A continuación para navegar hasta el directorio de documentos en el directorio “me” del directorio
principal, escriba /home/me/documents, pulse Entrar para enviar el comando y pasar a la carpeta
Documents.
5.​ Vamos al directorio /home/me, iniciemos la aplicación Python y ejecutemos un programa en el directorio
/home/me llamado myprogram.py, este programa devuelve un mensaje a la ventana del terminal.

#Exploración de directorios con el terminal de Linux

La terminal de Linux: Puede interactuar con el shell de Linux ingresando comandos en la terminal de
Linux, que también se conoce comúnmente como línea de comando o símbolo del sistema.

En este caso, el directorio de trabajo actual es /home/project, como lo indica el texto azul.

El signo de dólar ($) que le sigue se denomina símbolo del sistema.

Recuerde que una ventana de terminal es una interfaz de usuario simple que le permite ejecutar
cualquier comando que desee, simplemente escribiendo el comando en su teclado y presionando Enter.

Muchos comandos responderán devolviendo algún tipo de resultado, que de forma predeterminada aparece
como texto en la ventana de su terminal.

Veamos cómo funciona esto usando algunos de los comandos más comunes de Linux, los comandos
pwd y ls:
Aquí ingresamos el comando pwd, que imprime el nombre de la ruta de nuestro directorio de trabajo actual
en la siguiente línea, puedes ver que el comando imprime lo que esperábamos, que es la ruta al directorio
de trabajo actual, /home/project, observe también que el símbolo del sistema aparece nuevamente en la
siguiente línea, esperando su próximo comando.

Ahora, ¿cómo ves lo que hay dentro de tu directorio de trabajo actual?, puede usar el comando ls para
enumerar el contenido del directorio en el que está trabajando actualmente, por el momento, el
directorio /home/project es nuevo y no contiene nada todavía, por lo que ingresar el comando no devolverá
nada:

Al ser un programa conservador, ls no se molestará en imprimir una línea en blanco para expresar que
no hay nada que enumerar.

Veamos si podemos encontrar un directorio que ya contenga contenido, puede enumerar el


contenido de cualquier directorio con el comando ls especificando el nombre del directorio que
desea explorar, por ejemplo, ls /home enumera el contenido del directorio /home:

Puede ver que el directorio /home contiene dos objetos, a saber, proyecto y theia.

Observe la convención de nomenclatura para la ruta de un directorio: /home/project indica que el


directorio del proyecto es un subdirectorio de /home. La ruta para el subdirectorio theia también
sería/home/theia.

Como un árbol, su sistema de archivos Linux tiene un directorio raíz (/, llamado "barra diagonal") desde
el cual se ramifica todo su sistema de archivos Linux.
Un subdirectorio importante de su directorio raíz es home, puede comprobarlo usted mismo ingresando /
para enumerar el contenido de /:

#Consejos para el terminal de Linux - Completar pestañas, historial de comandos

Completar pestaña: Muchos shells admiten una función llamada finalización de tabulación.

La finalización con tabulación le permite autocompletar un comando que está escribiendo en la línea de
comando.

Supongamos que estás en tu directorio de inicio ~, que contiene los directorios:


•​ Pictures
•​ Videos
•​ Documents
•​ Downloads

Y supongamos que su carpeta Documents solo contiene la carpeta:


•​ Python-examples

Finalización de pestañas: En este ejercicio, utilizará la función de tabulación para ingresar


rápidamente un comando para navegar al directorio pictures:

Si escribes:

y presione Tab, el shell auto completará el comando para:

porque el directorio Pictures es el único directorio dentro de su carpeta actual que comienza con una "P".

Completar tabulación para rutas largas: También puede utilizar la función de finalización con tabuladores
para autocompletar rutas más largas.

Si escribes:

y presione Tab, no sucederá nada porque su directorio actual contiene más de un directorio que comienza
con "Do". El shell no sabrá si autocompletar con Documents o Downloads.
Por otro lado, si escribes:

y presione Tab, el shell se autocompletar para:

porque en este caso, sólo hay un directorio que comienza con "Doc", Documents.

Si presiona Tab nuevamente, el shell se autocompletar para:

porque la carpeta python-examples es el único archivo existente dentro del directorio ~/Documentos,
con solo unos pocos clics, puedes autocompletar rápidamente rutas más largas en tu línea de comando.
Historial de comandos: El historial de comandos le permite navegar por los comandos anteriores que
ingresó usando las teclas de flecha hacia arriba y flecha hacia abajo.
Digamos que ha creado un script de Python llamado hello_world.py en su directorio python-examples que
simplemente imprime ¡Hola, mundo! cuando lo ejecutas.

Considere que acaba de ingresar la siguiente secuencia de comandos y que el shell está esperando su
próxima entrada:

En los siguientes ejercicios, aprenderá cómo volver a ejecutar un comando anterior sin tener que volver a
escribirlo presionando la tecla de flecha hacia arriba.

Ejecutando el último comando: Si presiona la tecla de flecha hacia arriba una vez, el shell insertará
automáticamente el último comando que ingresó:

Observe que el último comando que ingresó fue cd /, que se insertó automáticamente en la línea de
comando.

Ejecutando el comando anterior de la sesión: Si presiona la tecla de flecha hacia arriba dos veces
más (es decir, tres veces en total), el shell insertará automáticamente el comando que ejecutó hace
tres comandos:

En este caso, el comando que ejecutó hace tres comandos fue cd ~/Documents/python-examples, tenga en
cuenta que la línea de salida está impresa, ¡Hola, mundo!, no cuenta como un comando. El historial de
comandos sólo lo llevará a través de los comandos que ingresó, no a todas las líneas visibles en la
terminal.

Presione Entrar para regresar a su directorio ~/Documentos/python-examples. Deberías ver algo


como lo siguiente:

#Creacion y edicion de archivos de texto

Utiliza editores de texto para escribir código en su entorno Linux, hay muchos editores para elegir y
se pueden agrupar en dos categorías principales:

●​ Editores de texto de línea de comandos, algunos ejemplos:


○​ GNU nano, un editor de texto sin modelo pequeño y amigable vi, un editor de línea de comandos
tradicional creado originalmente para Unix y vim, un potente editor de línea de comandos basado en
modos basado en vi.
GNU nano es un editor de texto de línea de comandos que proporciona:
●​ Funciones de deshacer y rehacer.
●​ Buscar y reemplazar con soporte para expresiones regulares en la cadena de búsqueda.
●​ Resaltado de sintaxis.
●​ Sangría automática del código Numeración de líneas.
●​ desplazamiento línea por línea.
●​ múltiples búferes para que pueda trabajar con muchos archivos al mismo tiempo.

Para abrir un archivo de texto en nano, escriba nano seguido del nombre del archivo para
abrirlo, se abrirá una nueva ventana del editor de texto en la que podrá editar el archivo. Así
es como se ve la aplicación nano.

El área principal muestra el texto del archivo abierto, que en este caso es el texto fuente de la
nanopágina de Wikipedia. El cursor se encuentra actualmente al principio del archivo, pero puedes
navegar dentro del texto con las teclas de flecha, las teclas de arriba y abajo de página o las teclas
de inicio y fin. Cualquier texto que escriba se introduce en el cursor. También puede eliminar texto
con las teclas Eliminar y Retroceso. Al pulsar Entrar se inicia una nueva línea. En la parte inferior
de la nanoventana hay una lista de comandos que puede utilizar en el editor, para acceder a los
comandos, pulse simultáneamente «control» y la letra correspondiente al comando, por ejemplo,
para obtener ayuda, presiona las teclas «control» y «G».

●​ Editores de texto GUI, un popular editor basado en GUI es:


○​ Gedit, que es el editor predeterminado del entorno GNOME, y emacs (e'-max) es otro editor de
texto que es uno de los proyectos gratuitos y de código abierto más antiguos que aún están en
desarrollo, puede usar emacs en modo GUI o dentro de una línea de comandos. Gedit es un
editor de texto moderno y popular que viene preinstalado en la mayoría de las distribuciones de
Linux, está diseñado como un editor de texto de uso general y, de acuerdo con la filosofía del
proyecto GNOME, hace hincapié en la simplicidad y la facilidad de uso, con una GUI limpia y
sencilla, Gedit ofrece numerosas funciones para mejorar la experiencia de edición de texto, entre
las que se incluyen:
■​ Un navegador de archivos integrado.
■​ Funciones de deshacer y rehacer.
■​ Funciones de búsqueda y sustitución con soporte para expresiones regulares en la cadena de
búsqueda.
■​ Extensibilidad mediante complementos del paquete gedit-plugins.

El editor de texto utiliza códigos de colores sintácticos para ayudarle a interpretar y centrarse en
diferentes aspectos del código.

Veamos cómo usar algunas de las opciones de edición.

Para buscar una cadena de texto:

1.​ Puedes presionar la tecla «Control W» para usar la opción «Dónde está».
2.​ Esto abre un nuevo panel en la parte inferior de la ventana de la aplicación, esta es una vista más
detallada de este nuevo panel.

3.​ Dentro de los corchetes, puede ver la cadena buscada más recientemente, que aquí es 1999.
4.​ Escriba la cadena que desee buscar, por ejemplo, «https», y pulse Entrar.
5.​ El cursor se mueve a la primera instancia de la cadena de búsqueda que encuentre después de la
posición actual del cursor, aquí.

Nano admite muchas otras funciones de edición que explorará en uno de los laboratorios de este
curso.

Vim es un editor de línea de comandos tradicional y muy potente, acostumbrarse a su funcionamiento lleva
algún tiempo, pero con un poco de práctica los dedos desarrollarán la memoria muscular necesaria para
realizar todas las tareas de edición de texto a gran velocidad. Al escribir vim en la línea de comandos, se
abre la aplicación vim, también puede especificar un nombre de archivo para editar un archivo nuevo o
existente. Vim tiene dos modos básicos:
●​ El modo Insertar, en el que se introduce texto.
●​ El modo Comando, en el que se hace todo lo demás.

Después de iniciar una sesión de vim:


1.​ Presiónalo para entrar en el modo Insertar.
2.​ Escriba algún texto, por ejemplo «algún texto», y pulse la tecla Escape para salir del modo Insertar y
pasar al modo Comando, y el texto se escribe en el búfer en la ubicación actual del cursor.
3.​ Ahora ha vuelto al modo de comando y puede guardar el archivo con un nombre de archivo utilizando
el comando «guardar con dos puntos» junto con un nombre de archivo, como «example punto txt».
4.​ El búfer se escribe en el archivo y aparece un mensaje en el que se muestra el nombre del
archivo, que se trata de un archivo nuevo, que tiene una línea con 10 columnas y que se ha escrito
correctamente.
5.​ Ahora que el archivo ya existe, puede usar el comando «coma w», más común, para escribir
cualquier cambio en el archivo.
6.​ Para salir de tu sesión de vim, escribe «dos puntos q».
7.​ Y para cerrar y descartar cualquier cambio realizado desde la última operación de escritura, incluye
el «bang» o signo de exclamación, como en «coma q bang».

Esta fue una introducción muy breve a vim. Hay muchos comandos que puede utilizar para navegar por el
búfer de texto y realizar operaciones como buscar, copiar, pegar y mover texto.
#Instalación de software y actualizaciones

Tanto las actualizaciones de software como los archivos de instalación de software para los sistemas
operativos Linux se distribuyen en archivos conocidos como paquetes, estos paquetes son archivos de
almacenamiento que contienen los componentes necesarios para instalar software nuevo o actualizar el
software existente.

Los administradores de paquetes se utilizan para gestionar la descarga e instalación de los paquetes, las
distintas distribuciones de Linux proporcionan distintos gestores de paquetes: algunos están basados en
una interfaz gráfica y otros son herramientas de línea de comandos. Los administradores de
paquetes de los sistemas operativos Linux utilizan los paquetes Deb y RPM, son tipos de archivos
distintos que contienen software o actualizaciones para diferentes sistemas operativos Linux.

Los archivos.deb se utilizan en distribuciones basadas en Debian, como Debian, Ubuntu y Mint. Deb
son las siglas de Debian.

Los archivos.rpm se utilizan en distribuciones basadas en Red Hat, como CentOS/RHEL, Fedora y
openSUSE. RPM son las siglas de Red Hat Package Manager.

Los formatos Deb y RPM son equivalentes, por lo que el contenido del archivo se puede utilizar en otros
tipos de sistemas operativos Linux.

Si descubre que un paquete que desea usar solo está disponible en el otro formato, puede convertirlo
con la herramienta alienígena:
●​ Convertir paquetes del formato RPM a deb, simplemente use el comando alien y especifique el
nombre del paquete que desea convertir.
●​ Para convertirlos al formato RPM, utilice el conmutador —r con el comando alien.

Los administradores de paquetes ofrecen varias ventajas:


●​ Pueden resolver automáticamente las dependencias entre los paquetes.
●​ Avisarle cuando haya actualizaciones disponibles.
●​ Los administradores de paquetes basados en una interfaz gráfica de usuario pueden comprobar
automáticamente las actualizaciones de seguridad y software de forma periódica.
●​ Pueden instalar automáticamente las actualizaciones o permitirle seleccionar e instalar solo las que
desee.

Los gestores de paquetes de distribuciones Linux basados en una interfaz gráfica de usuario
incluyen PackageKit y Update Manager.

Update Manager es una herramienta de interfaz gráfica de usuario para actualizar sistemas Linux
basados en deb, de forma predeterminada, Update Manager comprueba diariamente si hay actualizaciones
de software y descarga e instala automáticamente todas las actualizaciones de seguridad a diario, todas las
demás actualizaciones se muestran semanalmente. También puedes comprobar manualmente si hay
actualizaciones en cualquier momento. Update Manager le avisará cuando haya actualizaciones de
software disponibles:
1.​ Seleccione las actualizaciones que desee instalar.
2.​ Haga clic en «Instalar actualizaciones».
3.​ Si se le solicita, introduzca su contraseña de usuario y haga clic en Aceptar.

Además, Update Manager instala las actualizaciones en segundo plano mientras sigues trabajando.

Apt es una herramienta de línea de comandos para actualizar sistemas Linux basados en deb, utiliza
el comando «sudo apt update» para buscar los paquetes disponibles para su distribución. El resultado de
este comando muestra todos los paquetes disponibles, crea un árbol de dependencias y permite saber
cuántos paquetes se pueden actualizar, para instalar los paquetes, utilice el comando «sudo apt
upgrade». Si solo desea instalar un paquete específico, puede usar «sudo apt
upgrade<package-name>».

PackageKit es una herramienta gráfica para actualizar sistemas Linux basados en RPM, cuando hay
actualizaciones disponibles, PackageKit muestra un icono con forma de estrella en forma de estrella en el
área de notificaciones. Comprueba automáticamente si hay actualizaciones en un intervalo
configurable, y también puedes comprobarlas manualmente en cualquier momento. Al hacer clic en el
icono en forma de estrella:
1.​ Se abre la ventana de actualizaciones de software, en la que se muestran todas las actualizaciones de
software disponibles.
2.​ Seleccione las actualizaciones que desee instalar.
3.​ Haga clic en Instalar actualizaciones.
4.​ Si se le solicita, introduzca su contraseña de usuario y haga clic en Aceptar.

PackageKit instalará las actualizaciones en segundo plano mientras continúa trabajando.

Yum es una herramienta de línea de comandos para actualizar sistemas basados en RPM. yum son las
siglas de Yellowdog Updater, Modified. Para actualizar todos los paquetes de su sistema:
●​ Escriba «sudo yum update»
●​ Después de introducir su contraseña.
●​ Yum obtendrá todas las actualizaciones de paquetes disponibles.
●​ Luego muestra un resumen de las actualizaciones y te pide que confirmes la descarga.
●​ Si se confirma, yum descarga todas las actualizaciones de los paquetes y actualiza los paquetes del
sistema.
●​ Cuando termine, mostrará el mensaje de éxito «¡Completado!»

También puede usar herramientas de línea de comandos para instalar software nuevo. Utilice el
comando apt con el conmutador install para instalar un paquete en un sistema basado en deb,
además, utilice el comando yum con el conmutador de instalación para instalar el software en un
sistema basado en RPM.

Muchas aplicaciones de software utilizan gestores de paquetes, como los populares paquetes pip o
conda, para gestionar los entornos de Python. Por ejemplo, suponiendo que ya dispongas de un entorno
Python y del paquete pip correspondiente, puedes instalar fácilmente la popular biblioteca «pandas» que se
utiliza para el procesamiento de datos en Python.
●​ Escribe «pip install pandas» para indicar al administrador de paquetes pip que: busque el paquete
pandas más reciente, descargue el paquete pandas, compruebe las dependencias y actualiza según sea
necesario e instale el paquete pandas.
●​ Cuando se complete la instalación, el administrador de paquetes mostrará el nuevo número de versión
del software.

#Hoja de trucos: Introducción a Linux

Consejos para terminales Linux:


●​ Utilice la función de tabulación para autocompletar nombres de rutas y nombres de comandos.
●​ Desplácese por su historial de comandos con las teclas de flecha hacia arriba y hacia abajo para buscar
y volver a ejecutar un comando que ya usó.

Consiguiendo información

Muestre el manual de referencia para el comando ls:

Navegación y directorios de navegación


Caminos especiales

Listar archivos y directorios en el directorio actual:

Listar archivos y directorios en un directorio:

Ruta de retorno al directorio de trabajo actual:

Cambie el directorio actual a un subdirectorio:

Actualización e instalación de paquetes

Obtenga y muestre información actualizada sobre todos los paquetes actualizables:

Actualice a la última versión compatible de nano:

Instalar Vim:

Crear y editar archivos

Crea un nuevo archivo de texto y ábrelo con nano:


INTRODUCCIÓN A COMANDOS DE LINUX

Comandos de Información, navegación y gestión

#Visión General de los comandos comunes del shell de Linux

Un shell:
●​ Es una potente interfaz de usuario para sistemas operativos tipo Unix, puede interpretar comandos y
ejecutar otros programas.
●​ Permite el acceso a archivos, utilidades y aplicaciones.
●​ Es un lenguaje interactivo.
●​ Es un lenguaje de secuencias de comandos.
●​ Se puede usar para automatizar tareas.

El shell predeterminado en los sistemas Linux suele ser Bash, otras conchas son «la concha Bourne, S
H», «la concha Korn», la K S H, la concha «T C», la «concha Z» y la «pecera». Para este curso, solo
usaremos la concha Bash, que son las siglas de «bourne again shell».

Para saber cuál es el valor predeterminado, escribe «printenv SHELL» en la línea de comandos, esto
devuelve la ruta al programa shell predeterminado, que en este caso es bash. Si tu shell predeterminado
no es Bash, siempre puedes cambiarte a él, simplemente introduciendo «bash» en la línea de
comandos.

Usaremos el signo del dólar para representar la línea de comandos a lo largo de este curso, fuera de
este curso, es posible que se utilice el símbolo «mayor que» con el mismo propósito.

Las aplicaciones de los comandos shell incluyen:


●​ Obtener información.
●​ Navegar y trabajar con archivos y directorios.
●​ Imprimir el contenido de archivos y cadenas.
●​ Comprimir y archivar archivos.
●​ Realizar operaciones de red.
●​ Supervisar el rendimiento y el estado del sistema, sus componentes y aplicaciones.
●​ Ejecutar trabajos por lotes, como las operaciones de ETL.

Algunos comandos de shell comunes para obtener información son:


●​ whoami -> Devuelve el “nombre de usuario”.
●​ id -> Devuelve el usuario actual y los ID de grupo.
●​ uname -> Devuelve el nombre del sistema operativo.
●​ ps -> Muestra los procesos en ejecución y sus ID.
●​ top -> Muestra los procesos en ejecución y el uso de recursos, incluida la memoria, la CPU y las E/S.
●​ df -> Muestra información sobre los sistemas de archivos montados.
●​ man -> Busca el manual de referencia de cualquier comando de shell.
●​ date -> Imprime la fecha actual.

Algunos comandos de shell comunes para trabajar con archivos son:


●​ cp -> copiar archivo.
●​ mv -> cambiar el nombre o la ruta del archivo.
●​ rm -> eliminar archivo.
●​ touch -> crear un archivo vacío, actualizar la marca de tiempo del archivo.
●​ chmod -> cambiar o modificar los permisos del archivo.
●​ wc -> obtener el recuento de líneas, palabras, caracteres del archivo.
●​ grep -> devuelve las líneas con un patrón coincidente con el archivo.

Los comandos de shell más comunes para navegar y trabajar con directorios incluyen:
●​ ls -> lista los archivos y directorios del directorio actual.
●​ find -> se usa para buscar archivos que coincidan con un patrón en el árbol de directorios actual.
●​ pwd -> imprime el directorio actual o «en funcionamiento».
●​ mkdir -> crea un nuevo directorio.
●​ cd -> cambia el directorio actual a otro directorio.
●​ rmdir -> elimina un directorio completo.

Para imprimir el contenido o las cadenas de un archivo, los comandos más comunes incluyen:
●​ cat -> que imprime todo el contenido de un archivo.
●​ more -> que se utiliza para imprimir el contenido del archivo una página a la vez.
●​ head -> para imprimir solo las primeras «N» líneas de un archivo.
●​ tail -> para imprimir las últimas «N» líneas de un archivo.
●​ echo -> que «hace eco» de una cadena de entrada al imprimirla, también puede «hacer eco» del valor
de una variable.

Los comandos de shell relacionados con las aplicaciones de compresión y archivado de archivos
incluyen:
●​ tar -> que se utiliza para archivar un conjunto de archivos.
●​ zip -> que comprime un conjunto de archivos.
●​ unzip -> que extrae los archivos de un archivo comprimido o comprimido.

Las aplicaciones de red incluyen las siguientes:


●​ hostname -> imprime el nombre del host.
●​ ping -> envía paquetes a una URL e imprime la respuesta.
●​ ifconfig -> muestra o configura las interfaces de red en el sistema.
●​ curl -> muestra el contenido de un archivo ubicado en una URL.
●​ wget -> se puede usar para descargar un archivo desde una URL.

Debemos mencionar que si está ejecutando una máquina con Windows y desea ejecutar Linux en
ella, puede hacerlo de varias maneras.
●​ Linux se puede instalar en una partición de disco separada, el cambio entre los dos sistemas
operativos requiere un reinicio.
●​ Puede instalar Linux en una máquina virtual o puede instalar un emulador de Linux como CygWin o
usar el subsistema de Windows para Linux, una capa de compatibilidad para ejecutar ejecutables
binarios de Linux de forma nativa en Windows.

#Comandos Informativos

Puede utilizar comandos informativos del terminal para mostrar información del usuario sobre el
sistema.

Los comandos de información de usuario son útiles cuando se necesita verificar la identidad del usuario
actual o determinar en qué cuenta de usuario se está ejecutando un comando o proceso concreto.

El comando «whoami» muestra el nombre de usuario del usuario actual, el comando «whoami» no
acepta argumentos ni tiene opciones.
Aquí puede ver un ejemplo de uso para alguien que ha iniciado sesión como usuario «John Doe», del mismo
modo, el comando «id» devuelve el ID de usuario o grupo, que es un número asignado a cada usuario o
grupo del sistema Linux.

En este ejemplo, si se utiliza «id» con la opción «menos u», se obtiene el ID numérico del usuario. Si desea
que el nombre corresponda al ID de usuario numérico, añada la opción «menos n».

El comando «uname», que significa «nombre de Unix», devuelve información del sistema operativo,
como el nombre del núcleo y el número de versión.

Esto se puede utilizar para identificar el tipo de sistema en el que se está trabajando o para diagnosticar
problemas relacionados con el sistema. Al introducir el comando uname, se devuelve el nombre del
sistema operativo, que en este caso es Darwin. Si se incluyen las opciones «menos s» y «menos r» se
obtiene tanto el nombre del sistema operativo como su versión, también puede ver información de versión
más detallada con la opción «menos v».

Puede usar el comando «df» o «disk free» para mostrar el uso de disco del sistema, puede resultar útil
en situaciones en las que necesite supervisar el uso del disco o comprobar el espacio disponible en un
sistema de archivos concreto.

Por ejemplo, si escribe «df menos h tilde», se muestra la siguiente tabla, que es específica de su directorio
principal, representada por el símbolo de la tilde.
En esta tabla, puede ver todos los discos montados en su directorio principal. En Linux, se puede «montar»
un disco en un directorio, lo que significa que se puede acceder al sistema de archivos de ese disco a
través de ese directorio. La tabla también muestra el porcentaje de almacenamiento utilizado en cada
disco. La opción «h menos» hace que el resultado sea «legible para humanos» y expresa el espacio en
disco en unidades como gigabytes y terabytes en lugar de bytes.

Para ver el uso del disco en todos los sistemas de archivos, simplemente escriba «df menos h» sin
especificar un directorio. El resultado incluye el tamaño, la capacidad utilizada y el espacio
disponible para cada sistema de archivos.

Para ver los procesos que se están ejecutando actualmente en su sistema, puede usar el comando
«ps» o «process status».

Esto resulta útil cuando se necesita supervisar o gestionar procesos. Si utiliza «ps» con la opción «menos
e», se mostrarán todos los procesos que se están ejecutando en el sistema, independientemente del usuario
que los haya iniciado. El comando «ps» muestra información como el nombre de cada proceso en ejecución,
el ID del proceso y el tiempo en minutos y segundos que se ha estado ejecutando cada proceso.

El comando «top» o «tabla de procesos» actúa como administrador de tareas y mostrará una tabla en
la que se ejecutan los procesos y su uso de recursos.

Este comando resulta útil cuando se necesita monitorear el rendimiento del sistema o identificar
procesos que consumen muchos recursos, aquí mostramos un ejemplo de uso con la opción «n menos»
y el número «3» para mostrar las tres tareas que más se están ejecutando: Chrome, top y Spotify, de forma
predeterminada, las tareas se ordenan según el uso de la CPU. Este es un resultado simplificado del
comando «top» de este vídeo, pero «top» proporciona muchos otros detalles, como el uso de la
memoria y la ubicación del archivo ejecutable.

Aunque simple, el comando «echo» de Linux es una poderosa herramienta para mostrar texto o
variables en la terminal o en un script de shell.

Introducir solo «echo» es similar a decirle a la terminal que no imprima nada y devolverá una nueva
línea. Si quieres repetir una sola palabra, como «hola», simplemente escribe «echo hola» y el terminal
devolverá la palabra. Estrictamente hablando, no es necesario añadir comillas alrededor de una
cadena con espacios para que echo funcione como se espera, pero se considera una buena práctica
incluir comillas. Si se utiliza echo con una cadena entre comillas, se obtiene el contenido entre comillas:
«¡Aprender Linux es divertido!» Además, puede ver el valor de una variable, como la variable «PATH» de
nuestro sistema, escribiendo un signo de dólar seguido del nombre de la variable. Esto puede resultar útil a
la hora de solucionar problemas o crear scripts. En el ejemplo puedes ver cada ruta de la variable PATH del
sistema, delimitada por dos puntos.

Otro comando útil es la «date», que muestra la fecha y la hora actuales del sistema.

Al introducir «date», se devuelve el formato de fecha predeterminado: el día de la semana, el día, el


mes, el año, la hora y la zona horaria. También puede extraer determinadas partes de la fecha para
imprimirlas, como en este ejemplo, para formatear el resultado, encapsula entre comillas una
combinación de texto y caracteres de control precedidos de un signo «más». Los controles de formato
se indican con el símbolo %. En este caso, el «porcentaje j» y el «porcentaje Y» muestran el día numérico
del año y el propio año, respectivamente. Este comando imprime «97», para el día 97 del año, las palabras
«día de», y para el año, «2023». Observe cómo el «porcentaje Y» se sustituye por el año 2023. Por último,
aquí hay otro ejemplo para mostrar cómo se pueden combinar aún más los controles de formato con texto
para imprimir cadenas únicas. Al combinar controles como el «porcentaje A», el «porcentaje j» y el
«porcentaje Y» con texto, puede imprimir una línea que indique el día de la semana, el día y el año.

En este vídeo solo se tratan los aspectos básicos de estos comandos. Si quieres obtener más
información sobre cómo usar un comando, puedes usar el comando «man» o «manual». Todos los
comandos predeterminados de Linux vienen con un manual que se puede ver con la palabra «man».
Por ejemplo, si introduce «man ID», aparecerá el manual del comando «ID».

El manual proporcionará un resumen básico de lo que hace el comando, como «devolver la identidad
del usuario», también se muestran las opciones del comando «ID», como «menos a». Los corchetes
indican parámetros opcionales, como «usuario», que permiten especificar un nombre de usuario. El
comando «man» también proporciona una descripción más detallada del comando, que lo explica con
mayor detalle. El comando «man» incluso tiene su propia página «manual», que puede utilizar para obtener
más información sobre el comando manual y sus usos.

#Cómo obtener ayuda para los comandos Linux

Es muy valioso dedicar tiempo a explorar y experimentar con comandos, pero hay muchas cosas que no
puedes resolver simplemente experimentando. Necesita ver qué hay ahí fuera, ver qué es posible y saber
dónde buscar para obtener respuestas. Echemos un vistazo a algunas formas excelentes de obtener la
información que necesita para ayudarle a progresar.
En esta lectura, es posible que veas enlaces a fuentes externas.

1.​ Utilice el comando man incorporado, el comando man, que significa "manual", proporciona la
forma estándar de acceder a la ayuda para comandos tipo Unix desde el símbolo del sistema.
Puede obtener una lista de todos los comandos de su sistema que tienen una página de manual
ingresando:

La lista resultante incluye una breve descripción de lo que hace cada comando.
Para ver la página de manual de un comando, simplemente ingrese:

Todas las páginas de manual están divididas en varias secciones, que incluyen:
NAME
El nombre del comando o característica y una breve descripción de lo que hace.
SYNOPSIS
Un resumen de la sintaxis del comando, incluidas las opciones y argumentos que se pueden utilizar.
DESCRIPTION
Una descripción más detallada del comando, incluida su función y comportamiento.
OPTIONS
Todas las opciones y argumentos disponibles que se pueden utilizar con el comando.
EXAMPLES
Algunos ejemplos de cómo utilizar el comando.
SEE ALSO
Comandos relacionados y documentación que pueden resultar útiles.

También puede ver otras secciones, que incluyen: EXIT STATUS, RETURN VALUE,
ENVIRONMENT, BUGS, FILES, AUTHOR, REPORTING BUGS, HISTORY, and COPYRIGHT.

2.​ Instalar y usar el comando tldr:

Al igual que las páginas de man, TLDR Pages es un esfuerzo de documentación colaborativa gratuita y
de código abierto. El objetivo es crear documentación que sea más accesible que las páginas de
manual tradicionales, que tienden a ser bastante detalladas.
Las páginas TLDR, abreviatura de "Too Long; Didn't Read" y también conocidas simplemente como
tldr, proporcionan ejemplos de casos de uso comunes de varios comandos. El formato de las páginas
TLDR es similar al de una hoja de referencia.
Puede instalar una herramienta de línea de comandos para acceder a las páginas TLDR desde su
terminal. Instálelo usando el siguiente comando:

Una vez que haya instalado la herramienta, puede usar el comando tldr para acceder fácilmente a la
página TLDR de un comando.

La herramienta mostrará un resumen breve y fácil de entender del comando junto con algunos ejemplos
de cómo usarlo.

3.​ Búsqueda en Stack Overflow:

Stack Overflow es una popular plataforma de preguntas y respuestas impulsada por la


comunidad para programadores, desarrolladores y administradores de sistemas. Tiene un vasto
repositorio de preguntas y respuestas relacionadas con varios lenguajes de programación, herramientas
y sistemas operativos, incluido Linux.
Para buscar información sobre comandos en Stack Overflow, puede usar la barra de búsqueda
en la página de inicio e ingresar el nombre del comando que está buscando, junto con las
palabras clave o parámetros específicos. También puede refinar su búsqueda agregando etiquetas
relevantes, como "linux" o "línea de comandos".
Una vez que haya ingresado su consulta de búsqueda, Stack Overflow mostrará una lista de
preguntas y respuestas relevantes que coinciden con su consulta. Puede explorar los resultados
para encontrar la información que necesita e incluso publicar su propia pregunta si no puede encontrar
una respuesta a su consulta específica.
Al buscar información sobre comandos en Stack Overflow, es importante verificar la fecha de las
respuestas para asegurarse de que la información aún esté actualizada y sea relevante. También
debes leer los comentarios y los hilos de discusión para comprender mejor el contexto y cualquier
posible problema o limitación relacionada con el comando que estás investigando.

Preguntas más recientes sobre Stack Overflow etiquetadas como "Linux":


https://stackoverflow.com/questions/tagged/linux

4.​ Intercambio de pila de búsqueda

Stack Exchange es una red de comunidades de preguntas y respuestas, similar a Stack Overflow,
pero que cubre una gama más amplia de temas más allá de la programación. Hay varias
comunidades de Stack Exchange que se especializan en temas relacionados con Linux y software de
código abierto, como Unix y Linux, Ask Ubuntu y Server Fault.
Visite la comunidad relevante para buscar información sobre Stack Exchange. Al igual que Stack
Overflow, puedes usar la barra de búsqueda para ingresar el nombre del comando que estás
buscando, junto con las palabras clave o parámetros.

Comunidad Unix y Linux en Stack Exchange:


https://unix.stackexchange.com/

5.​ ¡Solo búscalo en Google!

Google es una herramienta poderosa que puede brindarle la respuesta a casi cualquier pregunta.
Aprenda cómo ingresar las consultas correctas y filtrar sus resultados, por ejemplo incluyendo
"Wikipedia", "Stack Overflow" o "Linux" como parte de su búsqueda. Sin embargo, úselo bajo su propio
riesgo. Nunca confíes ciegamente en lo que encuentres en la web: ¡hay mucho ruido ahí fuera!

6.​ Utilice las hojas de trucos de este curso.

A lo largo de este curso, encontrará "hojas de referencia" que condensan la información que ha
aprendido en guías de fácil consulta. Son excelentes para revisar el material que has aprendido y
también pueden ayudarte con tus tareas calificadas.

7.​ Consulte la lista de comandos de Unix de Wikipedia:

Finalmente, Wikipedia mantiene una lista de comandos que se pueden encontrar en los sistemas
operativos Unix, junto con una breve descripción. Puede consultar la página para hacer referencia
rápidamente a un comando de Unix: https://en.wikipedia.org/wiki/List_of_Unix_commands

#Comandos de Navegación por archivos y directorios

El comando ls o «list» mostrará una lista de los archivos y directorios de un directorio.

●​ Si escribe «ls» en su directorio principal, verá todos los archivos y directorios que contiene ese
directorio.
●​ Puede pasar un nombre de directorio, como «Descargas», como parámetro a ls, que mostrará el
contenido de la carpeta de descargas.
●​ El comando ls también admite opciones que muestran información adicional, supongamos que
actualmente está trabajando en su carpeta de documentos y desea obtener más información sobre los
archivos del directorio, puede usar el comando ls con la opción -l que mostrará los archivos y
directorios secundarios en un formato más largo y detallado.

Puedes ver que la terminal tiene una lista de todos los archivos secundarios, directorios y
detalles adicionales, como los permisos, la fecha de la última modificación y el propietario.

En ocasiones, es posible que necesites saber en qué directorio estás trabajando actualmente. En
estos casos, puede usar el comando «imprimir directorio de trabajo o print working directory» para obtener su
directorio de trabajo actual. Introduzca «pwd» en la línea de comandos para usar el comando.

Aquí puede ver que actualmente está trabajando en su directorio principal, «/Users/me».

Si quieres cambiar tu directorio de trabajo actual, puedes usar el comando «cambiar directorio o
change directory». El comando cd, se usa para cambiar el directorio en el que se está trabajando.

Supongamos que se encuentra en su directorio principal y desea pasar a un subdirectorio incluido en él,
como la carpeta Documentos, simplemente escribe «cd Documents» para cambiar tu directorio de trabajo.
Ahora, si escribes «pwd», verás que ahora estás trabajando en tu subdirectorio de documentos.

El comando cd te permite cambiar los directorios con una ruta relativa o absoluta, supongamos que se
encuentra en una carpeta de «Notas» dentro de su árbol de directorios de «Documentos».
Para acceder al directorio principal relativo a su carpeta actual, introduzca el comando cd con el símbolo
de ruta relativa «..» como argumento, ahora su directorio de trabajo es «Math», el directorio principal
inmediato de su carpeta «Notas».
Si quieres ir directamente a tu carpeta principal, usa el símbolo de tilde (~) con el comando cd, esto te
llevará a tu carpeta de inicio, en este caso, el símbolo de la tilde representa una ruta absoluta al hogar.
Por último, también puede proporcionar una ruta completa a un directorio, aquí se refiere al nombre de
ruta absoluto del directorio «Notes» original, como era de esperar, este comando lo llevará de nuevo a la
carpeta «Notas» donde comenzó.

Por último, el comando «buscar o find» es una poderosa herramienta que devolverá la ruta a todos
los archivos que coincidan con un criterio especificado por el usuario, supongamos que su carpeta
«Documentos» tiene una estructura de archivos como la que se muestra, dos subcarpetas, cada una de las
cuales contiene algunos archivos, digamos que estás trabajando en la carpeta «Documentos» y quieres
encontrar las rutas de todos los archivos denominados «a.txt» de tu directorio de trabajo, para ello,
escribe «find». -nombre 'a.txt'.» El argumento «.» significa «busca aquí», por lo que el comando sólo
buscará en tu directorio de trabajo actual.

Para realizar una versión de la búsqueda que no distinga mayúsculas de minúsculas, puede utilizar la
opción «-iname» en su lugar, verás que encuentras el mismo archivo, además de otro archivo con el
mismo nombre pero con una «A» mayúscula.

#Comandos de gestión de archivos y directorios

El comando make directory o mkdir se usa para crear directorios.

Supongamos que se encuentra en su carpeta de documentos, que actualmente está vacía, para crear una
carpeta llamada «test», simplemente introduce «mkdir test», ahora su directorio actual tiene una
subcarpeta llamada «test».

El comando rm permite eliminar un archivo o directorio.


Suponga que tiene una estructura de archivos como la que se muestra a la izquierda, y supongamos
que se encuentra en la carpeta de documentos y desea eliminar el «archivo1», puede hacerlo
simplemente escribiendo «rm file1», ahora puede ver que solo queda «folder1». No puede
simplemente eliminar la «carpeta 1», ya que puede contener otros archivos, sin embargo, puede evitarlo
fácilmente ingresando «rm» con la opción -r, la opción -r significa que desea eliminar el directorio
junto con todos sus objetos de archivo secundarios. La carpeta de documentos ahora está vacía, por
lo tanto, siempre debe tener cuidado al usar rm con la opción -r porque es muy fácil eliminar accidentalmente
carpetas con datos importantes.
Supongamos que crea un directorio vacío con el comando mkdir y luego decide eliminarlo, no se
recomienda usar el comando rm option rf, en su lugar, debe usar el comando rmdir, que se usa
únicamente para eliminar directorios vacíos, esto garantiza que nunca eliminarás accidentalmente
ningún archivo o directorio importante.

Si se introduce «ls», se indica que el directorio actual está realmente vacío.

El comando touch se puede utilizar para crear archivos vacíos.

Supongamos que está en su carpeta de documentos, que está vacía, y desea crear algunos archivos de
texto vacíos, puede hacerlo introduciendo «touch» junto con algunos nombres de archivo: «a», «b»,
«c» y «d» con el sufijo «.txt», ahora puedes ver que tu carpeta de documentos contiene los cuatro archivos
que has creado.
Quizás se pregunte qué le hace el comando touch a un archivo existente, supongamos que su directorio
actual contiene un archivo llamado «notes.txt», puede ver cuándo se modificó por última vez usando
'date -r notes.txt ', si usa el comando táctil en notes.txt, puede ver que la fecha de su última
modificación se actualizó a la hora actual.

El comando cp permite copiar un archivo o directorio.

Para copiar archivos, puede :


●​ Copiar un archivo de un directorio de origen y especificar el nombre del archivo en su directorio de
destino.
●​ Simplemente omitir el nombre de archivo de destino y mantener el mismo nombre de archivo de forma
predeterminada.
Para copiar directorios completos, debes darle a cp la opción -r para que sepa copiar de forma
recursiva todos los subdirectorios y archivos.
Veamos algunos ejemplos: supongamos que tiene un archivo llamado «notes.txt» y una carpeta llamada
«Documentos» en su directorio de trabajo. Puedes copiar notes.txt a tu carpeta de «Documentos»
usando «cp notes.txt Documents», ahora puede ver que su carpeta de documentos contiene una copia de
notes.txt, ten en cuenta que no necesitas especificar un directorio de origen, ya que cp es tu directorio
actual de forma predeterminada.
A continuación, puede crear una copia de la carpeta de documentos, denominada «Docs_copy»,
utilizando la sintaxis de la izquierda, como era de esperar, ahora tiene una carpeta «Docs_copy» que
contiene el mismo contenido que la carpeta Documentos original.

El comando mv le permite mover un archivo o directorio.

Para mover archivos, puede introducir «mv» seguido de las rutas de los archivos que desee mover y,
a continuación, de la carpeta a la que desee moverlos, del mismo modo, para mover directorios,
escribe «mv» con la ruta del directorio a mover, seguido de la ruta y el directorio al que quieres
moverlos.
Veamos un ejemplo: supongamos que tiene un archivo llamado «my_script.sh» y tres carpetas,
denominadas «Scripts», «Notes» y «Documents». Puedes mover «my_script.sh» a la carpeta «Scripts»
usando la sintaxis de la izquierda (mv /source/file/dest/dir/), por lo tanto, si introduce «ls my_script.sh», no
se obtiene ningún resultado, pero si introduce «ls Scripts», significa que ha movido correctamente
my_script.sh a su carpeta de scripts. A continuación, puede mover las carpetas de notas y scripts a la
carpeta de documentos utilizando la sintaxis de la izquierda (mv/source/dir/ /dest/dir/), puede ver que
su directorio ahora solo contiene la carpeta de documentos y que su carpeta de documentos contiene las
carpetas de scripts y notas que acaba de mover.

chmod significa «modo de cambio» y se utiliza para cambiar los permisos de lectura, escritura y
ejecución de los archivos.

Supongamos que tiene un archivo de script de shell en su directorio actual llamado «my_script.sh»
que dice: «¡Aprender Linux es divertido! «Al escribir ls -l my_script.sh, se indica que el script de shell
tiene permisos de lectura y escritura, tal y como indican los caracteres r y w, pero si intenta ejecutar el
archivo, aparece un error de permiso denegado. Para hacer que su script sea ejecutable, llame a chmod
en my_script.sh con la opción +x, al escribir ls -l my_script.sh, ahora se muestra que my_script.sh tiene
permisos de ejecución, tal y como indica el carácter x. ¡Genial! Ejecutar el guion ahora funciona.
#Seguridad - Gestión de permisos y propiedad de archivos

¿Por qué necesitamos permisos y propiedad de archivos?


Linux es un sistema operativo multiusuario, esto significa que, de forma predeterminada, otros usuarios
podrán ver cualquier archivo que se almacene en el sistema, sin embargo, es posible que tenga algunos
archivos, como sus documentos fiscales personales o los documentos de propiedad intelectual de su
empleador, que sean privados o confidenciales. ¿Cómo puede proteger estos documentos
confidenciales para que otros no los vean o modifiquen?

Propiedad de archivos y permisos


Hay tres niveles posibles de propiedad de archivos en Linux: usuario, grupo y otros.
Quien crea un archivo, es decir, el usuario en el momento de la creación, se convierte en propietario
de ese archivo de forma predeterminada.
Un grupo de usuarios también puede compartir la propiedad de un archivo.
La otra categoría esencialmente se refiere a cualquier persona en el universo con acceso a su
máquina Linux. ¡Cuidado al asignar permiso de propiedad a este nivel!

Sólo el propietario oficial de un archivo puede cambiar sus permisos, esto significa que sólo los
propietarios pueden decidir quién puede leer el archivo, escribirlo o ejecutarlo.

Ver permisos de archivos


Digamos que ha ingresado las siguientes líneas de código:

●​ Aquí hemos repetido la cadena "who can read this file?" en un nuevo archivo llamado my_new_file.
●​ La siguiente línea usa el comando more para imprimir el contenido del nuevo archivo.
●​ Finalmente, el comando ls con la opción -l muestra los permisos (predeterminados) del archivo: rw-r--r--

Los primeros tres caracteres (rw-) definen los permisos del usuario, los tres siguientes (r--) los
permisos del grupo y los tres últimos (r--) los demás permisos.

Entonces usted, como usuario, tiene el permiso rw-, lo que significa que tiene permisos de lectura y escritura
de forma predeterminada, pero no tiene permisos de ejecución, de lo contrario, en lugar del último -
aparecerá una x.

Por lo tanto, al observar la línea completa, rw-r--r--, puede ver que cualquiera puede leer el archivo, nadie
puede ejecutarlo y usted es el único usuario que puede escribir en él.

Permisos de directorio
Los permisos para directorios son similares pero distintos para archivos, aunque los directorios utilizan
el mismo formato rwx, los símbolos tienen significados ligeramente diferentes.
La siguiente tabla ilustra los significados de cada permiso para directorios:

Establecer permisos adecuados en los directorios es una práctica recomendada tanto por razones de
seguridad como de estabilidad, aunque esta lectura se centra en la seguridad, aprenderá más sobre otras
razones para configurar los permisos y la propiedad de los archivos más adelante en este curso.

Hacer un archivo privado


Puede revocar los permisos de lectura de su grupo y de todos los demás usuarios utilizando el comando
chmod. Asegúrese de que la modificación sea exitosa usando el comando ls -l nuevamente:

En el comando chmod, go-r es el cambio de permiso a aplicar, que en este caso significa quitar para el
grupo (g) y otros (o) el permiso de lectura (r). El comando chmod se puede utilizar tanto con archivos
como con directorios.

Archivos ejecutables: mirando hacia el futuro


Ya aprendiste lo que significa leer o escribir en un archivo, pero ¿qué significa tener permisos para
ejecutar un archivo en Linux?

Un archivo de Linux es ejecutable si contiene instrucciones que el sistema operativo puede


interpretar directamente, básicamente, un archivo ejecutable es un programa listo para ejecutar, también
se les conoce como binarios o ejecutables.

En este curso, se familiariza con un tipo particular de ejecutable llamado script, que es un programa
escrito en un lenguaje de scripting, aprenderá todo sobre las secuencias de comandos de Shell o más
específicamente las secuencias de comandos de Bash, que consisten en escribir secuencias de comandos
en Bash (shell nacido de nuevo), un lenguaje de secuencias de comandos de Shell muy popular. Un script
de shell es un archivo de texto sin formato que puede ser interpretado por un shell.

Hablando formalmente, para que un archivo de texto se considere un script de shell ejecutable para
un usuario determinado, debe tener dos cosas:
1.​ Ejecutar permisos establecidos para ese usuario
2.​ Una directiva, llamada "shebang", en su primera línea para declararse ante el sistema operativo como un
binario

TEXTO EXTRA DEL CURSO

#Permisos de Linux: una introducción a chmod

Si alguna vez has trabajado en un sistema Linux, seguro que has tratado con archivos, y eso significa que
puede que te hayas encontrado con mensajes como este de abajo:
localhost@user1$ cat /etc/sudoers
cat: /etc/sudoers: Permiso denegado
O, de forma similar, mensajes de error como "You do not have the permissions to upload files to this folder
(No tiene permisos para cargar archivos en esta carpeta)", que podrían haberle impedido leer, escribir o
acceder a un archivo concreto. Y, naturalmente, este error puede haberle hecho preguntarse -al menos la
primera vez que se encontró con este problema- por qué se le denegó el acceso.

Cuando listas archivos en un directorio particular en Linux, puede que hayas visto r, w, y x, y te hayas
preguntado qué significan estas letras, tienen un enorme significado a la hora de determinar qué puede
hacer exactamente un usuario concreto con un archivo.

Veamos un ejemplo:
localhost@user1$ ls -ltr chmod_directory/
total 0

Los permisos de archivo por defecto son rw-r--r-- (del valor umask (cubierto más adelante en el
artículo)), como se muestra en el ejemplo anterior.

Cada permiso tiene un valor numérico asignado:


●​ r (lectura) tiene un valor de 4.
●​ w (escritura) tiene un valor de 2.
●​ x (ejecutar) tiene un valor de 1.

Estos valores son aditivos para cada "tripleta", lo que significa que un permiso de archivo de rw- tiene el valor
de 6 y rwx tiene el valor de 7. Como se discutió anteriormente, cualquier archivo recién creado, el valor
por defecto es 644 (rw-r--r--), lo que significa que el propietario del archivo puede leer y escribir, y
todos los demás sólo pueden leer este archivo. El primer triplete es el permiso para el
propietario/creador del archivo, el segundo es para los permisos de grupo, y el tercero es para otros
(usuarios fuera del propietario/creador o un grupo con permisos).

Esta configuración tiene sentido por razones obvias: El propietario debe tener un mayor control
sobre el contenido del archivo para poder leerlo y escribir en él. Otros pueden querer leer el
contenido pero no modificarlo. Por supuesto, puedes cambiar esta configuración con el comando
chmod, que es el tema central de este artículo.

●​ El creador del archivo (propietario/usuario) tiene permisos de lectura y escritura: -rw-r--r--.


●​ El creador del archivo (grupo) tiene permisos de lectura: -rw-r--r--.
●​ Los demás tienen permisos de lectura representados por los últimos bits: -rw-r--r--.

Ahora, veamos los valores de permisos por defecto para un directorio. Digamos que el directorio
chmod_directory fue creado con los permisos por defecto de 755. A diferencia de los ficheros, un directorio
contiene ficheros, para que alguien que no sea el propietario pueda hacer 'cd' en el directorio, necesita
un permiso de ejecución, que a su vez hace que el directorio:
●​ Legible, escribible y ejecutable por el propietario (rwx es 7).
●​ Legible y ejecutable por el grupo (r-x es 5).
●​ Legible y ejecutable por otros (r-x es 5).
Bien, ahora que has aprendido lo básico sobre los permisos de archivos y directorios, echemos un vistazo al
comando chmod, que ayuda a realizar cambios en los permisos de archivos y directorios.

Como se menciona en la página man:

Utilizar la representación octal


Para modificar los permisos de un fichero, puede utilizar la representación octal (numérica) o la
simbólica (las letras).

En la representación octal
el primer dígito corresponde al usuario, el segundo al grupo y el tercero a otros. Veamos dos ejemplos de
configuración de permisos con representación octal para entender este concepto.

●​ Ejemplo 1: Si quieres dar permisos de lectura (4), escritura (2), y ejecución (1) tanto al usuario como al
grupo, y sólo permiso de lectura (4) a otros, puedes usar:
localhost@user1$ chmod 774 <nombre-archivo>
●​ Ejemplo 2: Si desea restringir los permisos de escritura a todos los demás excepto al propietario del
archivo, puede utilizar:
localhost@user1$ chmod 744 <nombre-archivo>

Utilizar la representación simbólica


La representación simbólica consiste en asignar permisos al usuario (u), al grupo (g) y a otros (o) utilizando
letras (símbolos) y las designaciones de las letras: r, w y x.

Veamos estos ejemplos de nuevo, pero utilizando la representación simbólica.


●​ Ejemplo 1: Leer, escribir y ejecutar para el usuario y el grupo, más sólo leer para otros:
localhost@user1$ chmod ug+rwx,o+r <nombredearchivo>
●​ Ejemplo 2: Lectura, escritura y ejecución para el usuario y sólo permisos de lectura para el grupo y
otros:
localhost@user1$ chmod u+rwx,go+r <nombre-archivo>

Advierto que hay dos escenarios peligrosos que es posible que quieras evitar, así que mantén esto
como una mejor práctica mientras usas chmod, evite usar casos límite, como chmod 777
<nombre-archivo> y chmod 000 <nombre-archivo>. Usar chmod 777 <nombre-archivo> da a todo el
mundo permisos rwx, y generalmente no es una buena práctica dar plenos poderes a todos los usuarios de
un sistema. El caso chmod 000 elimina los permisos a todos los usuarios, lo cual deja sin poder hacer nada
más que eliminar el directorio o el fichero.

Usando umasks
Os dejo con un concepto más que debéis conocer (umask) que decide los permisos por defecto de un
fichero. En general, los valores por defecto son:
Umask: 0022
Fichero: 0666
Directorio: 0777

Por ejemplo: suponga que desea cambiar el modo de acceso predeterminado de los archivos que van
desde 666 (rw-rw-rw-) hasta 644 (rw-r–r–). Reste 644 de 666. El resto, 022, es el valor numérico que se va
a utilizar, así:

Como recordarás, el valor por defecto del permiso de archivo es 0644, y el del directorio es 0755.

El valor de umask por defecto se resta del valor global por defecto de fichero/directorio.

Puedes establecer los valores de umask en /etc/profile o en ~/.bashrc.

#Permisos de Linux: SUID, SGID y bit adhesivo

Necesitamos ejecutar scripts, modificar archivos y ejecutar procesos para administrar sistemas de manera
efectiva, pero ¿qué sucede cuando vemos permiso denegado? ¿Sabes por qué vemos este mensaje?
Si conoces la causa del problema, ¿sabes cómo implementar la solución?
Voy a dar una explicación rápida de las diversas formas de calcular los permisos, y luego nos centraremos
en los permisos especiales dentro de Linux.

Voy a dar una explicación rápida de las diversas formas de calcular los permisos, y luego nos centraremos
en los permisos especiales dentro de Linux.

El TL:DR (Too Long; Didn't Read) es que hay dos formas principales de asignar permisos.

●​ Método simbólico
El método simbólico utiliza la siguiente sintaxis:
[tcarrigan@server ~]$ chmod WhoWhatWhich file | directory
donde:
Who - representa identidades: u,g,o,a (usuario, grupo, otro, todos)
What - representa acciones: +, -, = (añadir, eliminar, establecer exacto)
Which - representa niveles de acceso: r, w, x (leer, escribir, ejecutar)

Un ejemplo de esto es si quiero agregar los permisos de lectura y escritura a un archivo llamado test.txt
para usuario y grupo, usó el siguiente comando:
[tcarrigan@servidor ~]$ chmod ug+rw prueba.txt

Revelación completa, este no es mi método preferido para asignar permisos, y si desea obtener más
información acerca de este método, le recomiendo su motor de búsqueda más cercano.

●​ Método numérico
El método numérico es, según mi experiencia, la mejor forma de aprender y practicar los permisos. Se
basa en la siguiente sintaxis:
[tcarrigan@server ~]$ chmod ### archivo | directorio
Aquí, de izquierda a derecha, el carácter # representa un nivel de acceso, hay tres niveles de acceso:
usuario, grupo y otros. Para determinar qué es cada dígito, utilizamos lo siguiente:

Empieza por 0
Si se debe establecer el permiso de lectura, añada 4
Si se debe establecer el permiso de escritura, añada 2
Si se debe establecer el permiso de ejecución, añada 1
Esto se calcula por nivel de acceso. Interpretemos este ejemplo de permisos:
-rw-r-x—
❖​ Los permisos se representan como 650. ¿Cómo llegué a esos números?
❖​ Los permisos del usuario son: rw- o 4+2=6
❖​ Los permisos del grupo son: r-x o 4+1=5
❖​ Los permisos de los demás son: --- o 0

Para poner esto en la sintaxis del comando, se ve así:


❖​ [tcarrigan@servidor ~]$ chmod 650 prueba.txt

Ahora que entendemos lo básico del cálculo de permisos en Linux, veamos los permisos especiales incluidos
en el SO.

Explicación de los permisos especiales


Los permisos especiales constituyen un cuarto nivel de acceso además de usuario, grupo y otros.
Los permisos especiales permiten privilegios adicionales sobre los conjuntos de permisos estándar (como su
nombre indica). Hay una opción de permiso especial para cada nivel de acceso discutido anteriormente.
Echemos un vistazo a cada uno individualmente, comenzando con Establecer UID:

●​ usuario + s (pecial)
Comúnmente conocido como SUID, el permiso especial para el nivel de acceso de usuario tiene una
única función: Un archivo con SUID siempre se ejecuta como el usuario propietario del archivo,
independientemente del usuario que pase el comando. Si el propietario del archivo no tiene
permisos de ejecución, utilice aquí una S mayúscula.

Ahora, para ver esto desde un punto de vista práctico, veamos el comando /usr/bin/passwd. Este
comando, por defecto, tiene el permiso SUID:
[tcarrigan@server ~]$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 13 dic 2019 /usr/bin/passwd

Observe la s donde x normalmente indicaría permisos de ejecución para el usuario.

●​ grupo + s (pecial)
Comúnmente conocido como SGID, este permiso especial tiene un par de funciones:

Si se establece en un archivo, permite que el archivo se ejecute como el grupo que posee el
archivo (similar a SUID)
Si se establece en un directorio, todos los archivos creados en el directorio tendrán su propiedad
de grupo establecida a la del propietario del directorio

[tcarrigan@server article_submissions]$ ls -l
total 0
drwxrws---. 2 tcarrigan tcarrigan 69 Apr 7 11:31 my_articles

Este conjunto de permisos se indica con una s minúscula donde la x indicaría normalmente privilegios
de ejecución para el grupo. También es especialmente útil para los directorios que se utilizan a
menudo en los esfuerzos de colaboración entre los miembros de un grupo. Cualquier miembro
del grupo puede acceder a cualquier archivo nuevo. Esto también se aplica a la ejecución de
archivos. SGID es muy potente cuando se utiliza correctamente.

Como se indicó anteriormente para SUID, si el grupo propietario no tiene permisos de ejecución,
entonces se utiliza una S mayúscula.
●​ otro + t (pegajoso)
El último permiso especial se ha denominado "sticky bit".

Este permiso no afecta a los archivos individuales, sin embargo, a nivel de directorio, restringe la
eliminación de archivos. Sólo el propietario (y raíz) de un archivo puede eliminarlo dentro de ese
directorio.

Un ejemplo común de esto es el directorio /tmp:


[tcarrigan@server article_submissions]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

El conjunto de permisos se indica mediante la t minúscula, donde la x indicaría normalmente el privilegio


de ejecución.

Establecer permisos especiales


Para establecer permisos especiales en un archivo o directorio, puede utilizar cualquiera de los dos
métodos descritos anteriormente para los permisos estándar: Simbólico o numérico.

Supongamos que queremos establecer SGID en el directorio community_content.

Para hacer esto utilizando el método simbólico, hacemos lo siguiente:

[tcarrigan@server article_submissions]$ chmod g+s community_content/

Usando el método numérico, necesitamos pasar un cuarto dígito precedente en nuestro comando
chmod. El dígito utilizado se calcula de forma similar a los dígitos de permiso estándar:
Empieza en 0
SUID = 4
SGID = 2
Sticky = 1

La sintaxis es:
[tcarrigan@server ~]$ chmod X### archivo | directorio

Donde X es el dígito especial de permisos.

Aquí está el comando para establecer SGID en community_content utilizando el método numérico:

[tcarrigan@server articulo_envios]$ chmod 2770 comunidad_contenido/


[tcarrigan@server articulo_envios]$ ls -ld comunidad_contenido/
drwxrws---. 2 tcarrigan tcarrigan 113 Apr 7 11:32 community_content/

FINAL DEL TEXTO EXTRA DEL CURSO

Trabajar con archivos de texto, comandos de red y archivo

#Visualización del contenido del archivo

Para empezar, puede usar el comando “cat” para imprimir todo el archivo en una salida estándar.
Supongamos que su directorio actual contiene un único archivo llamado numbers.txt, que se puede ver
introduciendo el comando “ls”, para imprimir el contenido de este archivo en una salida estándar, puede
escribir cat numbers.txt, lo que produce el resultado que se muestra aquí,
compuesto por los números del 89 al 99, puede ver que la salida ocupa toda la ventana del terminal. El
archivo es mucho más largo que las doce líneas que ves aquí, por este motivo, es posible que no siempre
quieras usar cat para ver el contenido.

El comando “more” te permite ver el contenido de un archivo en un formato página por página, al
introducir more numbers.txt, verá los números del 0 al 8 en la página 1, tal y como se muestra.

Por página solo nos referimos a la ventana de terminal actual. Si expandes la ventana de tu terminal
verticalmente, también aumentas el tamaño de la página. Al hacer clic en la barra espaciadora, verá la
página siguiente que muestra los números del 9 al 17.

Al escribir Q, se cierra el programa Moré y se vuelve a la línea de comandos.

Puede usar el comando “head” para imprimir las primeras 10 líneas del archivo. Si introduce head
numbers.txt, se obtienen las 10 primeras líneas o los números del 0 al 9, tal y como se muestra. Puede
especificar el número de líneas que desea que vuelva Head mediante la opción -n. Si introduce head, -n
3 numbers.txt, obtendrá las tres primeras líneas de numbers.txt como 0, 1, 2.

El comando “tail” se utiliza para imprimir las últimas 10 líneas de un archivo. Al escribir tail
numbers.txt, se obtienen las últimas 10 líneas de numbers.txt, es decir, los números del 90 al 99. Al igual
que con el comando head, puede usar la opción -n para cambiar el número de líneas devueltas
introduciendo tail -n, 3 numbers.txt. Obtendrá las tres últimas líneas de numbers.txt (97 , 98 y 99).

Puede usar el comando “wc” (word count) para contar el número de caracteres, palabras o líneas del
archivo. Imagina que tienes un archivo llamado pets.txt. Si escribe cat pets.txt, verá que el archivo
contiene la palabra cat o dog en cada línea.
Al introducir wc pets.txt, obtendrá el resultado 7 7 28 pets.txt, lo que significa que su archivo contiene 7
líneas, 7 palabras y 28 caracteres, pero 7 veces 3 es 21, ¿por qué WC ve 28 caracteres? Porque también
cuenta los caracteres de línea nuevos, no puede verlos ahí, pero hay siete caracteres de línea nuevos,
uno de los cuales representa el final del archivo.
●​ Para ver sólo el recuento de líneas, puede usar la opción wc -l pets.txt, que devuelve 7 pets.txt.
●​ Para ver sólo el recuento de palabras, puede usar la opción wc -w pets.txt.
●​ Para ver sólo el recuento de caracteres, puede usar la opción wc -c pets.txt.

#Comandos útiles para manejar archivos de texto

El comando sort (clasificar), clasifica las líneas de un archivo alfanuméricamente e imprime el


resultado ordenado en la salida estándar.

Al escribir sort pets.txt, devuelve el resultado ordenado alfabéticamente, con «gato» repetido cinco veces y
«perro» repetido dos veces. Si escribes sort -r pets.txt, se obtienen las líneas ordenadas en orden inverso,
con las líneas en forma de «perro» que aparecen antes líneas en forma de «gato».

Si tiene líneas repetidas en su archivo, puede usar el comando uniq (único) para filtrar las líneas
repetidas. Recuerda el contenido del cat pets.txt:

Al escribir uniq pets.txt «texto con puntos para mascotas únicas», devuelve «gato», «perro» y «gato».
Tenga en cuenta que el comando uniq solo elimina líneas duplicadas si son consecutivas, por lo tanto,
la palabra «gato» aparece dos veces aquí porque «gato» aparece antes y después de las dos líneas
de «perro», interrumpiendo la secuencia consecutiva.

El comando grep, devuelve las líneas de un archivo que coinciden con las especificadas patrón, como
una expresión regular.

Supongamos que tiene una lista de personajes famosos nombres almacenados en un archivo, que puede ver
ingresando cat people.txt, puedes usar grep para buscar todas las líneas en people.txt que contengan los
caracteres consecutivos ch, para ello, asigne a grep el término coincidente ch, seguido del nombre del
archivo (grep ch people.txt), la salida arroja dos resultados, Dennis Ritchie, y Erwin Schrodinger, que
contiene una coincidencia en minúscula con ch. Realizando la misma operación, pero esta vez con la
opción -i osea “grep -i ch people.txt”, devuelve un resultado extra, Charles Babbage, que tiene una C
mayúscula, la opción -i expande el patrón busca haciendo que no distinga entre mayúsculas y
minúsculas.
Algunas opciones utilizadas frecuentemente para grep incluyen:

También puede utilizar el comando cut para extraer secciones específicas de cada línea de tu archivo.
Aquí vuelve a ver la lista de nombres famosos, como Alan Turing y Charles Babbage.

Puede utilizar el comando cut para extraer del segundo al noveno carácter de cada línea escribiendo cut -c
2-9 people.txt, se puede ver en el resultado que «Alan Turing» se devuelve como «Lan Turi».
Veamos un ejemplo más práctico de usar cut con archivos de texto.

Supongamos que deseas extraer solo el último nombre de cada persona de tu lista, sabes que cada línea de
tu lista está compuesta por dos campos: el nombre y los apellidos de la persona. Hay un espacio que separa
estos campos. Aquí, estás cortando utilizando -d ' ', puedes especificar que el delimitador de campo o el
carácter que indica la pausa entre campos, es un espacio, a continuación, utilice la opción -f2 para devolver
el segundo campo de cada línea. Esto, cut -d ' ' -f2 people.txt, devolverá el apellido de cada persona de la
lista.

La opción paste puede combinar líneas de varios archivos. Imagina que te dan los tres siguientes
archivos de texto, todos con el mismo número de líneas: un archivo de texto llamado first.txt que contiene
una lista de los nombres de las personas, un archivo de texto complementario llamado last.txt, que contiene
los apellidos del mismo personas, y un tercer archivo de texto, llamado yob.txt, que indica el año de
nacimiento de cada persona.

Puede ver estos archivos en forma de tabla ingresando paste, observe que las tres columnas están
alineadas uniformemente porque paste usa una tabulación como delimitador predeterminado, con esta tabla,
puede ver, por ejemplo, que Charles Babbage nació en 1791. Puede
especificar un delimitador que no sea Tab utilizando la opción -d con el
comando paste, por ejemplo, puede utilizar una coma como delimitador
escribiendo paste -d “,” first.txt last.txt yob.txt, como puede ver esto
creará una tabla que combina los tres archivos con una coma entre cada
campo, como «Dennis comma Ritchie comma 1941".

#Breve introducción al trabajo en red

❖​ Redes de ordenadores

Una red informática es un conjunto de ordenadores capaces de comunicarse entre sí y compartir los
recursos proporcionados por los nodos de la red.
Ejemplos de redes informáticas son las redes de área local (LAN), las redes de área extensa (WAN) e
Internet. Internet, o World Wide Web, es esencialmente una gigantesca red de redes informáticas.

Un recurso de red es cualquier objeto, como un fichero o un documento, que puede ser identificado por la
red.
Un objeto es identificable si se le puede asignar un nombre y una dirección únicos que la red puede utilizar
para identificarlo y acceder a él.

Un nodo de red es cualquier dispositivo que participa en una red.


Una red puede incluir cualquier dispositivo que no sea necesariamente un ordenador pero que forme
parte de la infraestructura de la red, ejemplos de nodos de red son los módems, los conmutadores de red,
los concentradores y los puntos de acceso wifi.

❖​ Hosts, clientes y servidores

Un host es un tipo especial de nodo en una red informática: es un ordenador que puede funcionar como
servidor o cliente en una red.

Un servidor es un ordenador host capaz de aceptar una conexión de un host cliente y satisfacer
ciertas peticiones de recursos realizadas por el cliente.

Muchos hosts pueden desempeñar ambos papeles, actuando como cliente y como servidor.

❖​ Paquetes y Pings

Un paquete de red es un trozo de datos formateado que puede transmitirse a través de una red.

Las redes informáticas actuales suelen utilizar protocolos de comunicación basados en este tipo de paquetes
de información. Cada paquete consta de dos tipos de datos:
1.​ La información de control son datos sobre cómo y dónde entregar la carga útil, como las direcciones
de red de origen y destino,
2.​ La carga útil es el mensaje que se envía.

El comando ping funciona enviando paquetes especiales de "solicitud de eco" a un host y esperando
una respuesta de éste. Ping es una utilidad disponible en la mayoría de los sistemas operativos con
capacidad de red. Linux tiene su propia implementación del comando ping que se utiliza para probar y
solucionar problemas de conectividad con otros hosts de red.
❖​ URLs y direcciones IP

IP son las siglas de "Internet Protocol", que define el formato de los datos transmitidos por Internet o
una red local.

Una dirección IP es un código utilizado para identificar de forma única cualquier host de una red, esta
puede utilizarse para establecer una conexión con un host e intercambiar paquetes con él, por
ejemplo mediante el comando ping, además de su carga útil, los paquetes IP -un tipo de paquete de red
que se ajusta al Protocolo de Internet- contienen las direcciones IP de los hosts de origen y destino.

Una URL, más comúnmente conocida como dirección web, significa Localizador Uniforme de
Recursos.

Una URL identifica de forma única un recurso web y permite acceder a él. Normalmente, el recurso al
que apunta una URL es una página web, pero también puede utilizarse para tareas como transferir
archivos, enviar correos electrónicos y acceder a bases de datos.
Por ejemplo, la URL de la página de Wikipedia para URL es https://en.wikipedia.org/wiki/URL, al igual que
para una URL típica, su formato indica:
●​ un protocolo (https).
●​ un nombre de host (es.wikipedia.org).
●​ un nombre de archivo (/wiki/URL).

#Comandos de red

El comando hostname se utiliza para obtener o configurar el «nombre de host» y demás información
que identifica de forma exclusiva a su equipo. Al introducir el comando hostname sin ninguna opción, se
devuelve el nombre de host de su máquina,

que en este ejemplo es “my Linux machine dot local”. El sufijo .local aparece en el nombre del host si su
máquina tiene configurados los «dominios locales».

Para eliminar el sufijo de dominio, puede incluir la opción “hostname -s”.

Si utilizas la opción “hostname -i”, hostname proporcionará la dirección IP del nombre de host.

El comando ifconfig, que significa configuración de interfaz, muestra información sobre todos los
dispositivos de comunicación del dispositivo, si lo introduces sin opciones

Obtiene mucha información, incluida la dirección IP, las direcciones MAC y las especificaciones de
hardware de sus dispositivos de comunicación.

También puede especificar un dispositivo específico que desee que inspeccione ifconfig, como un
adaptador Ethernet llamado eth0. Si introduce ifconfig eth0 , obtendrá información sobre su adaptador
Ethernet,
como su dirección de Internet, el número de paquetes recibidos, incluidos los recuentos de errores y
paquetes descartados, las mismas métricas aplicadas a los paquetes transmitidos y la cantidad total de
datos recibidos y transmitidos.

Puede usar el comando «ping» para probar la conectividad con un host o una dirección IP, “ping”
envía paquetes conocidos como solicitudes ICMP (Protocolo de mensajes de control de Internet) al
servidor, escucha la respuesta e imprime el resultado,

Por ejemplo, si escribes ping www.google.com, ping devuelve una línea de información por cada
respuesta correcta a una solicitud de eco y continúa hasta que abortes con ^C, cuando se interrumpe
el ping, imprime un resumen de las estadísticas de los resultados del ping. Para cada solicitud de eco,
ping proporciona información útil, como la dirección IP de la URL indicada, 142.251.41.68 y el tiempo
total de ida y vuelta en milisegundos. Las estadísticas proporcionadas al final incluyen:
●​ cuántos paquetes se transmitieron y recibieron.
●​ el porcentaje de paquetes descartados
●​ la desviación mínima, media, máxima y estándar de los tiempos de ida y vuelta en milisegundos.

Si deseas que el comando ping devuelve un número determinado de resultados de ping, puedes usar la
opción -C: si escribes ping -c 5 www.google.com, se devuelven los cinco resultados de ping, se abortan y,
a continuación, se imprimen las mismas estadísticas que se imprimirán sin la opción -C.

El comando «curl» es una potente herramienta que permite transferir datos a y desde las direcciones
URL y es compatible con muchos protocolos diferentes. Al escribir curl www.google.com, se devuelve
todo el contenido HTML de la página de destino de www.google.com, utilizando el protocolo
predeterminado HTTP, por ejemplo,

la ruta al archivo PNG del logotipo G de Google. Para renderizar el logotipo, añade tu ruta a google.com
en su navegador, incluso puedes hacer que Curl escriba el contenido de una URL en un archivo local,
esto se hace mediante la opción -O, por ejemplo, puede introducir curl www.google.com -o google.txt, a
continuación, puede ver el contenido de google.txt con el comando head
y comprobar que el contenido del archivo coincide realmente con el resultado anterior.

El comando wget se usa para recuperar archivos ubicados en una URL, wget es como Curl pero está
más especializado en su compatibilidad con protocolos y tiene capacidades de descarga recursiva.
Esto resulta útil cuando una URL puede apuntar a una carpeta que contiene varios archivos, aquí se
utiliza wget para descargar un único archivo de prueba llamado iso_8859-1.txt

que está alojado en w3.org. wget devuelve información mientras se descarga, como:
●​ resolver y conectar al servidor de destino.
●​ solicitud HTTP enviada, pendiente de respuesta.
●​ guardar el archivo al que nombra automáticamente en el directorio actual.

Como referencia, esto es lo que su navegador le muestra al ver los datos ubicados en la URL.

Es un archivo de texto simple, al escribir head -n 12 iso_8859-1.txt, verá las doce primeras líneas del
contenido del archivo descargado.

Como era de esperar, el archivo contiene exactamente los mismos datos que acabamos de ver en la
diapositiva anterior.
#Comandos de archivo y compresión de archivos

El archivado y la compresión son procesos distintos que, por lo general, se combinan.

El archivado es el proceso de almacenar información que no se utiliza habitualmente, pero que se


desea conservar. Un «archivo de almacenamiento» es una colección de archivos y directorios de
datos que se almacenan como un solo archivo. El archivado hace que la colección sea más portátil y
sirve como respaldo en caso de pérdida o corrupción.

La compresión de archivos, por otro lado, implica reducir el tamaño de un archivo aprovechando la
redundancia en su contenido de información, las principales ventajas de la compresión incluyen:
●​ La conservación del espacio de almacenamiento.
●​ La aceleración de las transferencias de archivos.
●​ La reducción de las cargas de ancho de banda.

Ahora, supongamos que ha creado un directorio de notes para llevar un registro de los materiales del curso.

Decide que sería una buena idea archivar sus notas en caso de que las necesite en el futuro. El árbol de
directorios de notes tiene la siguiente estructura:
●​ contiene dos subcarpetas, denominadas math y physics, cada una de las cuales contiene archivos
denominados con los mismos nombres, week1 y week2. Si utiliza el comando ls -r, puede enumerar
de forma recursiva todos los directorios y archivos del árbol de directorios actual, puede ver la
correspondencia con la representación gráfica del árbol, empezando por el directorio principal de notes,
los subdirectorios de math y physics y los archivos de la week1 y week2 de las carpetas de math y
physics. Puede usar el comando tar para archivar y desarchivar archivos y directorios.

Para archivar todo el directorio de notas, incluidos sus subdirectorios y todos los archivos que contiene,
introduce el comando: tar -cf, un nombre para el archivo archivado, como notes.tar, seguido del archivo o
directorio que deseas archivar, que es notes.

La opción c significa crear un nuevo archivo, y la marca f le dice a tar que interprete la entrada del
archivo en lugar de la entrada predeterminada, que es la entrada estándar. Si introduce ls, indica que su
directorio actual contiene ahora la carpeta de notes original y el archivo notes.tar.

Si también desea comprimir su archivo, puede introducir el mismo comando, excepto que ahora
incluye la opción -z, que filtra el archivo comprimido a través de un archivo GNU.

Al añadir el sufijo .gz al nombre del resultado, se garantiza que los programas basados en Windows, por
ejemplo, reconozcan correctamente el tipo de archivo. Si introduce ls, ahora se muestra el archivo
comprimido notes.tar.gz que ha creado.
Puedes comprobar el contenido del archivo de notas archivado llamando tar a la bola tar de tus notes
con la opción -t o list.

Esto lista todos los archivos y directorios de tu bola tar, y como era de esperar, tiene la misma
estructura que la carpeta de notes original, con notes como directorio principal, math y physics como
subdirectorios y los archivos de la week1 y week2 en los nodos terminales.

También puedes desempaquetar o desarchivar los archivos archivados mediante el comando tar.
Puedes introducir tar -xf seguido del nombre del archivo, notes.tar, además de un nombre de destino
opcional, por ejemplo notes, que resulta ser el predeterminado.

La opción -x le indica a tar que extraiga los objetos de archivos y directorios del archivo, ahora si
escribes ls -r, verás que la carpeta de notas archivada se ha desarchivado en una carpeta principal
llamada notas, subcarpetas llamadas math y physics, y los archivos de cuatro semanas, uno y dos con los
que empezaste, esto comprueba que la estructura original del directorio de «notas» esté intacta.

Del mismo modo, puede descomprimir un archivo tar.gz y extraer los archivos de él. Para
descomprimir y descomprimir el archivo notes.tar.gz, puede escribir tar -xzf seguido del nombre del archivo
comprimido, notes.tar.gz, y una carpeta de destino opcional, notes.

De nuevo, si introduce ls -r, verá que los directorios y archivos se han desempaquetado como se esperaba.

Puede usar el comando zip para comprimir archivos y directorios y empaquetarlos en un solo archivo.
Observe el orden de las operaciones que implementa zip.

Zip comprime los archivos antes de agruparlos, mientras que tar, con la opción -z, logra la
compresión aplicando «g zip» en todo el archivo tar, pero solo después de empaquetarlo. Para
comprimir el directorio de notes y empaquetarlo en un archivo zip, escribe zip notes.zip notes, y después
de ingresar ls, puede ver que se ha creado el archivo notes.zip.

El comando unzip extrae los archivos comprimidos de un archivo zip y los descomprime.

Para descomprimir el archivo notes.zip, simplemente escribe unzip notes.zip, tras introducir ls -R, verás
que unzip ha creado tu carpeta de notas y ha desempaquetado tus directorios y tus archivos de week1 y
week2, tal y como esperabas.

Introducción al Shell Scripting

#Conceptos básicos de Shell Scripting

Un script es una lista de comandos que pueden ser interpretados y ejecutados por un programa
llamado lenguaje de scripting
Los comandos pueden introducirse de forma interactiva en la línea de comandos o enumerarse línea
por línea en un archivo de texto.

Los lenguajes de programación no suelen compilarse, se interpretan en tiempo de ejecución. Los


scripts suelen ser más lentos de ejecutar que los lenguajes compilados, pero también son mucho más fáciles
y rápidos de desarrollar. Los scripts se utilizan mucho para automatizar procesos, como los trabajos ETL, las
copias de seguridad y el archivado de ficheros, y las tareas generales de administración del sistema. Puede
utilizar scripts para casi cualquier tarea computacional, incluida la integración de aplicaciones y el desarrollo
de plug-ins y aplicaciones web. Un script de shell es un archivo de texto ejecutable en el que la primera
línea suele tener la forma de una directiva de intérprete. La directiva de intérprete también se conoce
como directiva 'shebang', y tiene la siguiente forma:

El intérprete es una ruta absoluta a un programa ejecutable, y el argumento opcional es una cadena
que representa un único argumento.

Los scripts de shell son scripts que invocan un programa de shell, por ejemplo: '#!/bin/sh' invoca el
shell Bourne u otro programa shell compatible, desde el directorio bin. #!/bin/bash' 'shebang' invoca al shell
Bash. Las directivas 'shebang' no se limitan a los programas de shell, por ejemplo, puedes crear un script
python con la siguiente directiva: '#!/usr/bin/env python3'. Aquí mostramos cómo se puede utilizar un script
de shell para ejecutar un programa con un simple ejemplo de 'hola mundo'. Desde la línea de comandos,
puedes crear un simple 'shell script hola mundo' de la siguiente manera:

Utilice el comando touch para crear un archivo de texto vacío llamado 'hola_mundo.sh', la extensión
'.sh' es una convención utilizada para indicar que el archivo es un script de shell. Ahora, convierta su
archivo de texto en un script bash haciendo eco del shebang bash, y anexando el texto hecho eco a su
archivo usando el símbolo “>>”, que es el operador Bash de 'redirección de salida' usado para anexar la
salida a un archivo, finalmente, usa el comando “echo” para imprimir la declaración 'echo Hello World' y de
nuevo, redirige esa salida a tu script bash.
Antes de que puedas ejecutar tu script bash, necesitas hacerlo ejecutable.
Primero, comprueba la configuración actual de permisos de tu script utilizando el comando 'ls' con la opción
'-l'.

Las entradas R y W indican que el script es legible y escribible, pero la falta de una X significa que no es
ejecutable.

Las entradas R, W y X se aplican a tres grupos de permisos basados en usuarios: el propietario, que eres tú,
el grupo y todos los usuarios. Puedes hacerlo ejecutable para todos los usuarios invocando el comando
chmod con la opción +X, La comprobación de la configuración de permisos muestra ahora que tu script es
ejecutable para todos los usuarios, debido a las entradas 'X' para los tres grupos de permisos, ahora ya
puedes ejecutar tu script bash escribiendo './hello_world.sh' y pulsando enter, y el texto 'hola mundo'
aparecerá en la línea de comandos.

#Breve Introducción a las variables Shell

¿Qué es una variable shell?


Las variables shell ofrecen una potente forma de almacenar y posteriormente acceder o modificar
información como números, cadenas de caracteres y otras estructuras de datos por su nombre.

❖​ Veamos algunos ejemplos básicos para hacernos una idea.


Considera el siguiente ejemplo:

●​ La primera línea asigna el valor Jeff a una nueva variable llamada firstname.
●​ La siguiente línea accede y muestra el valor de la variable, utilizando el comando echo junto con el
carácter especial $ delante del nombre de la variable para extraer su valor, que es la cadena Jeff.
Así, hemos creado una nueva variable shell llamada firstname cuyo valor es Jeff.
Esta es la forma más básica de crear una variable shell y asignarle un valor, todo en un solo paso.

❖​ Lectura de la entrada del usuario en una variable de shell en la línea de comandos


Esta es otra forma de crear una variable de shell, utilizando el comando read.
Después de introducir

en la línea de comandos, el shell espera a que introduzcas algún texto:

Ahora podemos ver que el valor Grossman acaba de ser almacenado en la variable lastname por el
comando read:
Por cierto, observa que puedes hacer eco de los valores de múltiples variables a la vez.

Como pronto verás, el comando read es particularmente útil en los scripts de shell, puedes utilizarlo
dentro de un script de shell para pedir a los usuarios que introduzcan información, que luego se
almacena en una variable de shell y está disponible para su uso por el script de shell mientras se está
ejecutando.

También aprenderás sobre los argumentos de la línea de comandos, que son valores que pueden pasarse a
un script y asignarse automáticamente a variables del shell.

#Filtros, tuberías y variables

Los filtros son comandos o programas del shell que toman su entrada de la entrada estándar,
normalmente el teclado, y devuelve su salida a la salida estándar, que normalmente es el terminal.

Podemos pensar en un filtro como un transformador, un programa que transforma los datos de entrada
en datos de salida. Hay muchos ejemplos: wc, cat, more head, sort, grep, etc. El valor de los filtros es que
pueden encadenarse, lo que nos lleva al comando pipe.

El comando pipe, denotado por una barra vertical (|), amplía enormemente la funcionalidad de los shells,
te permite encadenar secuencias de comandos de filtrado, en consecuencia, la salida del comando 1 se
convierte en la entrada del comando 2, y así sucesivamente. No es sorprendente que pipe sea la abreviatura
de pipeline (tuberia).

Por ejemplo, puede canalizar la salida de ls al comando sort con la opción


-r, que da como resultado una lista ordenada inversamente del contenido del
directorio.

Las variables de shell son variables cuyo alcance está limitado al shell en el
que se crearon, por lo tanto, los shells no pueden ver las variables de otros
shells.

Puedes invocar el comando set para listar todas las variables y sus
definiciones que son visibles para el shell actual. Debido a que también lista
mucha información subsecuente, puede canalizar la salida a head para mostrar
sólo las primeras cuatro definiciones de variables.

Para definir una nueva variable del shell,


simplemente utilice el signo igual (=) para
asignar un valor al nombre de la variable
elegida, observe que no hay espacios alrededor
del signo igual, como ejemplo, definamos una variable shell llamada
Saludos (greetings), que almacena la cadena hola (hello). Para ver el
contenido de la nueva variable Saludos (greetings), utilice el signo del
dólar ($) para acceder a su valor y, a continuación, vuélvalo en forma de eco (comando echo). También
puedes mostrar múltiples variables, definamos otra variable audiencia con el valor mundo, entonces
haciendo eco de ambas variables de vuelta devuelve Hola Mundo. Para borrar una variable, utilice el
comando unset, por ejemplo, unset AUDIENCE → borra la variable AUDIENCE.

Las variables de entorno son como las variables de shell,


excepto que tienen un alcance ampliado, persisten en
cualquier proceso hijo generado por el shell en el que se
originan. Puedes extender cualquier variable del shell a una
variable de entorno aplicando el comando export, por
ejemplo, export GREETINGS convierte Greetings en una
variable de entorno. Para listar todas las variables de
entorno, utilice el comando env, comprobemos si Saludos
se exportó como variable de entorno pasando la salida de
env a grep y filtrando los resultados con el patrón GREE.

#Ejemplo de tuberías

❖​ ¿Qué son las tuberías?


En pocas palabras, las tuberías son comandos de Linux que permiten utilizar la salida de un comando como
entrada de otro.

Las tuberías utilizan el siguiente formato:

¡No hay límite para el número de veces que puede encadenar tuberías en una fila!

❖​ Ejemplos de tuberías
Combinación de comandos
Empecemos con un ejemplo de uso común. Recuerde los siguientes comandos:
●​ sort - ordena las líneas de texto de un fichero y muestra el resultado.
●​ uniq - imprime un archivo de texto con todas las líneas consecutivas repetidas comprimidas en una sola
línea.
Con la ayuda del operador pipe, puede combinar estos comandos para imprimir todas las líneas
únicas de un fichero.
Suponga que tiene el archivo pets.txt con el siguiente contenido:
Si sólo utiliza sort en pets.txt, obtendrá:

El fichero está ordenado, pero hay líneas duplicadas de "perro" y "pez dorado".

Por otro lado, si sólo usas uniq, obtienes

.
Esta vez has eliminado los duplicados consecutivos, pero quedan duplicados no consecutivos de "perro" y
"pez".

Pero si combinas los dos comandos en el orden correcto, primero con sort y luego con uniq,
obtendrás:

Cómo sort ordena todos los elementos idénticos consecutivamente, y uniq elimina todos los
duplicados consecutivos, al combinar los comandos sólo se imprimen las líneas únicas de pets.txt.

❖​ Aplicación de un comando a cadenas y archivos


Algunos comandos como tr sólo aceptan la entrada estándar - normalmente texto introducido desde el
teclado - pero no cadenas o nombres de archivos.

●​ tr (translate) - reemplaza caracteres en el texto de entrada

En casos como éste, se puede utilizar piping para aplicar el comando a cadenas y contenidos de ficheros.

Con cadenas, puede utilizar echo en combinación con tr para sustituir todas las vocales de una cadena por
guiones bajos _:

Para realizar el complemento de la operación del ejemplo anterior -o para sustituir todas las consonantes
(cualquier letra que no sea vocal) por un guión bajo - puede utilizar la opción -c:
Con los archivos, puede utilizar cat en combinación con tr para cambiar todo el texto de un archivo a
mayúsculas de la siguiente manera:

Las posibilidades son infinitas, por ejemplo: usted podría agregar uniq a la tubería anterior para devolver
sólo las líneas únicas en el archivo, así:

❖​ Extrayendo información de Archivos JSON:


Vamos a ver cómo se puede utilizar este archivo json para obtener el precio actual de Bitcoin (BTC) en USD,
utilizando el comando grep.
Copie la salida anterior en un archivo y nómbrese como Bitcoinprice.txt.

El campo JSON que quieres coger aquí es "precio": [números].[números]", para obtenerlo, puedes utilizar el
siguiente comando grep para extraerlo del texto JSON:

Vamos a desglosar los detalles de esta declaración:


●​ -o → Le dice a grep que sólo devuelva la parte coincidente
●​ -E → Le dice a grep que sea capaz de usar símbolos regex extendidos como ?
●​ \"precio\" → coincide con la cadena "precio".
●​ \s* → coincide con cualquier número (incluido 0) de caracteres de espacio en blanco (\s)
●​ : coincide con :
●​ [0-9]* → coincide con cualquier número de dígitos (de 0 a 9)
●​ ?\. → coincide opcionalmente con un “.”.

Utilice el comando cat para obtener la salida del archivo JSON y canalícelo con el comando grep para
obtener la salida requerida.

También puede extraer información directamente de las URL y recuperar cualquier dato específico utilizando
estos comandos grep.

❖​ Extraer información de las URL:


1.​ Abra su navegador web y navegue hasta el siguiente enlace: https://openapi.coinstats.app, se le
redirigirá a la página de inicio de sesión, como se muestra a continuación:

2.​ Introduzca su dirección de correo electrónico y contraseña, y proceda a verificar su correo electrónico,
tras la verificación, se le redirigirá al panel de control.
3.​ En el panel de control, localice y haga clic en el botón Generar clave API, esto generará una clave API,
como se muestra a continuación. Asegúrese de guardar esta clave API.
4.​ A continuación, haga clic en la sección API Docs de la parte izquierda del panel de control.

5.​ Al hacer clic en ella, se le dirigirá a la página que se muestra a continuación, haga clic en el punto final
/coins.

6.​ En la esquina derecha de la página que se abre, encontrará un comando curl para recuperar la salida
en formato JSON, para probar esta funcionalidad, haga clic en el botón Probar.
Nota: Este proceso sólo funciona si introduce la clave de API generada en el cuadro de texto
denominado encabezado que solicita autorización.
7.​ Después de la autorización, la salida se generará en formato JSON, como se muestra a continuación:
Utilice el comando 'grep', siguiendo las directrices descritas anteriormente, para obtener los datos
necesarios.

#Características útiles del Bash Shell

Los metacaracteres son caracteres especiales que tienen significado para el shell.

●​ El símbolo de almohadilla (#) se utiliza para incluir comentarios


que el shell ignora, por ejemplo, este comentario no devuelve nada.
●​ El punto y coma (;) es un metacaracter que separa comandos
escritos en la misma línea, por ejemplo, estos dos comandos
devuelven sus salidas en dos líneas como esta.
●​ El asterisco (*) representa cualquier número de caracteres
consecutivos dentro de un patrón de nombre de archivo, por
ejemplo, esta expresión devuelve todos los objetos del directorio
bin de la barra con un nombre que empiece por ba y seguido de
cualquier carácter, que en este caso es Bash.
●​ El signo de interrogación (?) actúa como una versión de un solo
carácter del metacarácter asterisco, por ejemplo, esta expresión
enumera todos los objetos del directorio bin slash que tienen un
único carácter en lugar del signo de interrogación, es decir, las
rutas bash y dash.

Quoting especifica si el shell debe interpretar los caracteres especiales como metacaracteres o
'escapar' de ellos.

●​ Puede utilizar la barra invertida (\) para escapar de la


interpretación de un único carácter como metacarácter, aquí, la
barra invertida le dice a Bash que interprete el signo de dólar como
texto en lugar del nombre de variable por defecto, por lo que la
salida es literalmente 'dólar uno cada uno'.
●​ Las comillas dobles (“ ”) interpretarán el texto literalmente,
excepto los metacaracteres, que se interpretarán según sus
significados especiales, por ejemplo, la expresión 'dólar uno', sin la
barra invertida precedente, se interpreta como una variable, que en
este caso está vacía, como vemos aquí. Observe que imprimió el
espacio antes de "each".
●​ Las comillas simples (‘’), en cambio, se utilizan para interpretar
todo el contenido como caracteres literales, por ejemplo, esta
expresión devuelve el mismo resultado que el primer ejemplo
anterior.

Entrada/Salida, o redirección 'I' 'O', se refiere a un conjunto de características utilizadas para redirigir
la entrada estándar, el teclado, o la salida estándar, el terminal.

●​ El símbolo '>' se utiliza para redirigir la salida estándar de un comando a un archivo, también crea el
archivo si no existe y sobrescribe su contenido si ya existe.
●​ Puede evitar la sobreescritura utilizando el símbolo doble mayor “>>” que, que añade la salida al
contenido existente.
●​ La combinación '2>' redirige un mensaje de error a un fichero. Para añadir el mensaje de error, por
ejemplo, a un archivo de registro de errores, añada otro signo mayor que (2>>).
●​ El signo menos (<) que es una redirección que se utiliza para pasar el contenido de un fichero como
entrada a la entrada estándar.
Veamos algunos ejemplos:
Puedes empezar creando simultáneamente un fichero y rellenándolo
con algo de texto, como esto, continuación, puede cat el archivo para
ver lo que hay allí. Como puedes ver, 'linea1' fue escrita en 'eg.text',
ahora, puedes intentar añadir otra línea al fichero y viendo el
contenido de nuevo, puedes ver que el fichero contiene exactamente
las dos líneas que has añadido.

Introducir algo como la palabra basura “garbage” devuelve un error, esta


expresión captura el mensaje de error y lo redirige al fichero 'err.txt'. Y
efectivamente, el contenido de 'err.txt' es el que cabe esperar.

Puede utilizar la sustitución de comandos para reemplazar un comando por su salida, hay dos
notaciones equivalentes:
●​ En la primera, el comando se encierra entre paréntesis con un signo de dólar delante ($(comando)).
●​ En la segunda, el comando se encierra entre comillas inversas (`comando`).
Supongamos que desea almacenar la ruta actual del directorio en una variable llamada
"here", puede utilizar la sustitución de comandos en el comando pwd (o directorio de
trabajo actual) para capturar su salida y asignarla a la variable "here", y efectivamente,
al hacer echo de su valor se devuelve el directorio actual.

Los argumentos de línea de órdenes son argumentos utilizados por un programa especificado en la
línea de órdenes, en particular, proporcionan una forma de pasar argumentos a un script de shell, un
programa. Los argumentos de línea de comandos para un script Bash se especifican: Los argumentos 'arg1'
y 'arg2' se pasan a 'MyBashScript.sh'.
$ ./MyBashScript.sh arg1 arg2

Bash tiene dos modos principales de funcionamiento:


●​ El modo por lotes, que es el habitual, ejecuta los comandos secuencialmente, por ejemplo, estos dos
comandos, separados por el metacarácter punto y coma, se ejecutarán en un orden determinado. El
comando 2 sólo se ejecuta una vez finalizado el comando 1.
comando1; comando2
●​ En modo concurrente, los comandos se ejecutan en paralelo, el operador ampersand, después del
comando 1, indica al comando 1 que opere en segundo plano y pasa el control al comando 2 en primer
plano.
comando1 & comando2

#Ejemplos de funciones de Bash Shell

Metacaracteres
Los metacaracteres son caracteres con un significado especial que el shell interpreta como
instrucciones.

Metacarácter Significado
Numeral #
El metacarácter Numeral # Se utiliza para representar comentarios en scripts de shell o archivos de
configuración, cualquier texto que aparezca después de un # en una línea se trata como un comentario y es
ignorado por el shell.

Los comentarios son útiles para documentar tu código o archivos de configuración, proporcionando contexto
y explicando el propósito del código a otros desarrolladores que puedan leerlo. Es una buena práctica
incluir comentarios en tu código o ficheros de configuración siempre que sea necesario para
hacerlos más legibles y mantenibles.

Punto y coma ;
El metacarácter punto y coma ; se utiliza para separar varios comandos en una misma línea de
comandos, cuando varios comandos están separados por un punto y coma, se ejecutan secuencialmente
en el orden en que aparecen en la línea de comandos.

Como puede ver en el ejemplo anterior, la salida de cada comando echo se imprime en líneas separadas y
sigue la misma secuencia en la que se especificaron los comandos.

Asterisco *
El metacarácter asterisco * se utiliza como carácter comodín para representar cualquier secuencia de
caracteres, incluso ninguna.

En este ejemplo, *.txt es un patrón comodín que coincide con cualquier archivo del directorio actual con
extensión .txt. El comando ls lista los nombres de todos los archivos coincidentes.

Signo de interrogación ?
El metacarácter signo de interrogación ? se utiliza como carácter comodín para representar cualquier
carácter.

En este ejemplo, archivo?.txt es un patrón comodín que coincide con cualquier archivo del directorio actual
cuyo nombre empiece por archivo, seguido de cualquier carácter y termine con la extensión .txt.

Citas
El entrecomillado es un mecanismo que permite eliminar el significado especial de los caracteres,
espacios u otros metacaracteres de un argumento de comando o script de shell. Las comillas se utilizan
cuando se desea que el shell interprete los caracteres literalmente.
Barra invertida \
La barra invertida se utiliza como carácter de escape. Indica al shell que conserve la interpretación
literal de caracteres especiales como espacio, tabulador y $, por ejemplo, si tiene un archivo con
espacios en su nombre, puede utilizar barras invertidas seguidas de un espacio para tratar esos espacios
literalmente:

Comillas dobles " "


Cuando una cadena está entre comillas dobles, la mayoría de los caracteres se interpretan literalmente,
pero los metacaracteres se interpretan según su significado especial, por ejemplo, puede acceder a
valores variables utilizando el carácter dólar $:

Comillas simples ' '


Cuando una cadena está entre comillas simples, todos los caracteres y metacaracteres encerrados entre
las comillas se interpretan literalmente. Las comillas simples alteran el ejemplo anterior para producir la
siguiente salida:

Observe que en lugar de imprimir el valor de $USER, las comillas simples hacen que el terminal
imprima la cadena "$USER".

Redirección de entrada/salida

La redirección de entrada/salida (IO) es el proceso de dirigir el flujo de datos entre un programa y sus
fuentes de entrada/salida.

Por defecto, un programa lee la entrada desde la entrada estándar, el teclado, y escribe la salida en la salida
estándar, el terminal, sin embargo, utilizando la redirección IO, puede redirigir la entrada o salida de un
programa hacia o desde un archivo u otro programa.

●​ Redirigir salida >


Este símbolo (>) se utiliza para redirigir la salida estándar de un comando a un archivo especificado.
ls > archivos.txt creará un archivo llamado archivos.txt si no existe, y escribirá la salida del comando ls en
él.
Advertencia: Si el fichero ya existe, la salida sobrescribirá todo su contenido.

●​ Redirigir y anexar la salida >>


Esta notación (>>) se utiliza para redirigir y anexar la salida de un comando al final de un archivo, por
ejemplo,
ls >> archivos.txt anexa la salida del comando ls al final del archivo archivos.txt, y preserva cualquier
contenido que ya existiera en el archivo.
●​ Redirigir la salida estándar 2>
Esta notación (2>) se utiliza para redirigir la salida de error estándar de un comando a un archivo, por
ejemplo, si ejecuta el comando ls en un directorio inexistente de la siguiente manera
ls-directorio-no-existente 2> error.txt el shell creará un archivo llamado error.txt si no existe, y redirigirá la
salida de error del comando ls al archivo.
Advertencia: Si el archivo ya existe, el mensaje de error sobrescribirá todo el contenido del archivo.

●​ Añadir error estándar 2>>


Este símbolo (2>>) redirige la salida de error estándar de un comando y añade el mensaje de error al
final de un archivo sin sobrescribir su contenido.
ls directorio-inexistente 2>> error.txt anexará la salida de error del comando ls al final del archivo error.txt.

●​ Redirigir entrada <


Este símbolo (<) se utiliza para redirigir la entrada estándar de un comando desde un archivo u otro
comando. Por ejemplo,
sort < data.txt ordenará el contenido del archivo data.txt.

Sustitución de comandos
La sustitución de comandos permite ejecutar un comando y utilizar su salida como componente del
argumento de otro comando. La sustitución de comandos se indica encerrando un comando entre comillas
(`command`) o utilizando la sintaxis $(). Cuando se ejecuta el comando encapsulado, su salida se
sustituye en su lugar y puede utilizarse como argumento dentro de otro comando. Esto es particularmente
útil para automatizar tareas que requieren el uso de la salida de un comando como entrada para otro
comando.
Por ejemplo, puedes almacenar la ruta a tu directorio actual en una variable aplicando la sustitución de
comandos en el comando pwd, luego moverse a otro directorio, y finalmente volver a tu directorio original
invocando el comando cd en la variable que almacenaste, de la siguiente manera:

Argumentos de línea de comandos


Los argumentos de línea de comandos son entradas adicionales que se pueden pasar a un programa
cuando éste se ejecuta desde una interfaz de línea de comandos. Estos argumentos se especifican
después del nombre del programa y se pueden utilizar para modificar el comportamiento del programa,
proporcionar datos de entrada o proporcionar ubicaciones de salida. Los argumentos de línea de
comandos se utilizan para pasar argumentos a un script de shell.
Por ejemplo, el siguiente comando proporciona dos argumentos, arg1 y arg2, a los que se puede acceder
desde el script Bash:

#Introducción al Bash Scripting Avanzado

●​ Condicionales
Los condicionales, o sentencias if, son una forma de decirle a un script que haga algo sólo bajo una
condición específica.
Los condicionales de script Bash utilizan la siguiente sintaxis if-then-else:
Si la condición es verdadera, entonces Bash ejecuta las sentencias en statement_block_1 antes de
salir del bloque condicional de código. Después de salir, continuará ejecutando cualquier comando después
del cierre “fi”.
Alternativamente, si la condición es falsa, Bash ejecuta las sentencias en statement_block_2 bajo la
línea else, luego sale del bloque condicional y continúa ejecutando comandos después del cierre “fi”.

En el siguiente ejemplo, la condición comprueba si el número de argumentos de línea de comandos


leídos por un script Bash, $#, es igual a 2.

Observe el uso de los corchetes dobles, que es la sintaxis requerida para hacer comparaciones de
enteros en la condición [[ $# == 2 ]].
También puede hacer comparaciones de cadenas, por ejemplo, suponga que tiene una variable llamada
cadena_var que tiene asignado el valor "Si". Entonces la siguiente sentencia se evalúa a verdadero:

Fíjese que sólo necesita corchetes simples cuando hace comparaciones de cadenas.
También puede incluir múltiples condiciones a satisfacer utilizando el operador "and" && o el operador "or" ||.
Por ejemplo

●​ Operadores lógicos
Los siguientes operadores lógicos se pueden utilizar para comparar enteros dentro de una condición
en un bloque de condición if.

==: es igual a
Si una variable a tiene un valor de 2, la siguiente condición se evalúa como verdadera; en caso contrario, se
evalúa como falsa.
!=: no es igual a
Si una variable a tiene un valor distinto de 2, la siguiente condición se evalúa como verdadera. Si su valor es
2, entonces se evalúa como falso.

Consejo: El operador lógico de negación ! cambia verdadero por falso y falso por verdadero.

<=: es menor o igual que


Si una variable a tiene un valor de 2, entonces la siguiente sentencia se evalúa como verdadera:

y la siguiente sentencia se evalúa como falsa:

También puede utilizar la notación equivalente -le en lugar de <=:

Aquí sólo hemos dado una pequeña muestra de los operadores lógicos, puedes explorar recursos
como la Guía Avanzada de Bash-Scripting para encontrar más información.

Cálculos aritméticos
Puedes realizar sumas, restas, multiplicaciones y divisiones de números enteros utilizando la
notación $(()).
Por ejemplo, los dos conjuntos de comandos siguientes muestran el resultado de sumar 3 y 2.

Bash maneja aritmética de enteros de forma nativa, pero no maneja aritmética de coma flotante,
como resultado, siempre truncará la parte decimal del resultado de un cálculo, Por ejemplo:

imprime el resultado entero truncado, 1, no el número en coma flotante, 1.5.

La siguiente tabla resume los operadores aritméticos básicos:


●​ Arrays
El array es una estructura de datos incorporada en Bash. Un array es una lista delimitada por
espacios y contenida entre paréntesis. Para crear un array, declara su nombre y contenido:

Esta sentencia crea y rellena la matriz mi_matriz con los elementos entre paréntesis: 1, 2, "tres", "cuatro" y 5.

También puedes crear un array vacío utilizando:

Si quieres añadir elementos a tu array después de crearlo, puedes hacerlo añadiendo un elemento
cada vez:

Esto añade los elementos "seis" y 7 a la matriz mi_matriz.

Utilizando la indexación, puedes acceder a elementos individuales o múltiples de una matriz:

Consejo: Ten en cuenta que la indexación de arrays empieza desde 0, no desde 1.

●​ bucles for
Puede utilizar una construcción llamada bucle for junto con la indexación para iterar sobre todos los
elementos de una matriz, por ejemplo, los siguientes bucles for se ejecutarán una y otra vez hasta que se
impriman todos los elementos:

El bucle for requiere un componente ; do para recorrer el bucle. Además, necesita terminar el bloque
del bucle for con una sentencia done.

Otra forma de implementar un bucle for cuando sabes cuántas iteraciones quieres es la siguiente, por
ejemplo, el siguiente código imprime los números del 0 al 6.
Puede utilizar los bucles for para realizar todo tipo de cosas, por ejemplo, puedes contar el número
de elementos de un array o sumar sus elementos, como hace el siguiente script de Bash:

Prueba a ejecutar este script, para que te hagas una idea de cómo funciona este bucle.

#Programación de trabajos mediante Cron

Si usted es un administrador de sistemas o un ingeniero de datos o incluso un desarrollador, puede haber


ocasiones en las que desee programar ciertos trabajos para que se ejecuten automáticamente en
determinados momentos, por ejemplo, es posible que desee programar una secuencia de comandos de
carga para que se ejecute todos los días a medianoche, y una secuencia de comandos de copia de
seguridad para que se ejecute todos los domingos a las 2 AM. La utilidad cron en Linux y sistemas
operativos tipo Unix le permite hacer precisamente eso.

Cron es el nombre general de la herramienta que ejecuta trabajos programados consistentes en


comandos de shell o scripts de shell, es el demonio o servicio que interpreta los "archivos crontab"
cada minuto y envía los trabajos correspondientes a cron a las horas programadas. Un crontab,
abreviatura de "tabla cron", es un archivo que contiene trabajos y datos de programación. Crontab también
es un comando que invoca un editor de texto para permitirle editar un archivo crontab.

Al introducir crontab "menos e" en la línea de comandos, se abre el editor de texto predeterminado, con
el editor, puede especificar un nuevo cronograma y un comando, que tiene la siguiente sintaxis: "comando"
puede ser cualquier comando del shell, incluida una llamada a un script del shell. Los símbolos significan
minuto, hora, día del mes, mes y día de la semana. las cinco posiciones deben tener una entrada
numérica o un asterisco, que es un símbolo comodín que significa "cualquiera", por ejemplo, la
siguiente sintaxis significa:

anexar la fecha actual al archivo 'sundays.txt' a las 15:30 de cada domingo, al cerrar el editor y guardar los
cambios, la tarea se añade a la tabla cron. Veamos con más detalle cada uno de estos pasos.
Al introducir crontab "menos e" en la línea de comandos, se abre el editor de texto predeterminado.

En este caso, el editor predeterminado es GNU nano, convenientemente, las instrucciones para configurar
las tareas cron se incluyen aquí como comentarios. También se incluyen instrucciones para utilizar el editor,
pero es probable que sólo necesite "control x" en este contexto.

Aquí he introducido tres tareas cron de ejemplo.

Observe que los espacios adicionales se ignoran, por lo que para mejorar la legibilidad puede alinear
las entradas como columnas bajo el encabezado.
1.​ La primera entrada ordena a cron que añada la fecha actual al archivo "sundays.txt" a las 15:30 todos
los domingos.
2.​ La siguiente línea especifica un guión shell de "carga de datos" para que se ejecute todos los días a
medianoche.
3.​ La última línea hace que cron ejecute el guión shell de "copia de seguridad" de datos para que se
ejecute los domingos a las 2 de la madrugada.

Para guardar el trabajo, escriba primero "control x" para salir del editor y, a continuación, "y" para
guardar los cambios. Los trabajos ya están en producción.

Ejecutar crontab con la opción "l" devuelve una lista de todas las tareas cron y sus horarios.
Utilicé "tail" para evitar devolver todos los comentarios del archivo crontab.

Para eliminar una tarea, basta con invocar el editor crontab, eliminar la línea correspondiente en el
archivo crontab y guardar los cambios.

Proyecto Practico

#Visión General del Proyecto de Práctica

Escenario
Su equipo le ha encomendado la tarea de crear un proceso automatizado de extracción, transformación y
carga (ETL) para extraer las previsiones meteorológicas diarias y los datos meteorológicos observados y
cargarlos en un informe activo que el equipo de análisis utilizará para su posterior análisis, como parte de un
proyecto más amplio de modelización de predicciones, el equipo quiere utilizar el informe para supervisar y
medir la precisión histórica de las predicciones de temperatura por fuente y estación.
Como prueba de concepto (POC), para empezar sólo se le pide que lo haga para una única estación y una
única fuente, para cada día a mediodía (hora local), recopiló tanto la temperatura real como la temperatura
prevista para el mediodía del día siguiente en Casablanca, Marruecos.
En una fase posterior, el equipo prevé ampliar el informe para incluir listas de ubicaciones, diferentes fuentes
de previsión, distintas frecuencias de actualización y otras métricas meteorológicas como la velocidad y
dirección del viento, las precipitaciones y la visibilidad.

Fuente de datos
Para este proyecto de prácticas, utilizarás el paquete de datos meteorológicos proporcionado por el proyecto
de código abierto wttr.in, un servicio web que ofrece información sobre previsiones meteorológicas en un
formato sencillo y basado en texto, para más información, puedes leer más sobre el servicio en su GitHub
Repo.

En primer lugar, utilizarás el comando curl para obtener datos meteorológicos a través del sitio web
wttr.in. Por ejemplo, para obtener los datos de Casablanca, introduce:

que imprime lo siguiente en stdout:


Objetivos de aprendizaje
Después de completar este proyecto de práctica, usted será capaz de aplicar sus nuevas habilidades de
shell scripting en un escenario del mundo real para:
●​ Descargar datos meteorológicos sin procesar
●​ Extraer datos de interés de los datos sin procesar
●​ Transformar los datos según sea necesario
●​ Cargar los datos en un archivo de registro utilizando un formato tabular
●​ Programar todo el proceso para que se ejecute automáticamente a una hora determinada cada día.

Resumen
Tareas de información meteorológica
Debe extraer y almacenar los siguientes datos cada día a mediodía, hora local, para Casablanca, Marruecos:
●​ La temperatura real (en grados Celsius)
●​ La temperatura prevista (en grados Celsius) para el día siguiente a mediodía.

A continuación se muestra un ejemplo del informe meteorológico resultante:

Tabla 1. Ejemplo de informe meteorológico

También podría gustarte