You are on page 1of 153

Curso de Linux en español | Curso online

gratis
Compartir222
Twittear
Compartir
+1
Compartir 222
Hoy inicia “El Curso de Linux en Español” donde semana a semana se desarrollará un tema y se
dará respuesta a todas las inquietudes que ustedes tengan respecto a los temas que iremos tratando,
el curso esta diseñado en base a la estructura del “Curso de Linux orientado a distribuciones”
que tiene un valor de $1,200 y se imparte en 60 horas, este curso esta diseñado en formato vídeo y
texto con imágenes didácticas e incluye las descargas del software que utilizaremos, de manera que
este curso sea fácil de seguir para todos.

¿Para quien va dirigido el curso de Linux?


El diseño de este curso esta pensado para ayudar a todo aquel que posea un conocimientos mínimo
de informática, ya que iniciamos desde los conceptos más básicos hasta alcanzar aspectos
avanzados en el entorno Linux.

¿Por que seguir el curso de Linux?


Porqué aun que no te des cuenta el 85% de Internet se encuentra en los hombros de

Linux desde el Tianhe-2, un superordenador


desarrollado por la Universidad Nacional de Tecnología de Defensa Nacional de China que ostenta
el puesto del ordenador más potente del mundo hasta el Raspberry Pi ordenador de aprendizaje del
tamaño de una tarjeta de crédito.
Todos los días tu usas servicios que funcionan con Linux ya que los servidores de Google y
Wikipedia son Linux, a nivel de investigación Científica Linux es muy utilizado, de alli que la
NASA y el LHA (Gran Colisionador de Hadrones) utilicen Linux, por ultimo en materia se
seguridad nacional ¿sabes que utiliza el FBI? correcto, utiliza Linux.
Si el mundo de la informática comenzaba a aburrirte, Linux te abre todo un nuevo mundo de
posibilidades, posibilidades que no te brinda un sistema operativo como Windows.
La información que aprenderás en este curso son procedimientos que aun que te ayudarán a
comprender y a manejar el sistema Linux, esta información será una buena base para comprender e
iniciar es sistemas FreeBSD, OpenBSD e incluso MAC OS a un nivel más avanzado.

Temario del curso de Linux


Te invito a que le des un vistazo al temario. cada lunes se habilitara un nuevo capitulo y como idea
practica puedes suscribirte a nuestro Canal RSS en la parte superior derecha, o al pie de pagina
puedes suscribirte para que te enviemos un correo con cada nuevo tema que publiquemos.
1. Introduccion a Linux
2. Núcleo, Shell, estructura de directorios y permisos
3. Comandos Básicos y Salida Estandar
4. Gestión de Procesos y Archivos
5. Compresión y Empaquetamiento
6. Búsqueda y Expresiones Regulares
7. Edición de Texto
8. Shell Script Básico I
9. Bash Script Básico II
10. Bash Script Avanzado I
11. Bash Script Avanzado II
12. Xwindows y Sistema Grafico
13. Automatización de Tareas
14. Instalación OpenSuSE
15. Instalación Centos
16. Instalación Ubuntu Desktop y Ubuntu Server
17. Instalación Debian
18. Administración de Usuarios
19. Redes en Linux I
20. Redes en Linux II
21. Instalación de paquetes RPM
22. Instalación de paquetes DEB
23. Gestores de repositorios
24. Instalando desde las fuentes
25. Dispositivos
26. Seguridad y Hacking I
27. Seguridad y Hacking II
28. DHCP
29. FTP SERVE
30. SSH Server
31. Apache Server
32. PHP sobre Apache
33. MySQL Server
34. Postgre SQL Server
35. Tomcat Server
36. DNS Server
37. Doevcot y Postfix Mail Server I
38. Doevcot y Postfix Mail Server II
39. Courier y Exim Mail Server I
40. Courier y Exim Mail Server II
41. OpenLDAP
42. Impresión LprNG
43. Impresión CUPS I
44. Impresión CUPS II
45. Servidor de archivos Samba I
46. Servidor de archivos Samba II
47. Servidor de archivos NFS I
48. Servidor de archivos NFS II
49. RAID Linux I
50. RAID Linux II
51. ZFS
52. Volumenes Logicos LVM
53. Kernel de Linux I
54. Kernel de Linux 2
55. Principios de PHP
56. Principios de Perl
57. Principios de Python
58. Principios de Java
59. Principios de C
60. Resumen y Finalizacion
Quienes sigan el curso de Linux con nosotros sin duda se la pasaran muy bien y podrán
aprender muchos de los secretos que Linux guarda, les animamos a compartir el curso de Linux con
todos sus amigos a través de sus redes sociales y a suscribirse al feed de Proyecto Byte para recibir
un correo con cada articulo nuevo que publiquemos.
Curso de Linux en español 1/60 – Historia y
Filosofia
Compartir354
Twittear
Compartir
+1
Compartir 354
La filosofía del Software Libre nació a mediados de los años ochentas abanderada por el Hacker
del MIT Richard Stallman. Esto se relata en un anécdota de la situación que lo lleva a tomar dicha
postura, RMS como se le conoce en listas de correo estaba trabajando en solucionar un problema
con una impresora que una importante compañía fabricante había donado al MIT en calidad
experimental. Esta impresora estaba dando muchos problemas en red. Para no entrar en detalles
Stallman abordo al fabricante para obtener el código fuente del controlador de la impresora para
poder solucionar los problemas que había identificado, pero el fabricante lo evadió continuamente y
nunca se los entrego.
Save
Después se enteraría que la verdadera razón de esto fue que la compañía consideraba esta
información vital para su negocio.
Entonces Richard Stallman se vio en una encrucijada, seguir utilizando software el cual nunca le
iban a entregar del código fuente y nunca podría mejorar y aguantar la frustración de los problemas
que tuviera el mismo, o fundar su propio proyecto para cumplir cuatro propiedades básicas que
según el tiene el software.

Propiedades básicas del Software Libre


 La libertad de usar
Esta libertad de uso se refiere a poder usar con cualquier propósito, es decir, yo puedo usar el
software para llevar acabo determinada función y si este software puede ser utilizado para otra
función así no sea la mas idónea, poderlo utilizarla en esta.
 Aprender a adaptar
Los programas se puede adaptar a las necesidades especificas de cada uno de los usuarios esta es la
segunda libertad.

 Redistribuir
Es decir software no debe considerado como un objeto del cual se tiene que quitar de un lado para
colocar en otro como lo exigen la mayoría de las licencias propietarias. El software se puede
redistribuir por que las copias digitales son exactas.

 Publicar las mejoras


Es decir si el software se puede Adaptar, mejorar, esas mejoras deberían ser publicadas para el
beneficio de la comunidad y esta a su vez ayudar al resto a alimentar su desarrollo.
En Free Software Foundation enumeran las libertades de 0 a 3, cualquier parecido con las leyes de
la robótica de Isaac Asimov es pura coincidencia.
Entonces estas son las 4 Libertades básicas que Richard Stallman defiende en su postura de
Software Libre.

¿Como funciona este negocio?


El software para mejorarlo necesita ser escrito en un código fuente que es un código entendible a
las personas ya que los procesadores de l0s computadoras solo entienden unos y ceros. Entonces
ese código fuente puede ser compilado para pasarlo al lenguaje binario como en el caso de C y
Java, o puede ser distribuido en el mismo código fuente como en el caso de los lenguajes
interpretados como Perl, PHP etc.
De esta manera los programas ya ejecutables hacen parte de un grupo de aplicaciones de
productividad como Herramientas de Oficina, Navegador Web, Modelador 3d, Editores de Imagen,
Vídeo y Sonido entre otras.
Este grupo permite la creación de distribuciones de software, ya sea bajo el núcleo de Linux u
otros núcleos de sistema operativo. Por eso contamos con todas las herramientas para poder ser
productivos con nuestros equipos informáticos llámense computador de escritorio, Equipos
móviles, Servidores de red, Procesamiento de datos o control de producción industrial entre otras.
Estas aplicaciones deben respetar estándares abiertos, ¿para que? Para que los documentos que se
produzcan no infrinjan patentes, y así no tengan problemas con los propietarios de las mismas,
siempre tratando de asegurar la libertad de los usuarios y de los desarrolladores con respecto al uso
de dichos estándares.
Entonces con el uso de estos estándares abiertos se producen contenidos abiertos para la
documentación de estos estándares permitiendo la difusión de los mismo con las aplicaciones de las
distribuciones ya mencionadas.
De esta manera en su forma filosófica, el software libre es una forma ética de entender el
software. En su desarrollo, comercialización, distribución y uso, para lo que necesita una expresión
legal en forma de licencias de software expresando pues valores como, Ética, Creatividad,
Eficiencia, Colaboración, No discriminación, Ciencia, Transparencia, Seguridad, Competitividad,
privacidad, Solidaridad y Sobre todo garantía de la libertad.

Como funciona el Software libre en la practica


En el mundo del Software libre por un lado están los desarrolladores por el otro los usuarios, los
usuarios colaboran con los desarrolladores y viceversa eligiendo que proyectos para sus actividades
diarias.

¿Cuales son esos usuarios?


Son las ONG, Instituciones, Empresas, Países o regiones, Universidades y personas particulares que
vemos en las propuestas de software libre una opción para poder implementar en algunas
organizaciones.
Esto produce un conjunto de tecnologías que permiten una alternativa, solamente basada en
software libre.

¿Que hay del Soporte?


Bueno el soporte es retro alimentado. El desarrollo de software, genera aplicaciones, las
aplicaciones cuentan con usuarios, estos se reúne en comunidades, Que crean foros, que exponen
necesidades y problemas, que retro alimenta a los desarrolladores, y estos corrigen y mejoran las
aplicaciones. Este es el ecosistema del software libre.

¿Que es GNU?
GNU es un acrónimo Recursivo de GNU no es UNIX .

¿Por que razón?


Bueno, en la época en la que Richard Stallman al desarrollo su filosofía GNU el Unix era a la
plataforma mas estable y mas utilizada en el entorno corporativo entonces el comenzó a
desarrollar herramientas como su compilador de C, un debuguer y un editor para
programación ademas de comandos básicos con parámetros extendidos que los de Unix no tenia.
Así el GNU fue creciendo y engordando bastante. Al año siguiente de manifestar su filosofía de
software libre, Stallman crea la Free Software Fundation (Fundación de Software Libre) Para
poder tener un marco legal y así Plasmar en licencias de uso de software, para así poder garantizar
que el software desarrollado por cualquier persona bajo los lineamientos de la idea GNU siguieran
conservando estos.
El producto entonces fue la creación de las licencias GPL, LGPL y AGPL. GPL siglas de General
Public Lisence o Licencia publica general en español.
Conflicto con Open Source

Save
Por un lado tenemos a nuestro auto proclamado profeta de software libre llamado Richard
Stallman el cual posee una distribución de software robusta que ha crecido con el tiempo pero que
no tiene un núcleo de sistema operativo para poder considerar un sistema completo, por otro lado a
principios de los 90s aparece el señor Linus Torvalds, ¿que hace el?. Invita a la comunidad de
desarrolladores a que le ayuden en la construcción de un núcleo de sistema operativo para
reemplazar Minix que era un sistema operativo usado para fines educativos pero que en ese
momento no era completamente libre
Entonces desde 1991 hasta 1994 logran el desarrollar del núcleo,y ya en la segunda mitad 1994 ya
logra algo decente al cual llamarle Linux Kernel 1.0.
En ese momento es donde se acuña por primera vez el termino GNU/Linux, La distribución GNU
con el Núcleo Linux.

Save
Aparece en escena otro Señor llamado Eric Raymond, Desarrollador de Software, Escritor y
conocido activista de uso de armas en estados unidos.
Eric no esta de acuerdo con el planteamiento rígido de Stallman sobre el desarrollo de software, y
defiende una posición menos radical, por que el considera que el desarrollador debe tener la
LIBERTAD de Mantener abierto o no su código.
Entonces ahí es donde el concepto de Opensource y Software libre se separan. Ya que todo el
software libre es Opensource, pero según Stallman No todo el software Opensource es Libre. Sin
embargo la idea de colaboración, retroalimentación, uso y mejora los une a la hora de brindar a la
comunidad soluciones de Software exitosas.

¿Que es un sistema operativo?


Los Sistemas Operativos constan de 2 partes principales. Un núcleo o kernel que permite el
funcionamiento básico del equipo de computo Como por ejemplo, la pantalla, los discos duros, el
sonido, la aceleración gráfica, el teclado, el mouse y demás componentes y una interfaz de usuario
que permite al mismo su interacción con el computador. Esta interfaz viene de 2 formas una
llamada CLI, o interfaz de comandos que nos permite acceder al computador de forma básica
indicando ordenes en una línea de texto. y la otra, la interfaz grafía de usuario o GUI, por la cual
podemos usar la computadora de una forma mas intuitiva, gráfica utilizando un dispositivo
apuntador como el mouse, o en caso de los dispositivos móviles nuestros dedos.
Bueno ahora podemos definir un poco de que consta el núcleo de Linux.

Save
El núcleo de Linux provee la comunicación y el manejo básico que se necesita para que la interfaz
de usuario y las aplicaciones interaccionen con el mismo.
Linux es considerado un sistema operativo Monolítico ya que la mayoría de sus componentes se
mantienen en un solo paquete a pesar de que la mayoría de los controladores no esenciales corren
como módulos.
Esto difiere del concepto de Micronúcleo, que mantiene una visión simplista de kernel que corre en
modo protegido, es decir que la capa de las aplicaciones NO puede tocar y el resto de
controladores, interface de usuario y aplicaciones corren en modo usuario es decir fuera del
circulo protegido donde corre el kernel. Pero esto es tema a tratar en otro vídeo.

¿A que se refiere la gente cuando habla de distribuciones de Linux?


Una distribución de software es una colección de aplicaciones que hacen parte de un sistema
operativo normalmente vienen acompañadas de un núcleo o kernel y en otros casos simplemente se
instalan sobre un sistema operativo ya existente.
El Primer caso puede aplicarse a una distribución basada en Linux, la otra es comparable a GNU en
sus inicios.
Las distribuciones de Linux entonces no son mas que la puesta en practica de la visión de “como
debe ser un sistema operativo” Según un concepto particular ya sea personal o empresarial.

Save
La empresa desarrolladora de la distribución simplemente toma el software ya desarrollado, lo
integra bajo herramientas normalmente desarrolladas por ellos mismos y las libera a la comunidad
de usuarios para su uso. Algunas son comerciales, otras orientadas al hacking, las otras mas
conocidas orientada al usuario de escritorio o al ambiente corporativo.
Entre las mas importantes tenemos a las pioneras de Slackware y Debian. Slackware tenia una
visión hacker del sistema mientras que Debian fue la distribución oficial FSF, luego se separaron
para funcionar como una organización independiente.
Luego tenemos A Redhat, Tal vez la distribución Linux mas conocida sobre todo en el ambiente
corporativo, ya que desde el principio se consolido como una empresa para ofrecer soluciones
integrales bajo esta plataforma. De igual manera SUSE nace en Alemania para cubrir el mercado
Europeo.
RedHat tiene un par de hijos. Uno reconocido llamado Fedora el cual es patrocinado por Redhat
mismo y uno Bastardo Llamado Centos que pretende llevar una compatibilidad con Redhat ES, es
el producto comercial de RedHat, Para ofrecer a la comunidad una distribución no comercial en
donde se puedan implementar soluciones homologadas solo para Redhat ES.
Debian también tiene sus hijitos, el mas afortunado es Ubuntu, que es la distribución mas sonada
en los últimos años. Esta distribución tiene varias ramificaciones, de las cuales destacamos a
Kubuntu, Xubuntu y Edubuntu las cuales solo varían en su misión, ya que Kubuntu mantiene un
escritorio basado en KDE, Xubuntu un escritorio liviano basado en XFCE y Edubuntu se orienta
al sector educativo. Pero aun así todas hacen uso de los repositorios principales de Ubuntu.
Y digo que Ubuntu es un hijo afortunado ya que su creador Mark Shuttleworth desarrollador de
Debian fue afortunado beneficiario del BUM de las .com, Convirtiéndose en multimillonario de la
noche a la mañana, y aprovecho su nueva fortuna en ir a la estación espacial siendo el segundo
turista espacial de la historia, Y crear una empresa para el desarrollo de una versión propia de
Debian para el beneficio de los usuarios de escritorio.
Pero Slackware no se queda atrás, KATEOS es una distribución basada en el, por otro lado hay
iniciativas con una visión diferente a las originales como Gentoo y Archlinux.
Archlinux por su parte conserva la estructura de Unix, por el otro lado Gentoo pretende distribuirse
en código fuente el cual se compila directamente para la maquina en la cual se corre.
¿Que loco No? Pero funciona y tiene una comunidad muy grande. de hecho una distribución de
software como ya lo han deducido no necesita de LINUX para poder correr.
En Debian usan Linux, por que les toca. Paralelamente ellos están desarrollando desde hace mucho
tiempo un núcleo Microkernel llamado Hurd, con el cual no han tenido mucho éxito ya que al
parecer la comunidad esta volcada en el desarrollo de Linux.
Además de esto han iniciado hace algunos años un proyecto llamado KfreeBSD, que no es mas que
los paquetes de Debian instalables sobre el sistema operativo FreeBSD que hace parte de los UNIX
Libres junto con NETBSD y OpenBSD
De hecho hasta Apple se ha beneficiado del software libre ya que su Núcleo, el de MAC OSX, fue
basado en la versión 4.2 de FreeBSD y el micro kernel match, se le llamo Darwin. La comunidad
de software libre trato de establecer un par de proyectos llamados Open Darwin y GNUDarwin que
pretendían utilizar el kernel Darwin para una distribución de un sistema operativo libre, pero
fallaron.
Incluso compañias comerciales que en temporadas han sido opositoras de los proyectos libres
como SCO han distribuido su sistema operativo Openserver acompañado con Distribuciones
opensource como es el caso de Skunkware y Aunque no lo crean hay distribución de GNU para
Windows, Se llama Cygwin, y provee las mismas herramientas GNU completamente funcionales
en el sistema operativo Windows.
No siendo suficiente en esta gran jungla de software libre y opensource. Existen Ramificaciones
que no son considerados distribuciones.
El núcleo Linux y parte de sus herramientas de sistema operativo son la base para el sistema
operativo Android, cuyas variaciones dan nacimiento a sabores o distribuciones del mismo, siendo
Cyanogenmod la más conocida.
Entonces vemos que Google toma el núcleo de Linux y de sus herramientas básicas y las coloca
como cimientos para desarrollar una interfaz un escritorio para dispositivos móviles, y libera un kit
de desarrollo para el mismo. Creando así su sistema operativo llamado Android.
Como Android hace parte de este gran ecosistema, se comporta de la misma forma y se crean
Distribuciones del mismo o sabores como se conoce en la comunidad de donde surge que proveen
a Android de funcionalidades que Google o los fabricantes de dispositivos móviles no incluyen en
sus dispositivos de forma predeterminada. Y esto les acarrea mucho éxito en la comunidad de
desarrollo para dispositivos móviles.
Siendo el Android significativamente simple en su estructura la proliferación de ROMs
personalizadas es extraordinariamente alta. Además actualmente los sistemas basados en Linux
son muy usados para el firmware de numerosos fabricantes de hardware como la BIOS de
servidores, Swiches, Routers, Dispositivos de comunicación y hasta consolas de video juegos
como el caso de ouya.
Finalizando, El uso de Linux y de Software Libre u OpenSource se ha masificado tanto que hoy por
hoy tiene una gran cuota del mercado, teniendo en cuenta que no solo estamos hablando de
escritorio y servidores, estamos hablando de todos los dispositivos de comunicaciones y embebidos
que hay en el mercado que usan el Kernel de Linux.
Núcleo, Shell, estructura de directorios y
permisos 2/60
Compartir14
Twittear
Compartir
+1
Compartir 14
Esta segunda entrega del curso de Linux en Español esta desarrollada para que puedas conocer y
familiarizarte con el sistema operativo Linux, de esta forma Linux ya no será un desconocido para
ti, al contrario al conocer todas sus partes lograrás el dominio sobre este gran sistema, si aun no le
has dado lectura al tema anterior puedes ir a Curso online gratis, si ya lo has hecho acompáñanos en
esta gran aventura.

Para que puedas conocer a fondo el sistema Linux lo dividiré en sus partes básicas y explicaré que
función cumple cada una de ellas, estas son las siguientes:

 Núcleo de Linux.
 Shell de Linux.
 Directorios, estructuras de directorios.
 Sistemas de archivos.

Núcleo de Linux
Linux es un núcleo de sistema operativo cuyo desarrollo comenzó en 1991 en manos de Linux
Torvalds, tres años después y gracias a la ayuda de una gran comunidad de desarrolladores, se libero
la versión 1 del código fuente. Esta versión 1 se libero bajo la licencia GPL de free software
foundation la cual es la cuna del proyecto GNU, que es una distribución de software libre.
¿Que se puede hacer con la licencia GPL?
Se puede usar el software como quieras, además lo puedes adaptar a tus propias necesidades,
además de eso lo puedes copiar sin restricción y lo puedes redistribuir, y cuando lo mejores
puedes o compartir estos cambios con comunidad.
Después de 1995 lo único que ha hecho Linux en estos 20 años a sido ir para arriba. Ahora es uno
de los sistemas operativos preferidos para ambientes de red e Internet. Pero entonces tu dirás “pero
si la mayor base instalada es Windows”. Tienes razón… pero no caes en cuenta que probablemente
en tus bolsillos tengas un teléfono corriendo Linux, y que probablemente donde tengas tu blog o tu
página web este corriendo en un servidor Linux, y que tu router puede tener Linux y no te lo pierdas
hasta la BIOS de tu ordenador, si, puede que corra un Linux. “loco no….?” Pero por eso hay que
replantear eso de la mayor base instalada.
Kernel monolítico
Como ya hemos visto el kernel de Linux es un sistema monolítico es decir que todos sus
componentes están en un solo paquete y este establece procedimiento de llamadas hacia el resto de
los procesos del sistema corriendo en un área restringida el cual estos no pueden acceder
directamente.
MicroKernel
El microkernel trabaja igual pero tiene sus diferencias. El microkernel minimiza la labor del kernel
y crea un sistema básico de llamadas de entrada y salida, de manejo de memoria y hace que todos
los demás componentes corran como procesos del sistema. La discusión entre cual de los dos es
mejor pues….. eso lo veremos en otro vídeo porque ahora lo que queremos es entender cuales son
las partes del núcleo de Linux.

¿Como se divide la arquitectura del núcleo de Linux?


El núcleo o Kernel de Linux lo dividiremos en las siguientes partes:

Save
Gestíon de Procesos
La gestión de procesos esta centrada en la ejecución de los procesos, en el kernel de linux son
llamados hilos y representan la visualización individual de cada procesador. Se suele utilizar el
termino proceso aunque la implementación en linux no tiene concepto de hilos y procesos por
separado. El núcleo provee un API a través de la SCI, con la que puede crear nuevos procesos con
fork y con exec, matar o salir del procesos como en el caso de kill o exit. La gestión de procesos
es necesaria para poder compartir hilos en la CPU, en el kernel el planificar opera en un tiempo
constante sin tener en cuenta el numero de procesos que compiten por la CPU por eso decimos que
opera bajo demanda, este se llama planificador 01, esto denota que el lleva la misma cantidad de
tiempo para la planificación de un solo hilo o de varios , en el planificador 01 también se soporta el
multiproceso. Ósea es simétrico y multiproceso.
La memoria
Otro importante recurso que es controlado por el kernel es la memoria, debido a la eficiencia como
el hardware que maneja La Memoria Virtual esta es gestionada en paginas de 4 Kb en la mayoría
de las arquitecturas, Linux incluye definiciones para manejar la memoria disponible y los
mecanismos para hacer el mapeo en el hardware de la memoria física y en la memoria virtual. Pero
la gestión de la memoria es mucho más que búfer de 4Kb, Linux contiene abstracción de búfer
que permiten ir mas haya, este esquema maneja memoria de búfer de 4Kb, como base pero además
reserva estructura dentro de ellos y lleva la cuenta de las paginas que están completas, parcialmente
usadas o totalmente vacías para que el esquema pueda crecer o disminuir como se necesite en el
momento.
Cuando hay varios usuarios haciendo uso de la memoria existen ocasiones en las cuales esta se
agota entonces por esta razón las paginas pueden ser escritas en el disco duro temporalmente y
luego vueltas a cargar en la memoria esto se llama SWAP o intercambio, ya que las paginas se
mueven de un lado para otro cuando se necesite.
Sistema Virtual de Archivos o VFS
VFS es una capa de abstracción muy interesante que tiene el kernel y provee un interface para el
uso común de sistemas de archivos sin importar cual sea. Se llama capa de atracción porque no
importa cual sea la implementación de file system (Sistema de archivo) que estemos utilizando el
tiene las funciones básicas para poder acceder a cualquier sistema de archivos. Entonces el VFS
proporciona una capa de intercambio entre las SCI y los sistemas de archivos soportados por el
kernel.
En la parte mas alta del Virtual File System se encuentra un API común con las funciones tales
como read , write, open, close y en la parte mas baja están las abstracciones del sistema para
poder definir las atracciones mas altas, estas son añadidas a cada uno de los soportes de cada
sistema de archivos en el kernel son más de 50, bajo la capa del sistema de archivos esta el cache
del bufer que proporciona un conjunto de funciones a la capa de archivos independientemente del
sistema de archivos que se este manejando, esa capa optimiza el acceso a los dispositivos físicos
manteniendo brevemente la información arriesgándose a que esta tenga una lectura anticipada de
los datos para poderla mantener cuando haga falta. Es por eso que en la práctica cuando nosotros
leemos un sistema de archivos la primera vez es más lento y cuando volvemos a leerlo es más
rápido.
Por debajo del cache del búfer ya están los controladores directamente, los dispositivos de
hardware que hacen interface con el sistema de archivos.
La pila de Red
La pila red o diseño sigue una arquitectura por capas modelada tras los protocolos en si,
recordemos que el IP que no es solamente una dirección o un numero sino que es el protocolo
principal de internet y a su vez el protocolo central bajo el que se sitúan el protocolo de
transporte TCP/IP y sobre el protocolo de transporte TCP/IP esta la capa de socket que a su vez
llama a las SCI. La capa de socket es un API estándar para el subsistema del trabajo en red y
proporciona una interface a varios protocolos. Desde el acceso a las frames crudas hasta las
unidades de datos de IP llamadas PDU lo que nosotros vulgarmente conocemos como paquetes, el
protocolo TCP/IP y el protocolo de datagrama de usuario UDP. La capa de socket provee de esta
manera una forma estandarizada para poder manejar conexiones y mover datos de un lugar a otro.
Drivers de dispositivos
Lo siguiente en la lista son los controladores, la gran mayoría del código fuente de Linux son
controladores de dispositivos, ¿Porque? Bueno es natural, los controladores son los que nos permite
reconocer el hardware que nosotros queremos hacer funcionar con el sistema operativo basado en
Linux. El árbol de código fuente de Linux nos proporciona un subdirectorio llamado Drivers el cual
esta dividido en los diferentes dispositivos que queremos reconocer, en este código fuente vamos a
encontrar directorios como Serial, Ethernet y todos los dispositivos para los que se ha
desarrollado soporte en Linux.
Arquitectura
Por ultimo esta el código dependiente de la arquitectura, aunque Linux es independiente de la
arquitectura hay varios elementos que hay que tener en cuenta con las operaciones habituales de
eficiencia del sistema operativo, tenemos que Linux también en su árbol de desarrollo tiene un
apartado para lo que necesita específicamente cada una de las arquitecturas entonces tenemos
386, Spark, ARM, MIPS, cualquiera otra que sea soportada por el núcleo de Linux.
Hay otras características básicas del sistema operativo que vale mencionar aparte de la estructura
que estamos estudiando en este momento.
Linux por ser un sistema operativo de producción y también de código abierto es un excelente
laboratorio para nuevas tecnologías en protocolos de red, por ejemplo las redes de alta velocidad
que superan al Eternet de 1/10Gb y también por ejemplo el TCP/IP, que nos permiten características
avanzadas de TCP/IP remplazándolo como capa de transporte.
Linux también es un kernel dinámico a pesar que es monolítico también es modular y permite
que los controladores que no son esenciales para el funcionamiento sean cargados como módulos y
se permite la carga y la descarga de los mismos sin tener que afectar el funcionamiento o la
estabilidad de la plataforma.
También esta la parte de la virtualización, Linux desde hace unos años lleva soportando la
virtualización por medio de KVM Kernel-Based Virtual Machine, y esta modificación al kernel
permitió que se pudieran correr instancias por ejemplo del sistema operativo Windows y del
sistema operativo Linux al mismo tiempo, la única restricción es que la plataforma de hardware que
se este utilizando tenga la opción de virtualización.
Con eso damos fin a la explicación de los que es el núcleo de Linux a grandes rasgos, Si
quisiéramos profundizar que es el núcleo de Linux pues nunca terminamos.

La Shell

Save
La Shell es la interface de usuario tradicional en los sistemas operativos tipo Unix de allí que Linux
también cuenta con esta misma interface. La Shell cuyo nombre inglés significa Caparazón es la
interface con la que han contado los ordenadores desde antaño cuando se utilizaba únicamente una
interface donde se hacia uso únicamente de un teclado y una pantalla en un entorno ambiente de
linea de comando para poder acceder a este.
La Shell provee una interface para poder enviar y recibir el resultado de comandos o de
aplicaciones que muestran su resultado en la pantalla en forma de texto, además también provee
un lenguaje de programación básico para que los usuarios puedan utilizarlo, automatizar tareas y
procedimientos dentro del sistema y así poder facilitar su uso y administración, a esto se le llama
Shell Scripting.

Estructura de Directorios
El siguiente punto es la estructura de directorios o jerarquía, al igual que todos los otros sistemas
operativos Linux tiene una jerarquía de archivos para poder organizar la estructura y tiene la
siguiente organización Teniendo en cuenta que el / o barra diagonal que nosotros conocemos es la
base o raíz de toda la estructura entonces la vamos a llamar root ( raíz en ingles), entonces de ahí se
derivan los siguientes directorios:
Save
/bin es el que contiene los binarios indispensables para que el sistema operativo funcione en su
parte mínima como ls, rm, mkdir, ps
/boot que contiene los archivos estáticos de arranque de Linux como el kernel y el initrd
/dev contiene los archivos que representan los dispositivos tanto virtuales como de hardware que
hay en el sistema
/etc que es el directorio que contiene los archivos de configuración de en formato de texto
/home el directorio que contiene los directorios donde están los usuarios ósea donde los usuarios
tienen sus datos por ejemplo /home/efox
/lib que es las librerías esenciales también del sistema operativo y los módulos del kernel también
residen allí
/media es la raíz del punto de montaje de los dispositivos de bloque o removibles
/mnt es el punto de montaje de bloque temporal, que fue heredado de Unix es como media pero
pues ya no se utiliza tanto porque venía de Unix tradicional
/opt que es donde reside el software de aplicación agregado o de terceros como ORACLE o como
cualquier otro fabricante
/sbin que provee los binarios del sistema que no son esenciales para hacer que el sistema operativo
funcione pero que son necesarios para llevar a cabo funciones ya mas complejas, como por
ejemplo la configuración de la red, del filtrado ip, la programación de tareas y toda las demás cosa
que hacen mas completo el del sistema operativo.
/tmp que es donde residen los archivos temporales ya sean los que nosotros generamos o los que
general las aplicaciones y procesos que manejan el sistema
/usr donde están los binarios y las aplicaciones, este es el directorio que suele tener la cantidad de
espacio ocupado mas grande dentro del file system y provee una jerarquía también secundaria
donde hay un /bin, /etc, /lib, /sbin.
/var o archivos de tamaño variable como la cola de correo, las colas de impresión, las datas de los
motores de bases de datos
/root es por así decirlo el home para el root porque antiguamente en el unix el home del root estaba
sobre la misma raíz y esto generaba problemas de seguridad y organización
/proc que es un sistema de archivo virtual donde esta el estado del sistema, las condiciones y esto se
indica en archivos de texto

Permisos
Ahora esta el asunto de los permisos, me imagino que alguna vez has oído algo como “no, no
tengo los privilegios en el sistema o no es que mi usuario no es privilegiado”, se trata de esto
mismo.
En Linux aunque no lo creas solo hay 2 tipos de usuarios esto debido a la forma en la que trabaja el
núcleo, existe un usuario 0 que es llamado root, dios, admin, odin, thor o como lo quieras llamar y
todos los demás usuarios.
¿Bueno como es esto?
Realmente lo que importa son los permisos del file system, y esto no es de extrañar porque ahí es
que residen los datos que nosotros queremos restringir
¿Entonces como es esto de los privilegios?
La cosa va así, existen 3 roles distintos con 3 tipos de permisos cada uno, eso suena como tic tac
toe, triqui como nosotros lo llamamos y pues no es enredado pero el jueguito de triqui nos puede
ayudar a resolver un poquito como es esto de los permisos.
Entonces tenemos que en eje x esta el usuario propietario representado por la u propietario del
archivo, esta el grupo representado por la g que pertenece el usuario y todos los demás
representados por la letra o. En el eje y tenemos la r para lectura en ingles que es read, la w para
write que es escribir en ingles y la x para execute en ingles quiere decir ejecutar ahora los
permisos se otorgan por medio de numeros, el permiso para ejecutar es 1, el permiso para escribir
es 2 y el permiso para leer es 4, estos se suman para obtener el permiso que necesito para
determinado archivo.
Save
En este caso colocaremos 4+2+1 da 7 ósea todos los permisos, 4+0+1 osea el permiso de lectura y
ejecución y el siguiente le vamos a colocar 0+0+0 que no nos da ningún permiso , entonces
tenemos que el usuario propietario tienen todos los permisos , el grupo donde se encuentra el
usuario propietario tiene permisos de lectura y ejecución y y los demás usuarios en el sistema no
tiene permiso de hacer nada con el archivo al que le acabamos de colocar este permisos. Entonces
estos son los permisos de archivos y pues aquí hicimos la línea del tic tac toe.
Les voy a mostrar algunos ejemplos de permisos, teniendo en cuenta vamos a hacer unos
ejemplos de los permisos en Linux. Tenemos unos archivos de ejemplo vamos a ver la aplicación
de los bits de los permisos , tenemos que el primer tercio es el usuario, el segundo tercio es el
grupo y el tercer tercio es los otros, entonces vamos a hacer algunos ejemplos vamos a ser el
ejemplo que tenemos en el video
Chmod 750 ejemplo 1
Allí vemos que quedo con permisos de lectura, escritura y ejecución para el usuario, lectura y
ejecución para el grupo y ninguno para los todos los otros, ahora vamos a dar lectura y escritura a
todos, recordemos lectura es 4, escritura es 2 entonces lectura y escritura vendrían a ser 6, para
otorgarle ese permiso a todos los usuarios vendría a ser 666. Ahí esta lectura y escritura tanto para
propietario, grupo y todos los demás, ahora solo queremos lectura para todos entonces seria 444
ahí esta lectura para el propietario, el grupo y todos los otros, por ejemplo queremos nada mas
lectura y ejecución para el propietario y el grupo para todos los otros ninguno entonces seria que
lectura y ejecución seria 4+1 seria 5
Chmod 555 ejemplo 4
Entonces tenemos lectura y ejecución para el propietario y el grupo todos los otros no tienen
ningún permiso y queremos colocarle todos los permisos al archivo seria 4 del permiso de
lectura, 2 del permisos de escritura y 1 del permiso de ejecución seria 7, con esto nos damos
cuenta como se asigna los permisos de Linux. No olviden que esto se va a ampliar para los
comando específicos mas adelante solamente es para mostrar lo explicado anteriormente.
SGUI/ SUID y Sticky bit
También me parece importante explicarles o siguiente, existen 2 permisos excepcionales esta el de
SGUI/ SUID y esta STICKY BIT aquí es donde la cosa se pone buena.
Resulta que en Linux y en general a Unix hay un permiso de ejecución que se le puede agregar a
una aplicación, la cual hace que se ejecute como el usuario dueño y esto también incluye al
usuario root. Esto se llama SUID y se representa en el ejecutable con una S, en el caso del grupo
es lo mismo en el SGUI aparece también como una s en la parte de permiso de ejecución, por otro
lado esta el STICKY BIT que es una medida de seguridad ya que solo el usuario propietario de ese
archivo puede modificarlo o eliminarlo, un ejemplo de esto es cuando colocamos archivos en el
/tmp.
El ejemplo consiste en lo siguiente, vamos a buscar una aplicación, un conejillo de indias que nos
sirva para nuestro propósito, se me ocurre que top por lo es interactiva nos puede servir , entonces
copiamos la aplicación para no modificar la del sistema a la carpeta donde estamos trabajando,
ahora vamos a asignarle el permiso de suid a esa aplicación, se la aplicamos solamente al
propietario ósea los permisos de U ósea de usuario y ahí ya vemos que nuestra aplicación a
quedado con el bit s que nos dice que es suid, ahora vamos al otro usuario el usuario fox, que esta
trabajando en la misma carpeta vemos la aplicación top y la ejecutamos para comprobar que esta
aplicación esta corriendo como pedro hacemos ps xau que nos va a mostrar todos los procesos de
forma extendida junto con el usuario que los corre y vamos a filtrarlo por como se llama el
proceso, se llama top.
Ahí ya podemos apreciar que aunque es fox el que inicio el proceso top, este esta corriendo a
nombre de pedro gracias a el bit de suid que lo permite.
Bueno el ejemplo de sticky bit va así:
Creamos una carpeta por ejemplo sticky , le agregamos todos los permisos ahí ya comprobamos
luego le agregamos el bit de sticky bit en el rol de otros con la t y ahí ya nos queda el directorio
con el sticky bit. En tramos, creamos un archivo le concedemos todos los permisos , nos
cercioramos de los permisos del archivo y que la carpeta efectivamente tenga el sticky bit.
Cambiamos de usuario, este es el usuario fox, entramos en la carpeta sticky, observamos que hay
un archivo del usuario pedro llamado hola, como tiene todos los permisos procedemos a borrarlo.
Pues no lo permite porque la carpeta que lo contiene que ese sticky tiene el sticky bit.
Al terminar esta segunda lección ya estarás familiarizado con el ambiente Linux y en la tercera
entrega de este curso, comenzaras a utilizar este magnifico sistema operativo atravez de los
comandos de Linux, así que no te lo pierdas.
¡No olvides que compartir es gratis!
Curso de Linux en español 3/60 – Comandos
Básicos y Salida Estandar
Compartir9
Twittear
Compartir
+1
Compartir 9
Esta es la tercera entrega del curso de Linux, en esta entrega vamos a tratar los siguientes temas:
1. Interface de shell.
2. Comandos básicos para manejar la interface de Shell.
3. La entrada estándar.
4. La salida estándar.
5. El error estándar.
6. CLI Command Line Interfase (Interface de Línea de Comandos)

Interface de shell
Ahora vamos a entrar en materia, primero vamos a ver cómo entramos a la interface básica de
usuario “la CLI“ (interface de comandos). Ahí vamos a ver los comandos básicos para poder
desenvolvernos, luego vamos a ver cómo se interactúa con la entrada y salida del flujo de datos de
shell , comencemos.
Primero que tenemos que hacer es ingresar en nuestro sistema.
Eso lo hacemos por medio de la consola de ingreso en el sistema operativo en este caso vamos a
utilizar el sistema operativo Linux Ubuntu nos da una pantalla que se llama login esta es la consola
por la que nosotros podemos ingresar al sistema operativo de forma remota por SSH o por telnet.
Este login nos muestra la versión del sistema operativo que estamos corriendo, en qué terminal la
estamos corriendo y luego nos muestra el nombre de la máquina, (login: ) a eso le vamos a llamar
prompt de login, porque es donde nosotros vamos a escribir nuestro usuario y contraseña para
poder ingresar. También vemos una raya titilante a la que vamos a llamar cursor.
Una vez ingresamos nos vamos a la información como la última vez que ingresamos, la versión del
sistema operativo y algunos paquetes que tenemos que actualizar (eso es diferente en las diferentes
distribuciones de Linux), este caso estamos utilizando Ubuntu.

Comandos básicos para manejar la interface de Shell


¿Que usuario estamos utilizando?
Lo primero que tenemos que hacer es saber quiénes somos, cuál es nuestro usuario, esto lo hacemos
con un comando llamado whoami entonces vemos que el usuario de este ejemplo es: fox

¿Donde Estamos?
Acto seguido queremos ver dónde estamos parados en el sistema, es decir en el sistema de archivos
del sistema operativo donde estamos ubicados eso lo podemos saber con el comando pwd, aquí
vemos que estamos parados en /home/fox dentro del sistema de archivos de nuestro sistema
operativo Linux.

¿Que versión de Linux estamos usando?


Una vez sabemos dónde estamos parados queremos saber qué sistema operativo estamos corriendo,
para eso existe un comando llamado uname. el comando uname nos va a mostrar el sistema
operativo que corremos en este caso el sistema operativo es Linux.
Adicional a esto tenemos el parámetro -a, el parámetro -a nos permite ver el sistema operativo en el
que estamos corriendo con toda la información de el incluyendo, el host donde está corriendo, la
fecha de compilación y la plataforma de arquitectura de hardware para la cual fue compilado en este
caso es a AMD 64 por qué es un procesador de 64 bits.
Este comando es estándar de Unix como los otros comandos que veremos sirven tanto en Linux
como en otras versiones de Unix, entonces nos provee una ventaja porque al aprender el manejo
básico del sistema operativo basado en Linux también estamos aprendiendo otros sistemas
operativos y su manejo básico.
Aquí tenemos por ejemplo el sistema operativo HURD qué es el sistema operativo de GNU en el
cual trabaja Debian esta es la versión 3.0.

Este por ejemplo es MINIX qué es el sistema operativo que inspiró a Linux Torvalds a desarrollar
el sistema operativo Linux.
Aquí tenemos OpenBSD que es un UNIX BSD libre, aquí tenemos un compañero de él que es
NetBSD es otro y UNIX BSD libre y tenemos el tercer hermano de esta familia que es FreeBSD
que también es un UNIX libre.

Acá tenemos al sistema operativo INDIANA que es un sistema operativo basado en el antiguo
Solaris 11 que su kernel es la versión 5.11.

Por último tenemos el sistema operativo MacOS X en su versión LION que corre como vemos el
kernel Darwin. Este kernel como ya habíamos visto en la primera entrega de este curso, es el kernel
del sistema operativo de Apple esta es su versión 11.4.2.

Bueno volviendo a nuestro Linux ya sabemos, quiénes somos, en dónde estamos y en qué sistema
operativo estamos corriendo, pero ahora queremos saber lo siguiente:

¿Cuánto espacio hay en el disco duro?


Esto lo haremos con el comando df el comando, df, nos muestra cuánto espacio en total tiene la
partición, cuánto espacio ocupado y cuánto espacio libre posee, además de eso nos muestra el
porcentaje de ocupación y donde está montado. Entonces con ese comando podemos darnos cuenta
cuál es el estado de nuestro dispositivo de almacenamiento montado.
El comando df tiene un parámetro menos llamado -h, el parámetro – h es muy importante porque es
utilizado en otros comandos de la implementación GNU porque no se muestra el tamaño de la
información en Byte, Kilobytes, Megabytes, Gigabytes y Terabyte.
Otro comando muy útil para saber los recursos de nuestra máquina es free nos permite saber cuánta
memoria tenemos, entonces en la primera columna nos va a mostrar el total de la memoria, la
memoria usada, la memoria libre, la memoria que se encuentra en buffer y en caché. También nos
muestra memoria de intercambio su total, la memoria usada y la memoria libre, de la memoria de
intercambio ya hablamos un poco en el capítulo 2 de este curso. Aquí también funciona el
parámetro -h nos muestra en Byte, Kilobytes, Megabytes, Gigabytes y Terabyte.
El parámetro es -h por qué significa human-readable format, es decir formato legible al humano.
Entonces podemos ver que con el parámetro -h nos muestra la información en un formato más
entendible.
Comandos Echo y Cat
Otro comando importante es el comando echo. el comando echo nos regresa a la salida estándar de
la shell lo que nosotros le pasemos como parámetro, es algo que te puede parecer algo tonto pero
echo es uno de los comandos más usado dentro del scripting cuando nosotros hacemos programas
para automatizar cosas dentro de nuestro sistema operativo.
También tenemos el comando cat qué significa concatenar este comando nos va a mostrar de una
forma cruda la salida estándar de un archivo hacia la shell el cual nosotros especifiquemos como
parámetro.
Bueno con esto tenemos lo mínimo para poder interactuar con nuestro sistema operativo, ahora
vamos a ver algo muy importante el flujo de datos de la entrada estándar, la salida estándar y el
error estándar.

Entrada, Salida y Error Estándar


Comprender el flujo de datos del shell es muy importante porque con esto podemos comprender
cómo la información entra a la shell y sale de la Shell esto nos permite redirigir esa información
para nuestro beneficio.
Tenemos como ejemplo el comando uname que de ahora y hasta que termine este tema vamos a
utilizarlo como ejemplo, entonces una vez nosotros digitamos nuestro comando y damos enter, le
estamos diciendo a la Shell que ejecute ese comando ese comando debe decirnos cuál es el sistema
operativo que estamos corriendo en este caso es Linux.
¿Cómo podemos re-direccionar esa salida que nos está mostrando en la shell en la pantalla?
Bueno es muy sencillo lo hacemos con el símbolo > entonces colocamos: uname > y el archivo al
que lo queremos enviar, en este caso es so.txt. Vemos con cat cuál es el contenido de so.txt y
efectivamente nos muestra que redirigió la salida.

Esto es lo mismo hacerlo con 1> y el archivo, porque resulta que en la shell el flujo de datos está
determinado por tres valores la entrada estándar que es 0, la salida estándar que es 1 y el error
estándar que es 2 en este caso sería la salida estándar que se representa por el 1 entonces por eso nos
da lo mismo colocar 1> y el archivo.
Pero resulta que cada vez que lo hagamos vamos a reemplazar el contenido del archivo, que hay si
nosotros queremos acumular la información qué sacamos de la salida estándar, eso es muy fácil
podemos colocar 1>> y vemos cómo va acumular línea a línea cada una de las salidas de los
comandos que nosotros le hayamos indicado, si damos el parámetro -a entonces vemos que nos
acumuló los que hizo con uname y luego los que hizo con uname -a.

Save
La entrada estándar también puede ser redirigida por ejemplo al comando cat le podemos indicar
que su entrada estándar es el resultado del archivo so.txt, entonces en ese caso nos muestra el
contenido del archivo hacia la salida estándar.
El error estándar se comportan muy parecido cómo se comporta la salida estándar, nosotros le
podemos pasar un parámetro por ejemplo: uname -y que no existe, entonces esto nos va a generar
un error contrario. tenemos el parámetro -a que sí existe qué es el que nos muestra todos los datos
del sistema operativo, entonces en este caso podemos redirigir uname -y pero no con el 1 sino con
el 2 porque esta salida que nos generó el error no es salida estándar, no es presentada por el 1 es
presentada por el 2 y esto se verá reflejado en el archivo qué queremos indicarlo por ejemplo el
archivo error.
Entonces vemos que si hacemos cat al archivo error nos va a mostrar el archivo que error que
acabamos de generar, de la misma forma también podemos acumular línea a línea estos mensajes de
error para que no los muestre log.

¿Como combinar la salida estándar y el error estándar en un solo archivo?


Bueno es muy fácil, colocamos uname -a > log 2>&1 esto nos va a redirigir la salida de uname ya
sea de error o salida estándar hacia el archivo log. Si nosotros queremos acumular línea a línea
tanto la salida estándar como el error estándar pues hacemos lo mismo que los pasos anteriores
simplemente colocamos >> quedando así uname -a >> log 2>&1 y éste nos va a ir acumulando
tanto el error estándar como la salida estándar dentro del archivo indicado que en este caso es
log.
La importancia a la que me refiero a la salida estándar no es solamente porque podemos dirigir lo
que sale en pantalla hacia archivos, también lo podemos dirigir hacia dispositivos y desde
dispositivos por ejemplo si yo quiero imprimir la salida de comando y uname -a hacia una
impresora pues lo hago diciéndole cuál es el dispositivo de la impresora en la mayoría de los casos
seria /dev/lp0.
También podemos redirigir la salida de la terminal hacia una terminal por ejemplo vamos a
redirigirla hacia la misma terminal que estamos usando entonces utilizamos nuestro comando
uname -a y lo redirigimos hacia la terminal que estamos corriendo en este caso pts/9 cuya ruta es
/dev/pts/9 entonces vemos que la redirección del comando es efectiva hacia nuestra terminal,
porque la redirigimos la salida estándar hacia esta terminal.
También la podemos redirigir hacia otro terminal por ejemplo hacia la consola allí la consola está
corriendo en tty 1 entonces podemos redirigir uname –a y cambiar la terminal por /dev/tty1
entonces vemos que efectivamente nuestro comando uname -a su salida estándar fue redirigida no
hacia la terminal que estamos utilizando sino hacia la terminal de la consola del sistema operativo.
Podemos redirigir desde un dispositivo hacia un archivo es el caso por ejemplo de /dev/zero qué es
un generador de caracteres de Null.
Este se utiliza normalmente para limpiar dispositivos de bloque o para generar archivos que van a
ser utilizados como imágenes de dispositivo de bloque, entonces podemos generar esos Null y
redirigir hacia un archivo y hasta que le demos control c no va a parar de mandar esta salida hacia
el archivo que nosotros queremos llenar de caracteres de Null .
En shell script es muy utilizado enviar la salida estándar y el error estándar hacia un lugar donde no
moleste, ósea donde no cree un archivo y lo llene de datos, este es el caso de /dev/null entonces
todo lo que nosotros enviamos ahi simplemente va desaparecer.
Como en el ejemplo.
Tuberia (Pipe)
Además de esto tenemos 2 herramientas adicionales para controlar el flujo de datos de la salida
estándar, primero tenemos el pipe o tubería está representado por el carácter que es una raya (|) en
inglés se llama pipe y éste nos permite tomar la salida estándar de un comando y colocarla como
parámetro de entrada a otro comando. Volvemos al ejemplo nuestro comando uname -a y se lo
pasamos como parámetro cat.
¿Cómo se lo estamos pasando?
Bueno la salida estándar del comando uname -a la estamos pasando a través del | al comando cat y
por eso no le está mostrando en la salida estándar además de esto tenemos la utilidad xargs esta
utilidad nos permite pasarle la salida estándar de un comando como parámetro de otro comando
entonces vamos a hacer lo siguiente.
Vamos a redirigir la cadena “-a” hacia un archivo llamado param, nos aseguramos de que param
contiene –a, luego damos cat param | xargs uname.
¿Qué quiere decir esto?
Esto significa que el comando cat va a leer el contenido del archivo param cuyo contenido es -a y lo
va a pasar por medio de | a uname
¿Cómo sucede esto?
Bueno cat lee el archivo param luego se lo pasa por medio del | a xargs, axrgs le dice a uname que
lo que viene por medio del | es su parámetro, por eso se ejecuta como uname -a mostrándonos a la
salida estándar lo que debería salir si solo se corriera con uname.
Bueno con esto llegamos al final de la tercera entrega de nuestro curso de Linux en el cual hemos
aprendido de forma muy básica la interface de comando el de nuestra shell del sistema y hemos
entendido el flujo de datos de la salida estándar la entrada estándar y el error estándar.
Curso de Linux 4/60 – Gestión de Procesos y
Archivos
Compartir3
Twittear
Compartir
+1
Compartir 3
Esta es la cuarta entrega del curso de Linux donde cada Lunes desarrollamos un nuevo capitulo de
este gran curso on line de Linux y en esta ocasión trataremos la gestión de procesos y la gestión de
archivos.

Comados a utilizar en la terminal de Linux


Para poder realizar la Gestion de procesos y archivos debemos hacer uso de los siguientes
comandos.

 ps
 ls
 cp
 mv
 mkdir
 Entre otros.
Como ya vimos el primer paso que tenemos que dar es ingresar en Linux y luego a una terminal,
(consola de mando CLI o Shell) una vez dentro del terminal podrás trabajar e ingresar comandos
como date qué es para ver la fecha y la hora actual.
cal qué es para ver el calendario con el día actual.

Y el comando uptime donde podemos ver la carga actual de sistema, cuánto lleva nuestro sistema
arriba y cuántos usuarios han ingresado en el sistema.

De ahora en adelante y hasta que termine el curso sólo vamos a ver los parametros básicos y más
frecuentes de cada uno de los comandos y servicios que veamos, porque si profundizamos en cada
uno de estos no terminamos nunca.
Más bien pueden realizar sus preguntas o sugerir los temas en los cuales desean que profundicemos.
De todos modos Linux y Unix cuentan con algo que se llama man page (páginas de manual) en las
cuales se profundiza más en los parámetros adicionales que tienen los comandos, éste man es muy
fácil de utilizar simplemente se teclea man espacio el nombre del comando y te muestra una
página del manual en la cual te explica más a fondo cuáles son los parámetros adicionales qué tiene
un comando específico.

Gestión de procesos
Ahora ya necesitamos comenzar a tener control de nuestro sistema, por lo menos a nivel del
usuario, lo primero que debemos aprender es que procesos están corriendo en nuestro sistema.
¿Porque?
Bueno, porque los procesos son la razón de sistema computacional, del computador u ordenador
como queramos llamarlo.
El procesador de palabras es un proceso, la hoja de cálculo es un proceso, el navegador de Internet
es un proceso y también cuando nosotros administramos un servidor, cualquier servicio que
prestemos nosotros eso es un proceso dentro de la máquina, entonces por eso necesitamos saber y
manejar qué son los procesos.
En la clase número 2 del curso estuvimos viendo qué son los procesos y como los manejan el
núcleo de Linux.

Comando PS
Ahora comencemos por poner este conocimiento en práctica el primer comando con el que vamos a
trabajar es ps este comando lo define la página del manual man page como una captura o snapshot
del estado de los procesos en el momento en el que se ejecutó el comando, en pocas palabras nos
muestran los procesos qué estaban corriendo un momento atrás.
En su forma básica ps nos muestra los procesos que estamos corriendo en el momento dado.

En este caso estamos corriendo en la terminal bash y el comando ps para abrir un poco nuestros
ojos pues podemos utilizar un parámetro qué es el parámetro x el parámetro x nos va a mostrar los
procesos que no están corriendo en una terminal específica ósea que están corriendo en background
que no están corriendo en primer plano sino que están corriendo atrás, entonces cuando ejecutamos
ps con el parámetro x nos va a mostrar nuestros procesos más los procesos de la máquina que están
corriendo en background .
Pero esto no es todo, si agregamos el parámetro a nos muestra los procesos de los usuarios tenemos
un panorama mucho más grande de lo que corre en nuestra máquina sin embargo de qué nos sirve
esto si no sabemos quién corre estos procesos bueno si le agregamos a ps xa el parámetro u nos
mostrará ahora el usuario que está corriendo cada uno de los procesos.

¿Bueno y ahora qué?


Tenemos qué comprender el caudal de la información que se nos está presentando, la información
que nos está presentando en once columnas son:
1. USER qué es el usuario que está corriendo el proceso.
2. PID que es la identificación del proceso o process id, este es el identificador único en el
sistema.
3. Porcentaje CPU qué es el porcentaje de CPU que está consumiendo el proceso es decir
porcentaje del procesador que está consumiendo un proceso.
4. Porcentaje MEM qué es el porcentaje de memoria que está consumiendo este proceso.
5. VSZ qué significa virtual memory Site es la cantidad de memoria virtual incluyendo la
paginación que un proceso está consumiendo.
6. RSS qué significa Residence Site que es la cantidad de memoria que un proceso está
consumiendo excluyendo la memoria virtual y la memoria compartida.
7. TTY, que es la terminal en la cual está corriendo un proceso, cuando sale un interrogante es
que está corriendo en background no hay una terminal que esté gobernando ese proceso.
8. STAT qué es el estado de un proceso.
9. START qué es la hora en la que inició el proceso.
10. TIME qué es el tiempo de procesador que lleva consumiendo el proceso en
particular.
11. COMMAND qué es el nombre del proceso.
Bueno de estas 11 columnas, 9 son muy fáciles de entender pero hay dos que de pronto son muy
ambiguos y hay que aclararlos. Estos son el tiempo de procesamiento y el estado de los procesos.

Tiempo de Procesamiento
El tiempo de proceso es el tiempo del procesador consumido por dicho proceso no se refiere al
tiempo que lleva activo desde que se ejecutó sino al tiempo de procesador que ha consumido, ya
que el proceso no se encuentra corriendo constantemente consumiendo el procesador sino que la
mayoría del tiempo permanece en espera.
¿Porque?
En los sistemas multitarea no se ejecuta varias tareas al mismo tiempo aunque pareciera,
simplemente se alternan el uso del procesador entre los procesos para dedicarle cierta cantidad de
tiempo el sistema operativo tiene un planificador (eso ya lo vimos en la clase número 2 de este
curso) este planificador se encarga de gestionar el tiempo de proceso.
Los estados no son más que las acciones que estos procesos llevan a cabo en su vida útil aquí
tenemos una tabla que hice hace un rato, dónde están los identificadores de cada uno de esos
estados.
Entonces está que:

 D estado de dormido interrumpible normalmente son procesos que interactúan con


dispositivos de entrada y salida .
 R que es corriendo es decir, que el proceso está haciendo uso del procesador en ese
momento.
 S que esta dormido interrumpible ósea que está esperando a que un evento se complete.
 T que es parado ya sea por una señal de parada o por seguimiento como en el caso de debug.
 W que es paginado (no es válido del kernel 2.6 para abajo)
 X que es muerto pero……no debería aparecer nunca en una tabla de procesos.
 Z que difunto o zombie que es cuando un proceso ya he terminado pero no ha sido reportado
al proceso padre es decir aparece en la tabla de los procesos pero el proceso ya ha terminado.
 Ahora después del Estado del proceso vemos unos caracteres adicionales qué son: < es alta
prioridad no establecida por el usuario,
 N que es baja prioridad establecida por el usuario.
 L mayúscula qué significa que hay páginas bloqueadas por lo general también se refiere a
dispositivos de entrada y salida o tiempo real.
 s minúscula que es líder de sesiones decir que tiene procesos hijos.
 i que es multihilo en otras palabras que se ve como un solo proceso pero en realidad tiene
múltiples hilos.
 + que significa que es parte de un grupo de procesos.
Por último tenemos el comando ps acompañado del parámetro f.
Entonces podríamos colocar ps xauf y éste nos muestra la tabla de procesos en forma de árbol cada
padre con su hijo hasta llegar hasta el proceso final, acá tenemos un ejemplo de nuestra Shell bash
la cual tiene un hijo qué es el proceso ps.
Save

Comando PSTREE
El comando pstree nos muestra el mismo árbol que nos muestra ps xauf pero de una manera más
simple sin detalles, también podemos mostrar el PID dentro de pstree esto lo logramos con el
parámetro -p, ahora con el parámetro -g podemos mostrar el grupo del usuario que corre el proceso,
con entonces podemos hacer pstree -p -g.

Save
Algo muy importante de conocer el árbol de la tabla de procesos de nuestro sistema es que podemos
matar los procesos cuando sea necesario esto lo podemos hacer con el comando kill el comando.

Comando KILL
kill tiene las siguientes sintaxis:
kill espacio y el PID del proceso que queremos matar.
Entonces tenemos aquí unos ejemplos:
Hacemos ps u para ver los procesos que estamos corriendo nosotros como usuario vemos 2
procesos llamados pico estos procesos los vamos a matar de dos formas una de una forma sencilla
ejecutando kill y el PID del proceso entonces nos termina el proceso.
El otro lo vamos a matar con kill -9 y el PID en este caso nos mata el proceso con la señal Kill.

Recuerden que la segunda clase hablamos de las señales. En el Primer caso enviamos la señal 15 lo
que nos terminó el proceso, pero en algunos casos eso no es suficiente porque en el proceso se
queda atascado haciendo algo y nosotros necesitamos terminar el proceso inmediatamente por eso
utilizamos el parámetro -9 que envió la señal de kill y terminó el proceso inmediatamente sin
esperar nada.

Comando Killall
Tenemos otro comando que se llama killall hace lo mismo kill pero no mata por medio del PID sino
por medio del nombre del proceso que estamos ejecutando. Entonces tenemos otra vez nuestro ps u
y los dos los vamos a matar con un solo comando killall.
Aquí podemos ver como los dos mueren al mismo tiempo con killall pico y vamos a repetir el
mismo ejemplo con killall -9 pico y aquí vemos como los dos procesos muere con la señal kill.

Esto de las señales lo veremos más adelante en detalle cuando estemos viendo la parte de
administración de sistema como usuarios root por ahora nos vamos a enfocar sólo en las
funcionalidades de usuario.
Bueno, hasta aquí dejamos el manejo de procesos por ahora y nos vamos a enfocar en el manejo de
archivos.
Como ya vimos en la clase de número 2 el sistema de archivos esta organizado de forma jerárquica
es decir carpetas que contienen subcarpetas en forma de árbol y éstas contiene a su vez ficheros,
bueno pero.

Comando ls
Para esto nos ayudaremos del comando el comando ls.

El comando ls nos muestra los archivos y los ficheros que tenemos en el punto donde estamos
parados, si ejecutamos ls con el parámetro -l nos enseña la misma información pero con datos
detallados primero permiso de archivos, luego la cantidad de Link duros o literales que hace
referencia a nuestro archivo, el usuario propietario, el grupo propietario, el tamaño del archivo
y en el caso de los directorios él toma un valor en relación al tamaño de los bloques del sistema que
en este caso son 4k. La fecha y hora de la última modificación del del archivo que son las tres
columnas que siguen y para finalizar el nombre del archivo.

Con el parámetro -a nos muestra los archivos ocultos y digo ocultos porque simplemente son
precedidos por un punto qué el ls predeterminadamente no lee pero son iguales que otros archivos
regulares del sistema, entonces podemos ejecutar el comando ls -a o ls -la combinando los
parámetros para ver estos archivos.

Save
Para aclarar cada vez que hacemos ls vamos a ver dos directorios en todas las carpetas donde
estemos estos directorios son el punto (.) y el dos puntos (..) Estas carpetas directorio son
simbólicos y actúan como una brújula para nosotros ubicarnos en el sistema.
El directorio (.) significado de la carpeta donde estamos actualmente es decir si nosotros hacemos
pwd vemos que estamos parados en /home/fox eso es representado dentro de directorio como (.)
Entonces daría lo mismo referencia (.) o referenciar /home/fox estando parados en este punto.
Lo mismo pasa con el directorio (..). El directorio(..) representa al directorio anterior al que estamos
parados en este caso sería /home por ende cualquier referencia que hagamos estando parados en
/home/fox .. Estaríamos hablando a /home.
El ls también nos permite hacer un barrido de las carpetas y subcarpetas de forma recursiva esto lo
podemos hacer con el parámetro -R cuando queremos saber los detalles de un archivo podemos
hacer ls –lR y el nombre de archivo.
También lo podemos hacer en grupo de archivos utilizando el comodín asterisco colocándolo en los
archivos que preceden o anteceden determinada cadena de caracteres como por ejemplo queremos
listar todos los .jpg que tenemos en nuestro directorio lo podemos hacer con * .jpg también
queremos listar todos los archivos que comienzan por ala, entonces ejecutamos ls ala* y nos va a
mostrar todos los archivos que comiencen por ala.
El ls soporta todos los comodines de expresión regular pero esto lo vamos a ver cuando estemos
viendo Shell scrip más adelante. Esto de mirar los detalles de un archivo con solo ls – l no funciona
con los directorios ¿porque por qué? cuándo ejecutamos ls – l a un directorio este nos muestra el
contenido del directorio entonces para poder ver los detalles de un directorio tenemos el parámetro -
d que por ejemplo ls –ld funcionaría de la misma forma que como vimos con los archivos
anteriormente nos muestra los detalles.
Ahora para poder ver el tamaño de una mejor forma de una forma más entendible ls también
soporta el parámetro -h qué significa formato legible al humano ejecutando ls –lh nos permite ver
los tamaños de los archivos en bites, Kb, Mb, Gb y Tb,
Como mera curiosidad, una versión resumida del ls –l qué es el comando ll que es soportado por
muchas versiones de UNIX.
Para terminar con el comando ls tenemos el parámetro –color este parámetro es muy útil porque nos
muestra en colores los archivos y directorios teniendo como base su extensión y sus permisos, el
parámetro –color en la mayoría de los distribuciones viene como un alias de la Shell bash es decir
cualquier ejecución del comando ls con cualquier parámetro nos va a mostrar los archivos
coloreados dependiendo de su extensión y sus permisos.

Comando MKDIR
Bueno, lo primero es la organización y para eso es imprescindible la creacion de carpetas con el
comando mkdir espacio y el nombre la carpeta, además de esto si queremos borrar carpetas que no
tengan ninguna archivo o carpeta dentro lo hacemos con el comando mrdir.
¿Cómo gestionamos los archivos que contienen estas carpetas?
Bueno existen tres comandos básicos para esta misión que son:
1. cp para copiar
2. mv para mover
3. rm para borrar
Los parámetros más importantes son -r que copiar recursivamente un archivo o un directorio no
importando que tenga que tenga archivos directorios adentro, la -f qué fuerza la copia de una la
copia de un archivo o directorio no importando que existe el destino, -p o preserva los permisos que
tenía ese archivo, es decir cuando se copia, la copia resultante tiene los mismos permisos que tenía
el origen y –v “verbose” que nos muestra todo lo que se copia hacia la salida estándar, -v no es muy
recomendado cuando estás conectado por ssh o una sección remota y haces copia de muchos
archivos ya que como tiene que mostrar a la salida estándar todo archivo que copia eso puede
demorar el proceso.
El rm en su forma básica rm sólo borrar archivos que se le indiquen, no borra directorios. Para
poder que borre directorios necesita el parámetros -r para que tome el borrado de forma recursiva y
así pueda borrar carpeta con sus archivos y subcarpetas.
También se le puede indicar el parámetro -f para que fuerce el borrado de algunos archivos.
Como en otros comandos el rm también funciona con comodines es decir puedes borrar con rm -rf
* en la carpeta donde te encuentras y borrar todo lo que hay allí para bajo de forma recursiva pero
cuidado con este comando porque no vas a querer hacer rm a la raíz (rm –rf /) porque esto te va a
causar un severo dolor de cabeza.
De estos 3 comandos nos queda mv.
El mv nos mueve un archivo de una ubicación del disco a otra o de una carpeta a otra. El mv tiene
una peculiaridad y es que cuando se mueve el archivo de un lugar a otro dentro del mismo
dispositivo de almacenamiento el no mueve físicamente la información simplemente cambia el
apuntador de un lado a otro dentro del índice de archivos del sistema de archivos, pero su ubicación
física no cambia.
Cuando movemos de un dispositivo de almacenamiento a otro dispositivo de almacenamiento si se
comporta haciendo una copia hacia el otro disco dispositivo y borrando el origen.
Por eso es que cuando copiamos dentro de un mismo disco dispositivo almacenamiento es más
lento que cuando simplemente lo movemos porque cuando movemos sólo cambia el apuntador,
mientars que cuando copiamos estamos generando una duplicación de los datos qué tienen que ser
escritos en otro ubicación del disco.

Comando FIND
Ahora tenemos las herramientas para gestionar nuestros archivos podemos ir más allá y podemos
efectuar búsquedas en otro sistema esto lo hacemos con el comando find la sintaxis del comando
find la sintaxis básica es la siguiente find ruta –name y la expresión para buscar el archivo que
queremos encontrar por ejemplo find / – name uname que es un comando que ya conocemos
mucho, entonces él comando nos busca en la raíz el comando uname de forma recursiva. En este
caso estamos utilizando 2> /dev/null para que no nos muestre los mensajes de error ya que como
estamos como un usuario y estamos buscando en todo el sistema desde la raíz entonces nos va a
sacar algunos errores de permisos no queremos que salgan entonces por eso vamos a redirigir el
error estándar hacia /dev/null.

Con find también podemos hacer búsquedas y comodines como por ejemplo * un ejemplo de puede
ser find /-name libe* y esto nos va a mostrar todos los archivos que contengan al principio lib
también podemos utilizar find /-name *lib y esto nos va a mostrar todos los archivos que terminen
en lib para terminar en el ejemplo podemos colocar find / -name lib y nos va a mostrar todos los
archivos que encuentre donde dentro de la cadena de caracteres se encuentre lib como en el caso de
los comandos anteriores find también soporta expresiones regulares pero este te ma vamos a dejarlo
para una clase futura en la cual solamente vamos a dedicar el comando find.
MC | midnight commander

Save
Para finalizar tenemos aquí una herramienta muy útil para la gestión de archivos y dispositivos de
almacenamiento se llama mc dice el programa MC o midnight commander, comandante de
medianoche que es un clon de una utilidad para DOS que se llama Norton Commander
desarrollada por el famoso hacker de DOS Peter Norton.
MC por su lado fue desarrollado por ese entonces joven mexicano Miguel de Icaza conocido
contribuidor del software libre en proyectos como GNOME y MONO de quien es fundador, siendo
MC su primer proyecto como contribución a GNU. Miguel de Icaza elaboró una herramienta
maravillosa que aun hasta hoy ha sido portada a la mayoría de los sistemas operativos tipo Unix, de
hecho también existe una versión de MC para Windows.
Bueno cuando entramos al MC podemos observar que está dividido en 5 partes diferentes un menú
superior, un panel izquierdo, un panel derecho, un prompt de Shell para ejecutar comandos y un
menú de teclas de función.
La barra del menú nos muestra las opciones del panel izquierdo, las opciones del panel derecho y
las funciones de archivos, las utilidades y las opciones del programa cada panel independiente nos
muestra 2 vistas de 2 ubicaciones diferentes del sistema también nos indica la utilización del
dispositivo de almacenamiento en el que estamos parados en ese momento con su utilización y el
total del dispositivo de almacenamiento, el prompt nos permite ejecutar cualquier comando de
Shell, con la combinación de teclas CONTROL o desaparecemos la interface del mc lo que nos
muestra la salida estándar del shell y si queremos ver otra vez la interface del MC volvemos con
CONTROL o.
El menú de teclas de función es la parte más útil de este programa ya que nos permite hacer las
mismas funciones con los comandos que acabamos de ver pero en un ambiente pseudografico,
pseudografico porque utiliza las librerías ncurses y slang para dibujarnos en la pantalla con
caracteres, una interface.
Entonces las teclas de función son

 F1 para ayuda.
 F2 para el menú de usuario.
 F3 para ver.
 F4 para editar.
 F5 para copiar.
 F6 para mover o renombrar.
 F7 para crear un directorio.
 F8 para borrado singular o también recursivo.
 F9 para el menú de los paneles.
 F10 para salir de la aplicación.
Bueno así llegamos al final de esta cuarta clase de nuestro curso de Linux ya vamos adentrándonos
más en lo que es en nuestro sistema operativo y no olviden que lo que aprenden aquí no sólo se
aplica el sistema operativo Linux si no que la mayoría también se aplica en todos los sistemas
parecidos a UNIX o basados en UNIX.
Curso de Linux 5/60 | Compresión y
empaquetamiento
Compartir4
Twittear
Compartir
+1
Compartir 4
En esta entrega del curso Linux vamos a ver formas de empaquetar y comprimir y descomprimir
archivos en Linux, y veremos varios comandos que nos darán distintos niveles de compresión.

Comandos de Compresión y empaquetamiento


 TAR
 GZIP
 BZIP
 ZIP y RAR
Bueno lo primero que tenemos que hacer es obtener una fuente de archivos para compresión de
datos, me ha venido a la mente descargar las fuentes del kernel de Linux que después las vamos a
necesitar, porque ocupan bastante espacio y son muchísimos archivos entonces nos puede ayudar a
los ejemplos.

Descarga de las fuentes del Kernel de Linux


wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-
2.6.0.tar.gz
Entonces aquí vemos el archivo Linux 2.6.7.tar.gz vemos que mide 43 MB comprimido. Entonces
vamos a trabajar un poco con este archivo primero vamos a descomprimirlo porque esta
comprimido en gzip, lo descomprimimos con el comando gunzip.

Descomprimir archivos en Linux .tar.gz


Para descomprimir archivos en Linux cuando estos están en .tar.gz utilizamos el comando gunzip
Sintaxis de gunzip:

gunzip + el nombre del archivo


Ejemplo:

gunzip linux-2.6.0.tar.gz
Como vemos el archivo linux-2.6.0.tar.gz al descomprimirlo ocupa 189Mb.

Comprimir Archivos en Linux .tar.gz


Ahora lo volvemos a comprimir en el comando gzip

gzip linux-2.6.0.tar.gz

Y vuelve otras vez a los 43MB que tenia antes.


Volvemos a descomprimimos para seguir el ejemplo pero ahora con otro comando.

gunzip linux-2.6.0.tar.gz
Ahora vamos a utilizar otro comando de compresión que se llama BZIP2.

Comprimir Archivos en Linux con BZIP2


Entonces ahí tenemos nuestro archivo linux-2.6.0.tar.gz de 189M, ahora utilizamos el comando
bzip2 más el nombre del archivo, ejemplo:

bzip2 linux-2.6.0.tar.gz
esperamos que comprima y ahora vamos a notar que el tamaño del archivo comprimido con bzip2
es 10Mb menos que el comprimido con bzip. El bzip2 nos da una mayor cantidad de compresión
que el gzip

Descomprimir archivos en Linux con bunzip2


Para descomprimir utilizaremos el comando bunzip2 que es el comando para descomprimir
archivos comprimidos con bzip2
Sintaxis de bzip2:
bunzip2 + nombre del archivo

ejemplo:

bunzip2 linux-2.6.0.tar.bz2
entonces vemos que tenemos nuestro archivo .tar de 189Mb como lo teníamos antes.
Archivos TAR
¿que son los archivos tar? la palabra tar viene de Tape ARchiver que es el comando en Unix que se
utilizaba y que aun se utiliza para guardar la información en cintas, las cintas de bakup donde se
almacena mucha cantidad de información, para poder tener un respaldo real en caso de emergencia,
incendio y ese tipo de cosas entonces el tar es un comando muy extenso, cuando estemos en la
parte de administración vamos a verlo más a fondo pero por ahora solo vamos a ver las funciones
básicas. La primera que vamos a ver es el desempaquetamiento.

¿Como descomprimir un archivo TAR?


Para el desempaquetamiento de archivos tar utilizaremos el siguiente comando:

tar xf + nombre de archivos

Ejemplo:

tar xf linux-2.6.7.tar
Al desempaquetar el archivo linux-2.6.7.tar vamos a ver que nos extrae el directorio de nombre
Linux-2.6.7 y dentro de este encontramos sub-directorios y archivos.

Parámetro vervox
Si al ejemplo anterior le agregamos el parámetro v que significa vervox nos va a mostrar todos los
archivos que son desempaquetados a la salida estándar de la Shell . Estamos viendo la salida de los
archivos que fueron desempaquetados.

Save

Visualizar el tamaño de un directorio en Linux


En el ejemplo anterior descomprimimos un archivo tar que contenía un directorio y un conjunto de
archivos y directorios dentro del directorio principal, ahora nos interesa ver cual es el tamaño final
que ocupa este directorio y lo haremos con el comando du
Sintaxis de du:

du -sh + nombre de archivo


Ejemplo:

du -sh linux-2.6.7.tar

 El parámetro -s nos permite globalizar todo el tamaño del directorio que queremos ver
 el parámetro -h que nosotros ya lo hemos visto es el formato legible al humano, que nos
muestra la información en un formato más entendible.
Para seguir con nuestro ejemplo vamos a borrar el archivo tar para volver a empaquetar el
directorio que creamos al desempaquetar el archivo linux-2.6.7.tar con el siguiente comando:

rm -rf linux-2.6.7.tar

¿Cómo comprimir un archivo TAR?


Para comprimir un archivo tar utilizaremos el comando tar de la siguiente manera:
Sintaxis de tar:

tar cvf + archivo de destino .tar | origen de los datos

Ejemplo:

tar cvf linux-2.6.7.tar linux-2.6.7


Este comando tiene una particularidad y es primero colocamos el archivo de destino que es el
paquete .tar y luego le decimos cual es el origen de los datos

 c es para copiar.
 v para que nos muestre vervox como vimos ahorita en la extracción
 f para file o sea que lo haga a un archivo.
Pasamos a comprobar que la operación fue todo un éxito con el siguiente comando

ls -lh linux-2.6.7.tar

Una vez más vamos a crear un paquete comprimido


Sintaxis:

tar zcvf + nombre de archivo

Ejemplo:

tar zcvf linux-2.6.7.tar.gz


Parámetro z y cvf vamos a crear el mismo paquete pero ya de una vez comprimido en gzip.

descomprimir y desempaquetar en un solo paso.


recordemos que esta empaquetado con tar y comprimido con zip entonces para extraerlo es lo
mismo que vimos al principio lo único que le agregamos la z al principio para que el tar reconozca
que es un archivo comprimido en zip
Sintaxis:

tar zvxf + nombre de archivo

Ejemplo:

tar zvxf linux-2.6.7.tar.gz

Comprobamos que el archivo fue creado con el siguiente comando: ls -lh linux-2.6.7.tar.gz
Ahora vamos a utilizar el tar pero con el otro algoritmo de compresión que es el Bzip2 para esto
vamos a utilizar el parámetro j
Sintaxis:

tar jvxf + nombre de destino nombre de archivo


Ejemplo:

tar jvxf linux-2.6.7.tar.bz2 linux-2.6.7.tar


Comprobamos que el archivo fue creado con el siguiente comando:

ls -lh linux-2.6.7.tar.bz2
Ahora para desempaquetarlo y descomprimirlo lo hacemos con:

tar jxvf + nombre del archivo


Ejemplo:

tar jxvf linux-2.6.7.tar.bz2

Visualizar contenido de archivos tar


Un parámetro muy importante que tiene el tar es poder visualizar el contenido ya que por lo general
los archivos hechos con tar son backup incluso de un sistema operativo completo entonces es muy
útil poder visualizar cuales son los archivos que contiene el paquete, esto lo hacemos con el
parámetro t.
Sintaxis:

tar tvf + nombre del archivo

Ejemplo

tar tvf linux-2.6.7.tar

 t para visualizar.
 v para que nos saque al estándar output.
 f que significa que es un archivo.

Redirigir la salida estándar de tar


Haciendo uso del comando cat nosotros podemos redireccionar esa salida, como ya lo hicimos en la
clase pasada. Al redirigir esa salida podemos colocarla en un archivo que podemos explorar y
visualizar con mas calma.
Sintaxis:

tar tvf + nombre del archivo origen > nombre de archivo destino

Ejemplo:

tar tvf linux-2.6.7.tar > contenido.txt


La visualización también soporta los formatos comprimidos entonces vamos a comprimir nuestro
archivo tar para hacer un ejemplo.
ahora vamos a hacer lo mismo que hacemos cuando empaquetamos y desempaquetamos un tar
comprimido:
Syntaxis:

tar ztvf + nombre del archivo destino


Ejemplo:

tar ztvf linux-2.6.7.tar.gz


vemos como nos comienza a previsualizar el contenido, y de igual manera nos funciona con el
bzip2.
Sintaxis:

tar jtvf + nombre del archivo destino

Ejemplo:

tar jtvf linux-2.6.7.tar.bz2


Si nosotros tuviéramos un tape backup una cinta entonces podríamos omitir el parametro f y
solamente utilizar el parametro cd para poder hacer la copia hacia el dispositivo y xv para poder
extraer esa copia del dispositivo de cinta , en este caso seria /dev/st0 que es el dispositivo en cinta
de Linux mas común.
Bueno estos son los comandos para empaquetamiento y compresión que vienen nativos en linux por
tradición porque vienen en la distribución deGNU, pero dentro del mundo de la computación es
muy útil aprender a manejar todos los algoritmos de compresión que son muy usados en otras
plataformas como lo es el zip y el rar.

Comprimir archivos ZIP en Linux


Una vez instalamos nosotros el zip y el rar en nuestra maquina, ya podes utilizar los comandos para
comprimir una carpeta recursivamente.
Sintaxis de zip:

zip -r + archivo destino + archivo origen

Ejemplo:

zip -r linux-2.6.7.zip linux-2.6.7

Comprobamos que el archivo se ha creado:


ls -lh linux-2.6.7.zip

Para comprimir un solo archivo simplemente damos el comando zip y el archivo de destino,
Sintaxis:

zip + archivo destino + archivo origen

Ejemplo:

zip linux-2.6.7.zip linux-2.6.7.tar

Descomprimir archivos ZIP en Linux


Para descomprimir simplemente utilizamos el comando unzip de la siguiente manera:
Sintaxis de unzip:

unzip + el archivo de destino

Ejemplo:

unzip linux-2.6.7.zip

Visualizar el contenido de un archivo ZIP


Un parámetro también útil es también el parámetro –v que nos permite visualizar el contenido de un
archivo .zip
Sintaxis:

unzip -v + nombre de archivo

Ejemplo:

unzip -v linux-2.6.7.zip

Comprimir archivos RAR en Linux


Ahora el algoritmo de compresión rar lo podemos utilizar de forma muy sencilla para copiar un
directorio recursivamente:
Sintaxis de rar:

rar a nombre de destino + nombre de origen


Ejemplo:

rar a linux-2.6.7.rar linux-2.6.7.tar


a de agregar
comprobamos con:

ls -lh Linux.2.6.7.rar

Descomprimir archivos RAR en Linux


Para descompromir no es igual que en zip no podemos dar unrar y el archivo, tenemos que dar
unrar x para extraer y el archivo .rar de la siguiente manera.
Sintaxis de unrar:

unrar x Linux.2.6.7.rar

comprobamos:

ls -lh
Bueno esto se acabo ya no hay más por esta clase, recuerden suscribirse por correo para recibir los
nuevos artículos de Linux desde el pie de pagina, recuerden que también estoy en Facebook como
efox desclasificado para los que quieran seguir las redes sociales y no olviden compartir si creen
que esta información les fue de utilidad y a quien crea que le puede ser de utilidad. Yo soy efox
desclasificado un enfoque diferente de la tecnología informática.
Curso de Linux 6/60 – Busquedas y Expresiones
Regulares
Compartir1
Twittear
Compartir
+1
Compartir 1
La búsqueda en Linux seria una tarea compleja si no existiera el comando find y greep estos nos
dan la capacidad de poder encontrar cualquier cosas este donde este, es aquí donde comenzamos a
percibir el poder informático que nos otorga Linux, sin duda disfrutaran mucho de este articulo.

Uso del comando find en Linux


Para realizar búsquedas dentro de Linux podemos hacer uso del comando find ahora ¿como
usaremos find? veamos su sintaxis.
Sintaxis de find:

find [Ruta] -name [Cadena de búsqueda]

Ejemplo de uso de find:

find / -name linux

 Donde “/” es la ruta.


 “-name” nos permite realizar búsquedas literales sensibles a las mayúsculas y minúsculas.
 y “linux” la cadena de texto que estamos buscando.
Uso de comodines en la busqueda en Linux
En la búsqueda en Linux con el comando find también se puede hacer uso de comodines.
Ejemplo de uso de comodines en find:

find / -name linux*


find / -name *linux*
Hasta ahora las búsquedas realizadas con el parámetro -name realiza búsquedas literales o sea
búsquedas capaces de distinguir entre letras minúsculas y mayúsculas, así que nos realiza una
distinción entre por ejemplo un archivo de nombre Linux y otro de nombre linux.

Realizar una búsqueda con find sin discriminación entre mayúsculas y


minúsculas
Para realizar una búsqueda que no nos va a discriminar la mayúscula y la minúscula o sea que no va
a ser sensible a la mayúscula y la minúscula y nos va a encontrar los resultados no literales
usaremos el parametro -iname
Ejemplo:

Find / -iname Linux


Al no ser una búsqueda literal nos mostrara archivos con mayúscula y minúscula que contenga la
cadena linux.

Busqueda de archivos en Linux por extensión


El comando find junto a los comodines también lo podemos utilizar para buscar archivos con
determinada extensión.
Sintaxis:

find / -name *.c (realiza la búsqueda de todos los archivos con


extensión .c (Archivos de lenguaje C) )
find / -name *.h (realiza la búsqueda de todos los archivos con
extensión .h (los archivos de cabecera de C) )
find / -name *.so (realiza la búsqueda de todos los archivos con
extensión .so (los archivos de librerías dinámicas) )

Busqueda de archivos en Linux por permisos


El comando find también nos permite hacer búsquedas por medio de permisos.
Buscar los permisos de lectura, escritura y ejecución en los 3 roles
find / -perm 0777

 Donde -perm es el operador para búsqueda de permisos.


 y 0777 los permisos que buscamos.
buscar archivos con permiso de lectura y escritura para los 3 los roles
find / -perm 0666
 Donde -perm es el operador para búsqueda de permisos.
 y 0666 los permisos que buscamos.
Buscar archivos con permiso de solo lectura para los 3 los roles
find / -perm 0444

 Donde -perm es el operador para búsqueda de permisos.


 y 0444 los permisos que buscamos.

Búsqueda por sintaxis alternativa


También hay una forma qué es la forma de sintaxis alternativa en la cual nos permite buscar por
medio del rol y el permiso que estamos buscando.
En este caso en particular vamos a buscar el grupo que tenga el bit s que es el bit de suit de
ejecución como el usuario propietario

find / -perm /g+s


También podemos hacer otra búsqueda en este caso voy a buscar quien tenga el rol de usuario que
tenga bit s de suit.

find / -perm /u+s

Búsqueda masiva archivos y directorios en Linux


Otra opción que nos da el comando Find es la búsqueda de archivos y directorios masivos.

find / -type f -empty


-empty que significa vacío, entonces esto nos va a buscar todos los archivos cuyo tamaño es cero o
sea que están vacíos.
lo mismo aplica para directorio exactamente la misma sintaxis pero reemplazamos f por d

find / -type d -empty


y nos encuentra todos los directorios vacíos del sistema de archivos que estamos buscando en este
caso

Búsqueda de archivos ocultos


Otra búsqueda muy útil que podemos lograr con el find es buscar con el comodín los archivos
ocultos, como en Linux los archivos ocultos son precedidos por un punto podemos realizar la
siguiente busqueda:

find / -name ".*"

Búsqueda de archivos por usuarios


Otra funcionalidad buena que tiene el find es buscar por usuario y por grupo.
Sintaxis:

find / -user [nombre del usuario]


Ejemplo de búsqueda de archivos por usuario:

find / -user root


find / -user fox

Búsqueda de archivos por grupos


Sintaxis:

find / -group [nombre del grupo]

Ejemplo de búsqueda de archivos por grupo:

find / -group root


find / -group colord

Combinando criterios de búsqueda


A este punto ya somos capaces de sumar lo aprendido y realizar criterios de búsqueda mucho más
específicos, vamos a ver como.
Para este ejemplo vamos a buscar los archivos cuyo propietario sea fox y que en su hombre no
importando si es mayúscula o minúscula tenga como extensión .c esto lo lograremos utilizando el
comodín.

find / -user fox -iname "*.c"

Ahora el mismo ejemplo pero para archivos cuyo usuario sea root

find / -user root -iname "*.c"

Búsquedas de archivos por tiempo de acceso


Con el operador -atime podemos realizar búsquedas de archivos accedidos hace cierto tiempo, en el
siguiente ejemplo hace 30 días.

find / -atime 30

Búsquedas de archivos por tiempo de modificación


La funcionalidad de find de buscar por tiempo de acceso y por el tiempo de modificación es una
parte muy importante de este comando tenemos por ejemplo la opción -atime y -mtime que nos
permite buscar por tiempo de modificación mtime y por tiempo de acceso atime.
Con el operador -mtime podemos encontrar todos los archivos modificados hace cierto tiempo, en
el siguiente ejemplo vemos

find / -mtime 30

Búsquedas de find con un rango amplio


find / -mtime +30 -mtime -90

Esto nos daría los archivos que fueron accesados entre el día 30 y 90 o sea 60 días de rango.
También tenemos el parámetro mmin y amin que nos permite buscar en vez de rango de días rango
de minutos esto nos permite movernos en el rango de un día no como mtime que nos permiten
movernos en el rango de varios días.
Ejemplo de uso de mmin:

find / -mmin -60

Búsquedas de archivos por tamaño


No menos importante es la búsqueda por tamaño del comando find nosotros podemos con el
parámetro -size encontrar archivos de un tamaño determinado.
Ejemplo:

find / -size 10M


Con -size 10M le estamos indicado que busque archivos de tamaño de 10MB
Otro ejemplo:

find / -size +10M


con el operador + le estamos indicando que nos busque en este ejemplo los archivos que tengan
más de 10 Mb

find / -size -10M


con el operador – solicitamos que nos busque en este ejemplo los archivos que tengan menos de 10
Mb
ahora ampliemos el rango de búsqueda de la siguiente forma

find / -size +10M -size -20M


Esta forma de búsqueda con un rango más amplio nos permite encontrar archivos que tengan un
tamaño de 10Mb a 20Mb, muy útil por cierto cuando no sabes el tamaño exacto del archivo que
estamos buscando.

Búsquedas con comandos que afecten las búsquedas


Borrar archivos de cierto tamaño
Ahora la búsqueda por tamaño o por cualquier otra búsqueda nos permite hacer algo que es ejecutar
un comando que afecte esa búsqueda eso lo hacemos con el comando -exec entonces con –exec
podríamos en el siguiente caso borrar todos los archivos que estaban entre los 10 y los 20 megas de
espacio.

find /home/fox -size +10M -size -20M -exec rm -f {} \;


Cambio de permisos en un rango de búsqueda
Teniendo en cuenta el ejemplo de exec pasamos al siguiente ejemplo, vamos a hacer una búsqueda
de permisos los cuales vamos a encontrar los permisos de lectura, escritura y ejecución para el
usuario, lectura y ejecución para el grupo y lectura y ejecución para todo lo demás que es 755 y
vamos a cambiarle los permisos, vamos a cambiárselos a 750 -exec le vamos a dar chmod 750 y ahí
vamos a cambiar todos los archivos que encuentre con el parámetro que estamos buscando a esos
permisos que le estamos indicando

find /home/fox -perm 0755 -exec chmon 750 {} \;


Búqueda de rango de fecha
para terminar vamos a ver la búsqueda por rango de fechas y para esste ejemplo buscaremos entre
enero y junio del 2014 entonces nos va a arrojar la búsqueda entre el primero de enero del 2014 y el
primero de junio del 2014 todos los archivos que fueron modificados en ese lapso de tiempo.

find / -type f -newermt "2014-01-01" ! newermt "2014-06-01"


Búqueda de rango por año y mes
También podemos buscar por los últimos años, meses, semanas o dias:

find / -type f -newermt "2 year ago"


find / -type f -newermt "1 year ago"
find / -type f -newermt "1 month ago"
find / -type f -newermt "1 week ago"
find / -type f -newermt "1 day ago"
find / -type f -newermt "last friday"

Buscar dentro de un archivo con Greep


Una vez controlada la búsqueda de archivos solo hace falta tener un mismo control en la buscada de
contenido dentro de los archivos, así no habrá nada que se te escape, y para lograrlo utilizaremos
greep
Ejemplo de uso de greep:
greep 80 /etc/*.conf

 Donde 80 es la cadena a buscar


 /etc/ en la ruta en donde se realizara esa búsqueda
 y *.conf es para indicar que la busqueda se haga en todos los archivos .conf
En el segundo ejemplo del uso de greep realizaremos una búsqueda de una cadena de texto:
greep “support” /etc/*.conf
En el tercer ejemplo
greep “P*22” /etc/*/*conf*

find / -name "*[aA]*" resultado entre a y A


find / -name "*[xX]*" resultados entre x y X
find / -name "*[0-9]*" resultados númericos
find / -name "*[L-M]*" resultados entre L y M
En las siguientes búsquedas ¿Podrías decirnos que resultado arrojara?
ls [a]*
ls [l]*
ls [!l]*
ls [!a]*
ls | grep "^[1]"
ls | grep "^[L]"
ls | grep "^[A-z]"
ls *[1]*
ls | grep "[l]$"
ls | grep "[a]$"
ls | grep "[^a]$"
ls | grep "[a-m]$"
ls | grep "[a-m$]"
ls | grep "^[a-m]$"
Por último tenemos una tabla en resumen de cada uno de los comodines para la búsqueda tanto find
como en greep tenemos y el uso de comodines.

Save
Bueno eso es todo por esta entrega en el curso de Linux estoy feliz de volver estoy feliz de estar con
usted aquí entregándoles esta información qué sé que les gusta mucho y que es de su agrado y por
eso prometo solemnemente no dejar de hacer los articulos del curso Linux hasta que termine los 60
capitulos así que no se olviden por favor de compartir esta pagina en sus redes sociales, y
suscríbanse al canal no nada mas me Beneficia a mi sino a ustedes porque hay mas material y más
información.
yo soy efox declasificado un enfoque diferente de la tecnología informática.

¡Hasta el próximo capitulo!


Curso de Linux 7/60 | Editores de texto
Compartir7
Twittear
Compartir
+1
Compartir 7
https://www.proyectobyte.com/android/uso-la-interfaz-linea-comandosEstá es la séptima clase de
nuestro curso de Linux, hoy vamos a ver editores de texto pero no vamos a ver editores de texto en
entorno gráfico eso no tiene chiste, cualquiera puede manejar un editor de texto en modo gráfico
vamos a ver cuatro editores de texto en la terminal.

Ventajas de usar un editor de texto en la terminal Linux


1. Estos editores de texto que a continuación veremos son ligeros y potentes así podremos
trabajar más rápido, que si lo hiciéramos en un entorno gráfico.
2. Al ser ligeros, trabajaremos igual de rápido en remoto que en local.
3. Suelen ser multiplataforma.
Vamos a ver el editor nano también se le conoce como pico, vamos a ver el vi de Unix y también
vamos a ver dos editores alternativos qué es el MCedit que acompaña al MC qué es un gestor de
archivos y vamos a ver el editor Joe que es un editor de texto también tradicional de Unix.
Editor de texto Nano

Save
Bueno aquí vamos a llamar a nuestro editor de texto, lo podemos llamar de dos formas pico o nano.
Nano es su nombre real, entonces seria:
Sintaxis:

 nano + nombre del archivo.


 pico + nombre de archivo.
 En la parte inferior de la pantalla veremos la guía de los comandos, que son:
 Control X: con Control X podemos salirnos del editor y si no hemos guardado él nos va a
preguntar si deseamos guardar los cambios.
 Control O: el Control O nos sirve para guardar los cambios que hemos hecho sin salir o
inclusive lo podemos guardar como otro archivo dándole Control O e indicándole el nombre
del archivo cómo lo queremos guardar.
 Control J: con control J podemos justificar el texto al ancho de la terminal.
 Control k: podemos cortar el texto o inclusive podemos cortar bloques.
 Control u: nos sirve para pegar texto, este se pegara en la posición actual del cursor.
 Control c: nos situamos en una línea y nos va a decir qué línea es esa con la información, la
columna dónde estamos parados el carácter de texto completo donde estamos parados con
 Control w: podemos realizar búsquedas de cualquier cadena de texto.
 y dentro de control w podemos usar con control t para buscar una línea específica entonces
 Control v: para paginar hacia adelante.
 Control y: para repaginar ósea para ir al principio del documento.
Entonces tenemos que esté editor pico es muy versátil, es muy fácil de manejar, no tiene ninguna
restricción para moverse dentro del buffer de texto que es dónde uno trabaja y es muy común en
distribuciones como Ubuntu.

Editor de texto vi

Save
Bueno, ahora pasamos al editor vi, el editor vi tiene dos modos: un modo de edición y un modo de
línea de comandos él no tiene la edición ahí pura como lo tienen los otros editores y podemos
acceder a esta línea de comandos con:
En este caso estamos presionamos la tecla ESC y escribimos :w + el nombre del archivo que vamos
a grabar y él nos graba como otro archivo lo que tenemos en el bufer.

Navegación dentro del texto en vi


 Tenemos la letra h para ir hacia la derecha
 la letra l para ir hacia la izquierda
 la letra k para bajar de línea en línea en el documento
 y la letra j para ir hacia arriba del documento.

Modo de edición en vi
Entonces una vez tenemos la movilización básica dentro del Vi vamos a pasar a ver sus
caracteristicas.

 la letra g que nos lleva desde el final del documento hasta el principio del documento.
 La letra i nos permite pasar al modo de edición del editor vi, con la letra i activamos el
modo de edición y ya podemos escribir normalmente lo que queremos manejar dentro de
nuestro texto, de lo contrario nos tomaría los comandos de las letras que escribieramos.
 Ahora si nosotros queremos borrar una línea lo hacemos tecleando rápidamente dd
 Ahora si queremos borrar solamente una palabra lo hacemos con dw y nos va a borrar una
sola palabra.
 Para efectuar una búsqueda lo hacemos ESC “:/” sin comillas y la palabra que queremos
buscar y así nos va a llevar hacia dónde está la palabra que estamos buscando.
 Ahora si lo que queremos es cortar y pegar una línea de texto en particular entonces lo
vamos a hacer tecleando rápidamente yy + P qué sería para pegar entonces yy pp y nos pega
rápidamente la línea que queremos pegar y así lo podemos hacer sucesivamente para pegar
la línea varias veces.

Modo línea de comando en vi


Ahora vamos a ver las opciones del modo línea de comando que son las siguientes:

 ESC :w es para grabar.


 ESC :w! + nombre de archivo, nos sobrescribe ya que con la admiración estamos ignorando
que el archivo existe.
 ESC :wq nos sirve para grabar y salirnos del documento.
 ESC :q nos permite editar otra vez el documento que habíamos grabado anteriormente.
 ESC :q! podemos salir ignorando los cambios hechos al archivo así que saldremos sin
guardar las modificaciones.
 ESC :x es lo mismo qué ESC :q guardando los cambios y sale del archivo.
 ESC :x! en este caso sale sin guardar las modificaciones hechas al archivo.
Esta es la forma con la que se trabaja básicamente en el editor VI de Linux.

Editor de texto MC

Save
Pasamos a nuestro editor MC el mc es un acompañante de gestor de comandos de mc para entorno
de texto pasamos al mcedit, el mcedit es un editor de texto un poco mas moderno en este editor
vamos a encontrar que todos se controla básicamente por las teclas de función que son las
siguientes:

 F1 nos saca la ventana de ayuda.


 F2 nos da la opción para guardar no saca el cuadro de diálogo para guardar nosotros
escogemos sí o no queremos guardar.
 F3 es muy importante porque es la que marca el bloque entonces nosotros tecleamos F3 para
marcar y F3 para marcar el final del bloque que queremos.
 F5 podemos copiar el texto que tenemos señalado con los bloque que hemos designado con
F3 y también podemos hacer búsquedas para reemplazar por ejemplo con la tecla F4 nos
sale el diálogo para reemplazar, escribimos en nuestro cuadro de diálogo el origen y el
destino del texto y vamos remplazando con la cajita de diálogo que nos va indicando si
reemplazar cada una de las coincidencias o hacerlo todo de una.
 F6 podemos mover los bloques que designamos con F3 los podemos mover de un lado a
otro del buffer de texto.
 F8 podemos borrar esos bloques entonces hundimos la tecla F8 y borramos el bloque que
habíamos acabado de mover.
 F7 nos sirve para buscar texto dentro del buffer del editor
 F9 como les decía esto es un editor un poco más moderno entonces este editor tiene menú la
tecla F9 nos sirve para sacar el menú de texto de la parte superior y ahí hay muchas
funciones como por ejemplo abrir un archivo, pero no solo eso también tiene otras opciones
en los otros menú desplegable qué podemos ver como copiar, borrar, mover, etc tiene un
menú para buscar, reemplazar ahí está varias opciones que se pueden utilizar también tiene
un menú de utilidades más avanzadas tiene otro menú de formato del párrafo y tiene un
menú para las ventanas para manejar ventanas y otro menú que es para las opciones del
mismo editor para configurar el mismo editor.
 F10 podemos salir del editor él nos preguntará si queremos grabar o no dependiendo si
hemos hecho algún cambio.
Editor de texto JOE

Save
El último editor que quiero enseñarles es el JOE que es tradicional también del entorno de Unix.
Este se maneja con control+k y una letra
Control+k y h no saca la ayuda en pantalla para nosotros podernos mover dentro del editor este
también nos permite movernos libres borrar con la tecla back space, movernos con la espaciadora
sin ningún problema y bueno las funciones básicas de editor son:

 Control+kf podemos buscar un texto en particular.


 Control+kb podemos marcar bloques.
 Control+kk para finalizar.
 Control+kc podemos copiar un bloque marcado.
 Control+kx salimos guardando las modificaciones del archivo editor.
Bueno esto es todo con respecto a los editores, obviamente de forma muy básica, para que no nos
vaya a enredar en la edición de archivos dentro de nuestro sistema operativo Linux, y para que nos
podamos defender en la consola si necesidad de un entorno gráfico.
Hemos repasado uno por uno desde el vi qué es el tradicional en UNIX pasando por el Nano o Pico
que es muy utilizado en Debian y Ubuntu y vimos también alternativamente el mcedit y el Joe que
es muy utilizado también en los entornos antiguos de Unix.
Espero que les haya gustado qué les sea de utilidad esta información que les he dado, estamos
pendientes para la entrega numero 8 del curso no olviden si les gustó suscríbanse por correo, el
formulario esta al pie de pagina, para que puedan estar en la siguiente clase, yo soy efox
desclasificado un enfoque diferente de la tecnología informática hasta el siguiente articulo.
Curso de Linux 8/60 | Shell Script Básico I
Compartir7
Twittear
Compartir
+1
Compartir 7
En nuestra octava clase del Curso de Linux vamos a ver el Shell Script, el Shell Script lo vamos a
ver en 4, clases 2 básicas y 2 avanzadas. En nuestra primera clase de Shell Script básico veremos lo
siguiente:
1. ¿Qué es un Shell Script?
2. Las variables.
3. El entorno de variables.
4. Como se configuran las variables para nuestros Script de Shell.
5. Y las estructuras básicas.
Les adelanto que las estructuras básicas que usaremos son las mismas estructuras que se usan en la
programación, que son la condicional if, el case, el ciclo for, el ciclo while y el ciclo until. Con
estas herramientas vamos a comenzar la parte básica del Shell Script.

¿Qué es un Shell Script?


Antes de definir que es un Shell Script debemos entender que es una Shell. Recordemos que Linux
posee un corazón al que llamamos el Kernel de Linux este corazón por decirlo así esta envuelto por
una concha o en ingles Shell, la Shell de Linux es la que nos permite comunicarnos con el núcleo
del sistema y todas sus herramientas, mediante el uso de comandos.
Ahora que sabemos que es una Shell definamos que es un Script. Normalmente un Script en
Linux es un archivo en texto plano que siempre en su encabezado debe iniciar por #! seguido del
programa a usar para interpretar el script, por ejemplo:

#!/bin/bash para script de bash


#!/bin/sh para script de shell
#!/usr/bin/perl para script de perl
En resumidas cuentas un shell Script es un archivo de texto plano que inicia con #! y estos Scripts
suelen contener una secuencia de comandos que se pueden interpretar en la Shell de Linux, pronto
se darán cuenta de su potencial.

Las variables
Las variables nos dan la capacidad de poder asignar un contenido X a un nombre, y este nombre
ocupara un espacio en la memoria RAM de nuestro ordenador, no se preocupen ya verán lo fácil
que es.
Para definir una variable en la Shell de Linux utilizaremos el comando export veamos su sintaxis.
Sintaxis:

export VARIABLE="Contenido"
Ejemplo:
export VARIABLE="Hola Mundo"
Llamada de la variable:

echo $VARIABLE

¿Como crear un Script en Linux?


Para crear un Shell Script debemos iniciar el editor de texto de nuestra preferencia, para este
ejemplo utilizaremos el editor pico.
1. Estando en la Shell de Linux escribimos pico.
2. Y dentro del editor debemos iniciar con el encabezado propio de una Shell Script en este
caso para un script de bash que seria #!/bin/bash
3. Ahora escribiremos el primer Script de este curso, en la siguiente linea escribimos echo
“Hola mundo”; (no olvidar que al finalizar la linea debemos finalizar con “;”) y guardamos
nuestro script con el nombre de script.sh.
4. Antes de ejecutar el Script necesitamos darle los permisos necesarios con el comando
chmod de la siguiente manera chmod u+x script.sh.
5. Una vez ejecutado vamos a ver que nos imprime el mensaje “hola mundo”.

Argumentos o parámetros posicionales


Dentro de una Shell Script existen lo que se llaman argumentos o parámetros posicionales que son
variables reservadas que se definen de la siguiente manera $1, $2 , $3 y equivalen al parámetro 1, el
parámetro 2 y el parámetro 3.
Sabiendo lo de los paramotros posicionales ahora realizaremos un ejemplo utilizando el Script que
anteriormente creamos. Entonces vamos a imprimir con echo estos 3 parámetros.
Editamos el script pico script.sh y una linea abajo de “Hola mundo” escribimos:

echo $1
echo $2
echo $3

Guardamos los cambios y salimos del editor de texto.


Una vez en la Shell ejecutamos el Script y le agregamos tres parámetros que serán parámetro1,
parámetro2, parámetro3,
./script.sh parametro1 parametro2 parametro3
Como vemos el shell script nos arroga algo parecido a lo siguiente en la salida:
hola mundo
parametro1
parametro2
parametro3
Recordemos que con echo indicamos que parámetro 1, 2 y 3 se imprimieran y como nosotros en la
Shell indicamos script + 3 parámetros entonces obtuvimos como salida el hola mundo y los tres
parametros.

Estructura IF
La estructura condicional en un shell script se define por IF (en español Si o Cuando) y su
funcionamiento es muy sencilla. If evalúa si la condición se cumple o no se cumple, si es verdadera
ejecuta un código, si es falsa, ejecuta otro código o continúa con la ejecución del shell script.
realizamos un ejemplo practico, volvamos a editar nuestra script:
pico script.sh
y ahora modificamos el script de manera que quede de la siguiente manera:
#!/bin/bash
if [ $1 = 1 ];
then
echo "el valor de la variable es (1)"
fi
Importante entre corchete y corchete del if hay que dejar un espacio despues de abrir el corchete y
dejar otro espacio antes de cerrar con corchete por ultimo no olvidar nunca el “;”.
Vamos a ver otra cosa dentro de la estructura if hay un else osea de lo contrario, que pasa si no se
cumple la condición entonces cuando esto pasa esta la estructura else que esta anidada dentro de if
por asi decirlo y vamos a colocar otro mensaje en este caso es () error, el valor de la variable no es
uno y ahí cerramos con el fi, grabamos y ejecutamos
if [ $1 = 1 ];
then
echo "el valor de la variable es (1)"
else
echo "error, el valor de la variable no es uno”;
fi
En este ejemplo donde al script le damos como parametro 1 nos arrojara el texto “el valor de la
variable es (1)” y en caso contrario si le damos un valor que no sea 1 nos arrojara el texto “error, el
valor de la variable no es uno”

Estructura del CASE


Bueno ahora vamos al case, el case también es una condicional pero se da mas en una estructura de
menú, este se abre con case seguido de la variable + in y en la siguiente linea siempre
tabulando una vez se coloca la condicional, que en el ejemplo de abajo, la condicional en el primer
caso es 1, en la siguiente fila y esta vez tabulando 2 veces se escribe la acción que se realizara en
ese caso, y por ultimo cerramos el caso tabulando una vez y escribiendo ;; . una vez terminado el
primer caso ya podemos crear cuantos casos necesitemos y al finalizar el ultimo caso cerramos el
case con esac.
Vamos a ver un ejemplo practico.
case $1 in
1)
echo “el valor es 1”
;;
2)
echo “el valor es 2”
;;
*)
echo “el valor es otro número”
;;
esac

Entonces cuando ejecutamos nuestro script segun el parametro que le demos nos arrojara diferentes
resultados como en la siguiente imagen.

Como podemos observar nuestro script con la estructura case funciona a la perfección.

Los bucles o los ciclos el FOR


Ahora vamos a ver los bucles o los ciclos del for, for es un ciclo que nos permite hacer repetición
con base en un conteo predeterminado.
Para escribir nuestra estructura de FOR, debemos comenzar por for seguido de la variable que va a
hacer de contador, por ejemplo i, luego in y el conteo que deseamos realizar, vamos a poner un
ejemplo de 1 a 10 eso lo vamos a colocar entre comillas simples entonces quedaria de esta
manera ‘seg 1 10’ luego vamos a colocar ; y en una linea más abajo do , en español hacer, y otra
linea más abajo vamos a hacer un echo de la variable contador que es la variable i, quedaria algo así
echo $i cerramos nuestro ciclo for con done, lo grabamos para luego ejecutarlo en la Shell.
Vamos al ejemplo practico
dentro del editor de nuestra preferencia creamos la estructura del for
for i in ‘seg 1 10’;
do
echo $i
done

Lo ejecutamos y ¿que vamos a ver? Vamos a ver que el hiso el ciclo del 1 al 10
1
2
3
4
5
6
7
8
9
10
Ahora editamos el script y vamos a pasarle como parámetro 2 variables una de inicio y otra de
finalización del conteo que serán el $1 y $2. Cuando ejecutamos nuestro Shell Script colocamos 1
10 y va a funcionar de la misma forma porque lo único que hicimos fue remplazar las variables.
for i in ‘seg $1 $2’;
do
echo $i
done

Ahora si le colocamos de como primer parámetro 10 y segundo parámetro 20 nos va a contar de 10


a 20, si le colocamos primer parámetro 1 y segundo parámetro 100 nos va a contar del 1 hasta 100,
si le colocamos como primer parámetro 1 y segundo parámetro 100000 pues el va a ir del 1 hasta
100000 se va a demorar un poco pero lo va a hacer.

El ciclo WHILE
Ahora vamos a ver el ciclo WHILE. El ciclo while se utiliza mucho para los menús ya que el sigue
operando mientras se cumple la condición, también puede funcionar como el for entonces vamos a
establecer una variable i que es igual a 5, una variable x que es igual a 0 la palabra para iniciar la
estructura es while acuérdense que corchetes separados por espacio a lado y lado y le vamos a decir
que x es menor que i entonces mientras x sea menor que i la condición se cumplirá, si es mayor que
i se rompe el ciclo, vamos a colocar un ; y una linea abajo do y luego echo “mayor que 5 para
salir”. Entonces cuando sea mayor que 5 el ciclo se va a romper, mientras sea menor que 5 el ciclo
se va a cumplir, colocamos la función read, read nos va a leer la variable x que es donde vamos a
introducir el número para seguir el ciclo o romper el ciclo.
i=5
x=0

while [ $x -1e $i ];
do
echo "Mayor que 5 para salir"
read x

done

Ejecutamos el script y si colocamos 1, 2, 3 el ciclo no se rompe porque si colocamos 6 el ciclo


whilw se rompe porque el ciclo se mantiene mientras sea menor que 5.

El UNTIL
El UNTIL funciona al contrario, el until mantiene el ciclo mientras sea mayor que i, en el ejemplo
de abajo el ciclo se va a cumplir solamente si es mayor que 5. Osea el ciclo until funciona igual que
el while pero al contrario.
i=5
x=0

until [ $x -le $i ];
do

echo "Menor que 5 para salir”


read x
done

Ejecutamos el script si colocamos un número mayor que 5 nuestro Script va a seguir haciendo el
ciclo pero si colocamos 5 entonces se va a romper.
Bueno esto es todo por esta clase haciendo un resumen vimos el ciclo for, el ciclo while, el ciclo
until, vimos las condicionales if, las condicionales case y también vimos el manejo de las variables
y la configuración de las mismas también vimos como invocarlas desde las líneas de comando
pasándolas como parámetros.
En la próxima clase vamos a ver la utilización practica de todos estos ejemplos en Script que
hagan funciones, que tomen información del sistema operativo para poder llevar acabo algún tipo
de función que nos sirvan en nuestra diaria utilización de nuestro sistema operativo Linux.
No se olviden que en el pie de pagina encontraran el formulario para subscribirse, y así no perderse
ningún capitulo del curso de Linux, ¡los espero en la próxima clase!
Curso de Linux 9/60 |Bash Script Básico II
Compartir3
Twittear
Compartir
+1
Compartir 3
Hoy vamos a ver nuestra novena clase del Curso de Linux es la segunda parte de Shell Script
básico, ya explicamos los siguientes apartados

 Estructuras básicas en Shell Script


 Las condicionales
 los bucles
 El manejo de variables
 Y como pasarlas como parámetros
Esta vez vamos a hacer 2 ejemplos prácticos una en forma de menú y el otro en forma de comando
al cual le pasaremos parámetros para ver la utilización de estas estructuras.
Estructura del menú
Entonces comenzamos, vamos a hacer un archivo llamado menu.sh al cual le vamos a escribir el
encabezado del Shell Scrip en este caso vamos a colocar el interprete que es la Shell bash
1. !#/bin/bash.
2. luego vamos a colocar una variable x a la cual le vamos a asignar el valor 0.
3. Otra variable y a la cual le vamos a asignar el valor 4.
4. Ahora vamos a escribir nuestro ciclo while junto con la condicional [ $x –ls $y ]; recuerden
que los corchetes debe ir separado por un espacio para que no nos de error de sintaxis.
5. Colocamos clear para limpiar la pantalla.
6. Ahora vamos a pintar nuestro menú colocamos un echo para que nos muestre en la primera
procesos que hay en nuestro sistema.
7. En la segunda opción vamos a colocar que nos muestre el espacio en disco que tenemos.
8. En la tercera opción vamos a ver los usuarios que tenemos activos en el sistema o que
están ingresados en el sistema en este momento.
9. En la cuarta opción vamos a colocar la carga que el sistema tiene en este momento.
10. Y en la quinta opción vamos a colocar la opción de salir ósea la opción que rompe
con el ciclo que estamos haciendo.
Colocamos un read para leer la variable x para poder cumplir los casos que vamos a colocar a
continuación.
Entonces dentro del ciclo while abrimos los siguientes casos (case) pero antes que nada un clear
para limpia la pantalla:
En el primer caso e igualmente con los siguientes casos iniciamos con un clear para limpiar la
pantalla luego colocamos ps xa | wc -l que nos cuenta las líneas que nos devuelve el ps
mostrándonos la cantidad de procesos que hay, en la siguiente linea un echo “pulse una tecla para
continuar…….” y por ultimo un read una linea abajo para realizar la lectura en pantalla y cerramos
el primer caso con ;;.

En el segundo caso colocamos df –ph seguido por el mismo mensaje del caso uno y un read
y cerramos el caso 2 con ;;
En el caso 3 vamos a colocar el comando w para ver los usuarios que están ingresados en el sistema
seguido por el mismo mensaje del caso uno y un read y cerramos el caso 3.
Abrimos el caso 4 que seria para la carga del sistema limpiamos la pantalla ahora colocamos un
uptime para que nos muestre tanto lo que lleva arriba el sistema como la carga que tiene en el
momento, pegamos lo que tienen los otros casos y cerramos,
En el ultimo caso *) el caso donde no sera ninguno de los anteriores colocamos clear para que nos
limpie la pantalla entonces aquí terminamos el caso lo cerramos y nos disponemos a cerrar la
estructura con esac que es case al revés.
Una vez terminado el Script quedaría de la siguiente forma:
!#/bin/bash

x=0
y=4

while [ $x –ls $y ];
do

clear

echo “1. Numero de procesos”


echo “2. Espacio en disco”
echo “3. Usuarios Activos”
echo “4. Carga del Sistema”
echo “5. Salir”

read x

case $x in

1)
clear
ps xa | wc -l
echo “pulse una tecla para continuar…….”
read
;;

2)
clear
df –ph
echo “pulse una tecla para continuar...”
read
;;

3)
clear
w
echo “pulse una tecla para continuar...”
read
;;

4)
clear
update
echo “pulse una tecla para continuar...”
read
;;

*)
clear
;;

esac

done

Ahora vamos a la línea de comando y ejecutamos nuestro comando menú (./menú.sh) y nos va
amostrar las opciones.

Estructura de comando
Ahora vamos a ver el caso del comando por parámetros, entonces vamos a crear un archivo que se
llame mostrar.sh al crear mostrar.sh obviamente le vamos a iniciar el encabezado que le indica al
interprete que es un bash script y vamos a utilizar la estructura if de la siguiente forma.
if [ ];
then
Una vez tenemos muestro esqueleto de la estructura vamos a crear las condiciones
1. Primera condición será [ $1 == “-p” ]; seguido de then y ejecutará el comando ps xa | wc –l
esta condición nos mostrará la cantidad de procesos activos en el sistema.
2. La segunda condición será [ $1 == “-e” ]; seguido de then y el comando df –ph esta
condición nos mostrará el espacio en disco.
3. En el tercer caso colocaremos el comando w y la condición será [ $1 == “-u” ]; esta
condición nos mostrara los usuarios activos actualmente en el sistema.
4. Por ultimo en la siguiente condición será [ $1 == “-c” ] para que nos muestre la carga del
sistema actualmente y le vamos a colocar el comando uptime que nos muestran estos datos.
Luego vamos a hacer una pequeña ayuda como la tienen los comandos por lo general vamos a
colocar un –h que nos va a imprimir la ayuda y vamos a hacer una pequeña ayuda a punta de echos,
y quedará de la siguiente manera:
echo “Mostrar estadísticas del sistema Version 0.0.1”
echo “”
echo “Ayuda:”
echo “-p Cantidad de procesos ”
echo “-e Espacio en disco”
echo “-u Usuarios de sistema”
echo “-c Carga del Sistema ”
echo “-h Muestra esta ayuda”
finalmente el script completo quedará de la siguiente manera:
!#/bin/bash

if [ $1 == “-p” ];
then

ps xa | wc -l

fi

if [ $1 == “-e” ];
then

df -ph

fi

if [ $1 == “-u” ];
then

fi

if [ $1 == “-c” ];
then

uptime

fi

if [ $1 == “-h” ];
then

echo “Mostrar estadísticas del sistema Version 0.0.1”


echo “”
echo “Ayuda:”
echo “-p Cantidad de procesos ”
echo “-e Espacio en disco”
echo “-u Usuarios de sistema”
echo “Carga del Sistema ”
echo “-h Muestra esta ayuda”

fi

Recordemos que siempre que terminemos de editar un script debemos de darle los permisos de
ejecución con chmod u+x y el archivo.
Ahora vamos a la línea de comando y ejecutamos nuestro comando menú (./mostrar.sh -h) y nos va
amostrar las opciones.

Con esto vemos la utilización de algunas de las estructuras que vimos en el capitulo Shell Script
Básico I y su utilización en la practica, en las próximas 2 clases vamos a ver funciones mas
avanzadas para Shell Script que van a hacer que nuestros Scripts sean más potentes y vamos a ver
más aplicaciones para poder sacarle jugo al sistema operativo por medio de los Scrip de Shell.

 Vamos avanzando más en nuestro curso ya que:


 manejamos nuestro sistema operativo de forma básica.
 manejamos comando
 ya entendemos como es él sistema operativo a nivel del interprete de comandos
 y ahora estamos potencializando ese conocimiento aprendiendo Shell Scrip para poder
hacer nuestras propias soluciones dentro de nuestro sistema operativo.
Esta es la potencia que tienen los sistemas operativos abiertos y los sistemas operativos basados en
UNIX y por ende en nuestro sistema operativo Linux entonces espero que esto haya sido de su
agrado no olviden subscribirse por correo electrónico en el pie de pagina, y si les gusto los espero la
próxima clase.
Curso de Linux 10/60 | Bash Script Avanzado I
Compartir2
Twittear
Compartir
+1
Compartir 2
Esta ya es nuestra décima clase en nuestro Curso de Linux, esta vez vamos a ver Bash Script
avanzado lo vamos a ver en 2 etapas:
1. Operadores.
2. Arreglos o arrays.
3. Funciones.
4. La asignación de comandos.
la asignación del resultados de comandos a una variable y vamos a combinar eso con el comando
awk para hacer filtrado de salidas al estándar ouput y utilizar esos datos para asignarlos a una
variable. Entonces comencemos

OPERADORES NUMERICOS
 -eq Igual que.
 -ge Mayor o igual que.
 -gt Mayor que.
 -le Menor o igual que.
 -lt Menor que.
 -ne Distinto que.
Bueno vamos a comenzar por los operadores, los operadores que vamos a ver son los
matemáticos, creamos un archivo if.sh le colocamos el encabezado y vamos a utilizar la estructura
if porque es la que mejor nos puede ilustrar los operadores, vamos a pasarle parámetros, vamos a
utilizar $1 y $2 para comparar, el primero que vamos a utilizar es el:
Igual que, que es -eq entonces colocamos echo que nos muestre si se cumple y le agregamos los
permisos de ejecución , una ves le agregamos los permisos de ejecución pues hacemos la
comparación si es igual coloca el mensaje, si no es igual pues no coloca el mensaje y el código será
el siguiente.

EJEMPLO IGUAL QUE


#!/bin/bash
if [ $1 -eq $2 ];
then
echo “hola”
fi

EJEMPLO mayor o igual que


Entonces ahora vamos a modificar nuestro script para ver el operador mayor o igual que que es –
ge comparamos si es igual nos da, si es mayor que nos da y si no es igual o mayor que no nos da
ejemplo:
#!/bin/bash
if [ $1 -ge $2 ];
then
echo “hola”
fi

EJEMPLO mayor que


Ahora vamos con el mayor que modificamos la condición y ahora agregamos –gt asi que, si es
mayor que nos da si es menor que no nos da y si es igual tampoco nos da.
#!/bin/bash
if [ $1 -gt $2 ];
then
echo “hola”
fi

EJEMPLO menor o igual que


Vamos a seguir con el menor o igual que, es -le entonces vemos si es igual nos da si es menor nos
da pero si es mayor que no nos da.
#!/bin/bash
if [ $1 –le $2 ];
then
echo “hola”
fi
EJEMPLO menor que
Entonces seguimos con el ejemplo menor que es -lt y aquí vemos en los ejemplos que si es igual
no nos da, si es mayor no nos da pero si es menor si nos da.
#!/bin/bash
if [ $1 –lt $2 ];
then
echo “hola”
fi

EJEMPLO distinto que


Vamos a ver el distinto que es –ne entonces si es igual no nos da pero si es distinto nos imprime
hola no importa que sea mayor o menor lo que importa es que sea distinto.
#!/bin/bash
if [ $1 -ne $2 ];
then
echo “hola”
fi

OPERADORES DE CADENA
 = Iguales
 != Diferentes
 -n Con longitud mayor que 0
 -z Con longitud igual a 0 o vacío

EJEMPLO igual que


Los operadores de cadena, ya no vamos a comparar números si no que vamos a comparar cadenas,
el primero operador es igual =, vamos a ejecutar nuestro comando le vamos a dar abc como primer
parámetro y abc como segundo parámetro, como son iguales nos imprime hola, pero si no son
iguales no imprimirá en pantalla hola.
#!/bin/bash
if [ $1 = $2 ];
then
echo “hola”
fi

EJEMPLO diferentes
La diferencia != es lo inverso a igual que si damos como parámetros abc y xyz nos da porque es
diferente, pero si damos abc abc no imprimirá hola porque es igual.
#!/bin/bash
if [ $1 != $2 ];
then
echo “hola”
fi
EJEMPLO con longitud mayor que 0
Vamos a medir si la cadena viene vacía o no entonces primero con –n vamos a ver que la cadena
tenga un contenido entonces colocamos una variable que se llama cadena con un contenido y vamos
a decirle al operador que nos verifique si esa cadena tiene un contenido, ejecutamos nuestro script y
automáticamente nos muestra el mesaje hola
#!/bin/bash
cadena=’j’
if [ -n $cadena ];
then
echo “hola”
fi

EJEMPLO con longitud igual a 0 o vacio


También hay un operador para que venga vacío que es –z con -z vamos a ver que ahora que la
variable cadena esta vacía se nos va a cumplir porque la variable viene vacía.
#!/bin/bash
cadena=’’
if [ -z $cadena ];
then
echo “hola”
fi

OPERADORES DE ARCHIVO
 -d es un directorio
 -e existe el fichero
 -f es un fichero ordinario
 -r es leíble
 -s es no vacío
 -w es escribible
 -x es ejecutable
 -o eres el dueño del fichero
 -G el grupo del fichero es igual al tuyo
 -nt fichero1 es mas reciente que fichero2
 -ot fichero1 es mas antiguo que fichero2
Ahora vamos a ver los operadores de archivo primero vamos a verificar si un archivo es directorio,
vemos que al correrlo nos muestra que es un directorio vamos a borrar esta partecita que nos
sobraba (cadena=’ ’) y vamos a verificar si no es un directorio entonces como este es un archivo
regular como vamos a ver aquí en el ls primero vamos a ver prueba_if que es un directorio y
prueba_if2 es un archivo regular, por eso en la primera prueba nos dio que era un directorio y en la
segunda no nos dio porque era un archivo regular.
EJEMPLO es un directorio (prueba1)
#!/bin/bash
if [ -d ./prueba_if ];
then
echo “hola”
fi

EJEMPLO es un directorio (prueba2)


#!/bin/bash
if [ -d ./prueba_if2 ];
then
echo “hola”
fi
Ahora vamos a ver si el archivo existe vamos a hacerlo sobre prueba_if2 que es un archivo que
existe, por eso se cumple la condicional.

EJEMPLO existe el fichero


#!/bin/bash
if [ -e ./prueba_if2 ];
then
echo “hola”
fi
pero vamos a colocarle digamos if que es un directorio que también existe, ifd que no existe porque
no es un archivo dentro del sistema de archivos.
Luego esta el parámetro –f es si es un archivo ordinario entonces esto nos ayuda a ver si es un
archivo o un directorio ósea a diferencia del directorio que vimos primero, a ver si es un archivo
regular esto lo hacemos con el operador -f

EJEMPLO es un fichero ordinario


#!/bin/bash
if [ -f ./prueba_if2 ];
then
echo “hola”
fi
Ahora vamos a ver otro operador que es –r que es si el archivo se puede leer entonces lo colocamos

EJEMPLO es leible
#!/bin/bash
if [ -r ./prueba ];
then
echo “hola”
fi
Lo ejecutamos y el archivo prueba nos dice que no se puede leer, Porque no se puede leer? Porque
es de root y no tiene absolutamente ningún permiso, estamos como el usuario fox pero entonces si
le colocamos prueba_if2 si nos lo va poder leer entonces si se cumple la condicional.
#!/bin/bash
if [ -r./prueba_if2 ];
then
echo “hola”
fi
Con w vemos que el archivo es escribible entonces verificamos los permisos y vemos que se
cumple la variable porque el archivo es escribible

EJEMPLO es escribible
#!/bin/bash
if [ -w./prueba_if2 ];
then
echo “hola”
fi
Luego vamos a ver si el archivo es ejecutable y efectivamente se cumple cuando es ejecutable

EJEMPLO es ejecutable
#!/bin/bash
if [ -x./prueba_if2 ];
then
echo “hola”
fi
y si lo hacemos con ./prueba_if3 pues que no es ejecutable pues no se cumple la condicional.
Ahora vamos a verificar si el archivo pertenece a quien esta ejecutando el scrip con el operador –o,
aquí vemos que se cumple porque el usuario es fox, si nosotros ejecutamos por ejemplo sobre
./prueba que pertenece a root pues entonces no se va a cumplir la condicional porque ./prueba no
pertenece a fox que es el usuario que lo esta ejecutando

EJEMPLO Eres el dueno del fichero


#!/bin/bash
if [ -o./prueba_if3 ];
then
echo “hola”
fi
Después vamos a verificar el grupo con –G (mayúscula) sobre ./prueba no es nuestro grupo porque
es el grupo root pero si lo colocamos sobre ./prueba_if3 vamos a poder validarlo porque si
pertenece al grupo fox que es nuestro usuario
EJEMPLO el grupo del fichero es igual al tuyo
#!/bin/bash
if [ -G./prueba_if3 ];
then
echo “hola”
fi
Ahora vamos a utilizar el operador –nt que es para ver si el fichero es mas reciente que otro fichero,
entonces vamos a comparar si ./prueba_if3 es mas reciente que ./prueba_if2 entonces le colocamos
el archivo –nt y el otro archivo con el que vamos a comparar, cuando hacemos la comparación se
cumple porque ./prueba_if3 es mas nueva que ./prueba_if2

EJEMPLO fichero1 es mas reciente que fichero 2


#!/bin/bash
if [ ./prueba_if3 –nt ./prueba_if2 ];
then
echo “hola”
fi
con –ot hacemos lo contrario entonces no se cumple porque es mas antiguo pero si invertimos el
orden de los archivos pues nos va a dar porque ./prueba_if2 es mas antiguo que ./prueba_if3

EJEMPLO fichero1 es mas antiguo que fichero 2


#!/bin/bash
if [ ./prueba_if2–ot ./prueba_if3 ];
then
echo “hola”
fi

OPERADORES BOLEANOS
! Negacion
-a and
-o or
Los operadores boléanos funcional de la siguiente forma vamos a crear 4 parámetros con $1 $2 $3
$4 y a ellos le vamos a colocar la comparación de equivalencia numérica entonces primero vamos a
ver el operador and (-a) ósea el y para que se cumpla la equivalencia del $1 $2 y el $3 $4

EJEMPLO and
#!/bin/bash
if [ $1 -eq $2 -a $3 -eq $4 ];
then
echo “hola”
fi
Entonces grabamos nuestro Scrip y lo ejecútanos como lo vamos a ejecutar? Pues teniendo 2
igualdades, entonces vamos a colocar 1 1 como parámetros $1 $2 y luego 2 2 como parámetros $3
$4 y se nos cumple cuando cambiamos un parámetro pues entonces no se nos cumple porque and (-
a) obliga a que las 2 condicionales se cumplan para poder cumplir la otra condicional.
Ya cuando pasamos al or (-o) se puede cumplir o una o la otra si nosotros volvemos y hacemos el
ejemplo y pasamos 1 1 2 2 se cumple una o la otra porque las 2 son iguales, luego 1 1 2 3 se cumple
una de ellas por eso también se cumple la condicional pero si colocamos 1 3 2 3 no se cumple
ninguna de las 2 igualdades entonces no nos muestra el aviso hola

EJEMPLO or
#!/bin/bash
if [ $1 -eq $2 -o $3 -eq $4 ];
then
echo “hola”
fi

OPERADORES ARITMETICOS
+ Suma
-Resta
\* Multiplicación
/ División
Después siguen los operadores aritméticos son con los que podemos hacer operaciones para esto se
utiliza el comando expr y vamos a hace primero una suma 20+30

EJEMPLO suma
#!/bin/bash
expr 20 + 30
ejecutamos nuestro Scrip obviamente nos da 50. Luego vamos a hacer una resta entonces le
restamos a 30 20

EJEMPLO suma
#!/bin/bash
expr 30 - 20
guardamos nuestro Scrip , lo ejecutamos nos va dar 10. Vamos con la multiplicación el de la
multiplicación es el * colocamos 30*20 guardamos pero aquí hay una cosa si nostros ejecutamos
nuestro Scrip va a presentar un error de sintaxis porque se tiene que colocar una contra barra, contra
slash para que para que el asterisco funcione

EJEMPLO multiplicacion
#!/bin/bash
expr 30 \* 20
Así ya nos da la multiplicación bien. Ahorita vamos a ser la división se hace con la barra normal
ósea el slash si dividimos 30 entre 20
EJEMPLO División
#!/bin/bash
expr 30 / 20
pues nos va a dar 1.25 pero el sistema redondea a 1 si tiene alguna duda pues entonces colocan 40
/20

EJEMPLO Division 2
#!/bin/bash
expr 40 / 20
esto nos va a dar 2. Con esto terminamos la parte de los operadores y entramos en la parte de los
arreglos.

ARREGLOS
Los arreglos son variables que tienen varios datos dentro, no solo tienen un dato sino que tienen
varios datos. Entonces comenzamos nuestro Scrip con el encabezado que ya sabemos al interprete
de la bash vamos a declarar nuestra variable que va a ser una variable llamada frutas y dentro va
tener varios datos como en una especie de casilleros, eso se llama arreglo vamos a colocar en la
posición 1 la fruta limón luego vamos a copiar idéntico la sintaxis de la array vamos a replicarla
otros 4 espacios mas y vamos a poner las demás frutas manzana, platano, naranja y pera, luego
vamos a nombrar cada una de las casillitas le vamos a colocar el numero que sigue
#!/bin/bash
frutas [0] =’limon’
frutas [1] =’manzana ’
frutas [2] =’platano’
frutas [3] =’naranja’
frutas [4] =’pera’
Aquí ya tenemos nuestro arreglo completo y podemos pasar ahora como se imprime, con un echo si
nosotros queremos imprimir una casilla en particular pues colocamos el símbolo de pesos llaves
luego el nombre de la variable y entre corchetes la posición en el arreglo
#!/bin/bash
frutas [0] =’limon’
frutas [1] =’manzana ’
frutas [2] =’platano’
frutas [3] =’naranja’
frutas [4] =’pera’
echo ${frutas[1]}
Entonces grabamos nuestro Scrip, le colocamos los permisos de ejecución lo ejecutamos y nos va
amostrar la posición donde esta fruta manzana si nosotros cambiamos el numero digamos por el
numero 4 entonces nos va a imprimir pera.
Que pasa si queremos verlos todos entonces colocamos @ dentro de la casilla y nos va a mostrar
todo el contenido del arreglo
#!/bin/bash
frutas [0] =’limon’
frutas [1] =’manzana ’
frutas [2] =’platano’
frutas [3] =’naranja’
frutas [4] =’pera’
echo ${frutas[@]}
Entonces ya queda un poquito claro que es una variable tipo arreglo, pero hay otra forma de
declarar las variables tipo arreglo con declare –a abre paréntesis y cada uno de los datos que están
relacionados al arreglo se colocan entre comillas separadas por espacio, comilla simples entonces
hacemos lo mismo limón manzana, platano, pera, naranja vez tenemos colocados nuestros datos del
arreglo procedemos a asignarle la variable frutas
#!/bin/bash
declare –a frutas=(‘limon’ ‘manzana’ ‘platano’ ‘pera’);
echo ${frutas[@]}
Ahora grabamos y ejecutamos nuestro arreglo que nos muestra limón manzana bueno todos los
miembros del arreglo si nosotros otra vez colocamos la posición del arreglo entonces nos va
amostrar cada uno de los diferentes datos en las diferentes posiciones del arreglo ,como habíamos
echo en la primera forma.

FUNCIONES
Una vez terminamos con los arreglos vamos a hablar de las funciones, las funciones son pedazos de
código que se pueden reutilizar dentro de nuestro código entonces como lo hacemos? Lo hacemos
con function damos el nombre de la función abrimos llaves colocamos lo que va hacer esa función y
luego cerramos llaves, en este caso vamos a colocar el comando crear,
#!/bin/bash
function limpiar {
clear
}
vamos a declarar otra función que se llama n_procesos y dentro de n_procesos vamos a colocar ps
xa | wc que es Word count -l que es cuenta el numero de líneas y así vamos a saber la cantidad de
procesos que están corriendo en el momento
function n_procesos {
ps xa | wc -l
}
de la misma forma que lo hicimos arriba, vamos a declarar otra función que se va a llamar suma con
la cual vamos a sumar 2 números como hicimos con en la parte de los operadores aritméticos
entonces vamos a poner expr 10 + 10
function suma {
expr 10+10
}
entonces ahora vamos a llamar la primera función que es limpiar ejecutamos enteste caso no
pasamos parámetro y nos limpio la pantalla
#!/bin/bash
function limpiar {
clear
}

function n_procesos {
ps xa | wc -l
}
function suma {
expr 10+10
}
limpiar
Ahora vamos a quitar este limpiar y colocamos n_procesos, cuando ejecutamos n_procesos nos va a
mostrar el numero de procesos que están corriendo que es 183
#!/bin/bash
function limpiar {
clear
}
function n_procesos {
ps xa | wc -l
}
function suma {
expr 10+10
}
n_procesos
Luego vamos a borrar n_procesos y colocamos suma, cuando colocamos suma guardamos y
ejecutamos el scrip nos trajo la suma 10+10 que teníamos en función
#!/bin/bash
function limpiar {
clear
}
function n_procesos {
ps xa | wc -l
}

function suma {
expr 10+10
}
suma
Si queremos las podemos llamar todas , entonces colocamos la función limpiar como la función
n_procesos y la función suma una debajo de la otra y cuando lo ejecutemos vamos a ver que las 3
funciones se ejecutaron una detrás de la otra
#!/bin/bash
function limpiar {
clear
}
function n_procesos {
ps xa | wc -l
}
function suma {
expr 10+10
}
limpiar
n_procesos
suma
Entonces guardamos nuestro archivo, ejecutamos y limpio , 183 procesos y 20 que es la suma de
10+10

ASIGNACIÓN
Ahora vamos a ver la asignación, nosotros podemos ejecutar comandos y el resultado de esa
ejecución la podemos asignar a una variable, entonces vamos a ver el ejemplo que hemos echo
durante todas estas clases que es la de contar los procesos con ps xa | wc –l entonces el numero se
lo vamos a agregar a la variable procesos, entonces el comando se ejecuta y el resultado se le asigna
a procesos y echo mostrará el contenido de la variable que va a ser el numero de procesos que están
en ejecución actualmente.
#!bin/bash
procesos=$(ps xa | wc -l)
echo $procesos
entonces guardamos, vamos a darle los permisos de ejecución, siempre se le debe dar los permisos
de ejecución para que funcione el scrip (chmod u+x asignacion.sh) y ejecutamos el Scrip
asignación y nos va a dar como resultado 184 procesos que están corriendo.
También lo podemos hacer con otros comandos digamos que vamos a contar el numero de archivos
que hay donde estamos parados con ls –l
#!bin/bash
procesos=$(ls -l | wc -l)
echo $procesos
Ejecutamos el script y nos dará el número de archivos que hay en la ubicación actual. Esto es muy
potente si nosotros lo combinamos con otro comandito. Entonces primero vamos a ver un archivo
que es el archivo donde están los usuarios (root@ubuntu-virtual:~# cat /etc/passwd) del sistema
linux , vemos que es un archivo que esta separado por carácter : entonces vamos a tratarlo, vemos
que esta el usuario una x y el id del usuario, vamos a utilizar el comando awk. El comando awk con
el parámetro menos –F (mayúscula) nos va diferenciar cual es el separador que va a ir entre
comillas dobles entonces colocamos el : que es nuestro separador , luego dentro de comillas simples
y dentro de llaves vamos a colocar la palabra print y una variable, el va comenzar a contar las
columnas 1 2 3 4 entonces la primera columna seria la columna 1 que seria la del usuario, entonces
vamos a darle cat /etc/passwd y por medio de la tuberia vamos a pasarle la salida a la awk para que
nos filtre y nos separe por los 2 puntos (:)
root@ubuntu-virtual:~#awk -F “:” ‘{print $1}’
^c
root@ubuntu-virtual:~# cat /etc/passwd | awk -F “:” ‘{print $1}’
Entonces aquí ya tenemos que la primera columna que es el $1 es la columna del usuario, si le
ponemos $2 es donde estaba la x y si le colocamos $3 ya nos da el id de los usuarios que estan en el
passwd entonces esto lo vamos a meter dentro de un scrip se lo vamos a metre dentro a una variable
para utilizarlo
root@ubuntu-virtual:~# cat /etc/passwd | awk -F “:” ‘{print $3}’
Entonces editamos nuestro scrip asignacion.sh colocamos nuestro comando luego colocamos un
filtro adicional con el grep que ya habiamos visto en las clases pasadas y cvamos a buscar el usuario
fox para que nos de unicamente el id del usuario fox porque ya nos habia mostrado los de todos los
usuarios, con esto vamos a ver el usuario fox le vamos a cambiar el nombre de las variables que se
llame foxid
#!bin/bash
foxid=$’( cat /etc/passwd | grep fox | awk -F “:” ‘{print $3}’)’
echo $foxid
con esto vamo a grabar nuestro scrip y ejecutarlo y ahí no da el id de nuestro usuario fox, si
nosotros por ejemplo editamos el archivo y le colocamos el usuario root entonces cuando
ejecutemos nuestro scrip pues nos va adar el id 0 que es el id del root
bueno espero que les aya gustado la clase, cara resumir vimos operadores tanto numéricos como de
carácter operadores lógicos operadores de archivo y también vimos operadores aritmeticos, vimos
como se declaran las variables de tipo arreglo vimos tambien como crear una funcion también
vimos como asignar el resultado de un comando a una variable y acerlo también con el filtrado por
medio de awk, la próxima clase vamos haber como utilizar esto de forma practica en ejemplos un
poco mas complejos .
Curso Linux 11/60 | Bash Script Avanzado II
Compartir5
Twittear
Compartir
+1
Compartir 5
Dentro del curso de Linux se explico lo que es Bash Script y se dividió en 4 capítulos, siendo este
el ultimo de esta sección donde tendrás la oportunidad de aplicar el conocimiento adquirido en las
lecciones anteriores de Bash Script. veras las estructuras básicas de:
1. El if.
2. El for.
3. El while.
4. El case.
5. La asignación de comandos a variables.
6. Los arreglos.
7. Y la aplicación de varios arreglos.
En este ejercicio crearas un Bash Script con las siguientes partes:
1. Crearas una función de nombre userContainer que contenga un arreglo con los usuarios del
sistema.
2. Una segunda función de nombre putColors que te permita imprimir el contenido en un
determinado color
3. Un menú con el comando case que te permita mostrar lo siguiente:
1. Usuarios del sistema.
2. Porcentaje del Disco Duro.
3. Tamaño utilizado de tu /home.
4. Cantidad de procesos que están corriendo en actualmente en el sistema.
5. y una opción que te permita salir del Script.
¿Lo vez complicado? tranquilo que te lo explico en el vídeo todo paso a paso.
Anterior mente ya explicamos que todo Shell Script debe tener un encabezado ¿te acuerdas cual es
el encabezado de todo Bash Script? exacto es: #!/bin/bash
Bueno entonces vamos a crear un documento con nano de nombre programa.sh y vamos a comenzar
por elaborar el encabezado de nuestro archivo de Shell Script como siempre colocamos #!/bin/bash

Crea tu primer Script


A fin de que comprendas mejor el material te animamos a que escribas el Bash Script desde cero,
recuerda que hay que respetar la tabulación y las mayúsculas y minúsculas a fin de que tu Script
funcione correctamente.
#
# declara la función userContainer
#
function userContainer()
{vari=$ |cat /etc/passwd | awk -F ":" '{print $1}';
counter=0
for t in $vari;
do
users[$counter]=$t
counter=$(expr $counter + 1);
done
putColor red ${users[$1]}
}
#
# declara la función putColors
#
function putColors() {
if [ $1 = “red” ];
then
red='\33[0;31m'
noc='\33[0m'
echo –e ${red} $2 ${noc}
fi
if [ $1 = “blue” ];
then
blue='\33[0;34m'
noc='\33[0m'
echo –e ${blue} $2 ${noc}
fi
if [ $1 = “yellow” ];
then
yellow='\33[0;33m'
noc='\33[0m'
echo –e ${yellow} $2 ${noc}
fi
if [ $1 = “green” ];
then
green='\33[0;32m'
noc='\33[0m'
echo –e ${green} $2 ${noc}
fi
if [ $1 = “cyan” ];
then
cyan='\33[0;36m'
noc='\33[0m'
echo –e ${cyan} $2 ${noc}
fi
if [ $1 = “magenta” ];
then
magenta='\33[0;35m'
noc='\33[0m'
echo –e ${magenta} $2 ${noc}
fi
}
readVar=0
clear
#
# dentro del ciclo while anida el menú a mostrar en pantalla.
#
while [ $readVar –le 4 ];
do
echo "Introduzca un numero"
putColors red "1. Línea del usuario"
putColors green "2. Porcentaje de disco"
putColors magenta "3. Tamaño de tu home"
putColors yellow "4. Cantidad de procesos"
putColors cyan "5. Salir"
echo –n "Introduzca un valor: "
readVar"
clear"
#
# Mediante case le indicas al Script que hacer en cada caso.
#
case $readVar in
1)
clear
putColors cyan "Introduzca la posición del arreglo"
read linea
clear
echo –n "El usuario en esa posición es: "
userContainer $linea
putColors cyan "Presiones una tecla para continuar ..."
read
clear
;;
2)
clear
porcen=$(df –Ph | grep sda1 | awk –F " " '{print $5}');
putColors green $porcen
putColors cyan "Presiones una tecla para continuar ..."
read
clear
;;
3)
clear
espacio=$(du –sh $HOME);
putColors yellow $espacio
putColors cyan "Presiones una tecla para continuar ..."
read
clear
;;
4)
clear
procesos=$(pa xau | grep #USER | wc -l);
putColors magenta $procesos
putColors cyan “Presiones una tecla para continuar ...”
read
clear
;;
*)
exit
;;
esac

Una vez tengas listo tu script lo guardas y lo ejecutas, no sin antes colocarle los permisos de
ejecución:
chmod +x programa.sh
Ahora con ./ lo ejecutas:
./programa.sh
Si todo ha salido bien veras un menú como el siguiente:

Repaso de la sección Bash Script


Para recapitular, en la sección de Shell Script vimos:

 Shell Script básico 1: vimos lo variables, entorno de variables y estructuras básicas.


 Shell Script básico 2: vimos condiciones, manejo de variables entre otros.
 Shell Script avanzado 1: vimos operadores, funciones, arreglos y como asignar comandos a
variables ósea como asignar el resultados de los comando a una variable.
 Shell Script avanzado 2: vimos la aplicación del 90% de lo que aprendimos en las clases
pasadas con ejecución de comandos, con utilización de arreglos y la utilización de las
estructures case que ya habíamos visto.
Curso Linux 11/60 | Bash Script Avanzado II
Compartir5
Twittear
Compartir
+1
Compartir 5
Dentro del curso de Linux se explico lo que es Bash Script y se dividió en 4 capítulos, siendo este
el ultimo de esta sección donde tendrás la oportunidad de aplicar el conocimiento adquirido en las
lecciones anteriores de Bash Script. veras las estructuras básicas de:
1. El if.
2. El for.
3. El while.
4. El case.
5. La asignación de comandos a variables.
6. Los arreglos.
7. Y la aplicación de varios arreglos.
En este ejercicio crearas un Bash Script con las siguientes partes:
1. Crearas una función de nombre userContainer que contenga un arreglo con los usuarios del
sistema.
2. Una segunda función de nombre putColors que te permita imprimir el contenido en un
determinado color
3. Un menú con el comando case que te permita mostrar lo siguiente:
1. Usuarios del sistema.
2. Porcentaje del Disco Duro.
3. Tamaño utilizado de tu /home.
4. Cantidad de procesos que están corriendo en actualmente en el sistema.
5. y una opción que te permita salir del Script.
¿Lo vez complicado? tranquilo que te lo explico en el vídeo todo paso a paso.
Anterior mente ya explicamos que todo Shell Script debe tener un encabezado ¿te acuerdas cual es
el encabezado de todo Bash Script? exacto es: #!/bin/bash
Bueno entonces vamos a crear un documento con nano de nombre programa.sh y vamos a comenzar
por elaborar el encabezado de nuestro archivo de Shell Script como siempre colocamos #!/bin/bash

Crea tu primer Script


A fin de que comprendas mejor el material te animamos a que escribas el Bash Script desde cero,
recuerda que hay que respetar la tabulación y las mayúsculas y minúsculas a fin de que tu Script
funcione correctamente.
#
# declara la función userContainer
#
function userContainer()
{vari=$ |cat /etc/passwd | awk -F ":" '{print $1}';
counter=0
for t in $vari;
do
users[$counter]=$t
counter=$(expr $counter + 1);
done
putColor red ${users[$1]}
}
#
# declara la función putColors
#
function putColors() {
if [ $1 = “red” ];
then
red='\33[0;31m'
noc='\33[0m'
echo –e ${red} $2 ${noc}
fi
if [ $1 = “blue” ];
then
blue='\33[0;34m'
noc='\33[0m'
echo –e ${blue} $2 ${noc}
fi
if [ $1 = “yellow” ];
then
yellow='\33[0;33m'
noc='\33[0m'
echo –e ${yellow} $2 ${noc}
fi
if [ $1 = “green” ];
then
green='\33[0;32m'
noc='\33[0m'
echo –e ${green} $2 ${noc}
fi
if [ $1 = “cyan” ];
then
cyan='\33[0;36m'
noc='\33[0m'
echo –e ${cyan} $2 ${noc}
fi
if [ $1 = “magenta” ];
then
magenta='\33[0;35m'
noc='\33[0m'
echo –e ${magenta} $2 ${noc}
fi
}
readVar=0
clear
#
# dentro del ciclo while anida el menú a mostrar en pantalla.
#
while [ $readVar –le 4 ];
do
echo "Introduzca un numero"
putColors red "1. Línea del usuario"
putColors green "2. Porcentaje de disco"
putColors magenta "3. Tamaño de tu home"
putColors yellow "4. Cantidad de procesos"
putColors cyan "5. Salir"
echo –n "Introduzca un valor: "
readVar"
clear"
#
# Mediante case le indicas al Script que hacer en cada caso.
#
case $readVar in
1)
clear
putColors cyan "Introduzca la posición del arreglo"
read linea
clear
echo –n "El usuario en esa posición es: "
userContainer $linea
putColors cyan "Presiones una tecla para continuar ..."
read
clear
;;
2)
clear
porcen=$(df –Ph | grep sda1 | awk –F " " '{print $5}');
putColors green $porcen
putColors cyan "Presiones una tecla para continuar ..."
read
clear
;;
3)
clear
espacio=$(du –sh $HOME);
putColors yellow $espacio
putColors cyan "Presiones una tecla para continuar ..."
read
clear
;;
4)
clear
procesos=$(pa xau | grep #USER | wc -l);
putColors magenta $procesos
putColors cyan “Presiones una tecla para continuar ...”
read
clear
;;
*)
exit
;;
esac

Una vez tengas listo tu script lo guardas y lo ejecutas, no sin antes colocarle los permisos de
ejecución:
chmod +x programa.sh
Ahora con ./ lo ejecutas:
./programa.sh
Si todo ha salido bien veras un menú como el siguiente:

Repaso de la sección Bash Script


Para recapitular, en la sección de Shell Script vimos:

 Shell Script básico 1: vimos lo variables, entorno de variables y estructuras básicas.


 Shell Script básico 2: vimos condiciones, manejo de variables entre otros.
 Shell Script avanzado 1: vimos operadores, funciones, arreglos y como asignar comandos a
variables ósea como asignar el resultados de los comando a una variable.
 Shell Script avanzado 2: vimos la aplicación del 90% de lo que aprendimos en las clases
pasadas con ejecución de comandos, con utilización de arreglos y la utilización de las
estructures case que ya habíamos visto.
Curso de Linux 13/60 – Automatización de
Tareas | cron y at
Compartir11
Twittear
Compartir
+1
Compartir 11
Esta es nuestra clase numero 13 del curso de Linux y vamos a ver la automatización y la
programación de tareas por medio del comando cron y at.
Antes de explicar que es cron y como funciona, primero debemos ver un par de comandos, que son:

 date que nos permite ver y cambiar la hora actual del sistema.
 Para averiguar el día de ayer: date -d “yesterday”
 Para averiguar el día de hoy: date
 Para averiguar el día de mañana: date -d “tomorrow”
 Para especificar el formato deseado: date +%d/%h/%y
 cal nos muestra el mes actual y nos marca el día de hoy.
 Muestra el mes actual: cal
 Muestra el mes pasado, presente y siguiente: cal -3
 Muestra el calendario de este año: cal -y
Teniendo presentes date y cal pasemos a ver que es cron.

¿Qué es cron?
Su nombre cron proviene del griego chronos que significa “tiempo”. es el equivalente al
administrador de tareas en Windows, es una herramienta de cronograma que ejecuta procesos a
intervalos regulares (cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora
en la que deben hacerlo se especifican en el fichero crontab.

¿Cómo funciona cron?


Cron se maneja a través de comando crontab -e este nos lleva a un tabulador que nos indica un
formato para poder programar las tareas en nuestro computador.
.—————- Minuto (0 – 59)
| .————– Hora (0 – 23)
| | .———— Día del mes (1 – 31)
| | | .———- Mes (1 – 12) O jan,feb,mar,apr … (los meses en inglés)
| | | | .——– Día de la semana (0-7) O sun,mon,tue,wed,thu,fri,sat (días en inglés)
| ||| |
* * * * * comando para ser ejecutado

Ejemplo practico
En la linea de asteriscos vamos a sustituir el primer asterisco por el 5 y luego le indicamos el
comando Date >> ejemplo1.txt
5 * * * * Date >> ejemplo1.txt
¿que va a hacer esto? se va a ejecutar cada 5 minuto, porque se va a ejecutar en cada minuto, en
cada hora, en cada día del mes, en cada mes, y creará el archivo ejemplo1.txt que registrara la salida
de date de manera acumulativa.46
46 * * * * Date >> ejemplo2.txt
se ejecute en el minuto 46 de todas las horas, de todos los días
50 6 * * * Date >> ejemplo3.txt
Se ejecuta todos los dias a las 6:50
57 6 3 * * Date >> ejemplo4.txt
Se ejecutará cada día 3 a las 6:57
5 7 13 5 * tar zcvf Linux-4.0.1.tar.gz lunix-4.0.1
Se ejecutará cada mes de Mayo el día 13 a las 7:5 y realizara el backup backup de las fuentes del
kernel Linux 4.0.1
15 7 13 5 4 tar zcvf Linux-4.0.1.tar.gz lunix-4.0.1
Se ejecutara solamente los días miércoles de Mayo cuando estos caigan en 13 a las 7:15
Resumen de cron
No olvidemos que:

 El primer parámetro es el minuto.


 El segundo parámetro es la hora.
 El tercer parámetro es el día del mes.
 El cuarto parámetro es el mes.
 Y el quinto parámetro es el día de la semana.
 En números el sexto parámetro es el comando que nosotros queremos ejecutar.

Save

Comando at
Ahora pasamos a otro servicio que nos permite programar las tareas que es el at. El at funciona de
forma diferente funciona, mas como una cola/spooler que nos permite especificarle tanto la fecha
como la hora de lo que vamos a ejecutar, en el formato hora fecha habitual.

Sintaxis
at 7:20 05/13/2015 formato (MM/DD/YY)
Una vez colocamos at y la fecha nos va a dar un prompt en el cual podemos escribir el comando que
queremos ejecutar,

Ejemplo de comando a ejecutar: date >> ejemplo5.txt

Una vez escrito el comando guardamos la tarea con Control + d


¿Que hace esto? a las 7:20 de la mañana del 13 de mayo del 2015 nos ejecuta el comando date
Ver los trabajos programados de at
Ahora para ver los trabajos en la cola de at usaremos el comando atq

Formas de usar el comando at


1. Programa una tarea a las 11:00 de la mañana.
 at 11:00 AM
2. Programa una tarea a las 11:00 de la mañana del próximo domingo.
 at 11:00 AM Sun
3. Programa una tarea a las 11:00 de la mañana del 25 de Julio
 at 11:00 AM July 25
4. Programa una tarea a las 11:00 de la mañana del 22 de Junio del 2015
 at 11:00 AM 6/22/2015
 at 11:00 AM 6.22.2015
5. Programa una tarea a las 11:00 de la mañana de la misma fecha pero del próximo mes.
 # at 11:00 AM next month
6. Programa una tarea a las 11:00 de la mañana de mañana.
 at 11:00 AM tomorrow
7. Programa una tarea a ejecutar después de 1 hora.
 at now + 1 hour
8. Programa una tarea a ejecutar después de 30 minutos.
 at now + 30 minutes
9. Programa una tarea a ejecutar después de 1 y 2 semanas.
 at now + 1 week
 at now + 2 weeks
10. Programa una tarea a ejecutar después de 1 y 2 años.
 at now + 1 year
 at now + 2 years
11. Programa una tarea a ejecutar a la media noche.
 at midnight
12. Programa una tarea a ejecutara al medio día(a las 12:00 horas).
 at noon

Instalación y estado del servicio de at


 Para instalar at usar el siguiente comando: apt-get install at
 Para verificar si el servicio de at esta activo: service atq status
 si es necesario iniciar el servicio: atd start/running, process 1010

Resumen
 crontab –e para editar el archivo de tabulador de crontab tenemos primero minuto, luego
hora, luego día del mes, luego mes, luego día de la semana y por ultimo el comando y
teniendo en cuenta que el asterisco es el comodín que significa todos las días, todas las
horas, todos los minutos
 en el caso de at entonces la sintaxis es diferente , es at la hora el minuto se separa con un
espacio y luego se le indica el mes el día del mes y el año que se quiere que se ejecute la
tarea at 7:50 05/13/2015 con atq se ven los trabajos y con atrm se borran los trabajos y
recuerden dar control para cada vez que se guarda una tarea dentro del at
Bueno y con esto terminamos esta parte de automatización y programación de tareas, En las
próximas entregas del curso vamos a estar viendo la parte de instalación ¿porque? Porque nosotros
hemos asumido que somos usuarios de un sistema con los comando que hemos venido viendo
durante todas estas entregas del curso anteriores, pero entonces ahorita vamos a ser los que
gestionamos nuestro sistema y la primera cosas que debemos saber es como instalar Linux entonces
vamos a ver de ahora en adelante 4 capítulos en los cuales tendremos instalación de Linux Suse, de
Linux centos , de Linux fedora, Linux debian y por ultimo de Linux Ubuntu.
Cómo instalar Linux OpenSUSE 14/60
Compartir12
Twittear
Compartir
+1
Compartir 12
Hoy en nuestro Curso de Linux en Español se comenzará un circulo de lecciones donde podrán
instalar distintos tipos de Sistemas Operativos linux y comenzaremos por OpenSUSE, luego Linux
Centos, Fedora, Debian y por ultimo podrán instalar Linux Ubuntu tanto en su versión escritorio
como en su versión servidor, así que espero que el material desarrollado para ustedes les guste
mucho y lo compartan ;-)

Material a Utilizar
 Descarga de Linux OpenSUSE
 Instalación de VirtualBox
Si es la primera vez que instalas una distribución de Linux en esta lección te sugerimos que instales
VirtualBox ya que este te proporciona un espacio virtual y separado de tu Sistema Operativo actual,
donde podrás instalar cualquier distribución sin riesgo alguno, así que dale un vistazo al tutorial de
Cómo instalar VirtualBox.

Pasos para instalar Linux OpenSUSE


Una vez iniciamos la maquina con Linux OpenSUSE lo primero que vas a ver es el gestor de
arranque o bootloader de OpenSUSE allí selecciona Installation. Esto va a hacer un proceso el cual
va a levantar el programa de instalación , esto puede tardar algunos minutos.
Save
Una vez el proceso de inicio del instalador termina nos va a salir una pantalla donde nos va a pedir
el idioma y la distribución de teclado que vamos a utilizar, en este caso seleccionamos español y
la distribución de teclado vamos también a seleccionar español luego viene una aceptación de una
licencia de OpenSUSE y comienza hacer unas comprobaciones para poder seguir con la instalación.
Save
Ahora nos muestra la distribución del filesystem que el te recomienda y que en este articulo
usaremos para simplificar la instalación, pero nosotros la podríamos cambiar.
Save
Ahora vamos a seleccionar la ubicación entonces la ubicación actual mía es Europa y España,
también podemos hacerlo por medio del puntero acercándonos al mapa y seleccionando la zona
horaria queremos.
Save
A continuación nos va a dar ya el detalle de los repositorios, y nos vamos a fijar que el repositorio
principal de actualizaciones este seleccionado. Después el va a seguir con sus chequeos.
Save
Aquí ya tenemos lo que va a ser la selección del escritorio, podemos seleccionar entre los 2
principales que es GNOME o KDE. El KDE es el que viene predeterminado y es el que vamos a
usar.
Save
Ahora nos pide un usuario, nombre del usuario y la contraseña del usuario, es el mismo usuario
predeterminado con el que se va utilizar inicialmente el sistema.
Save
Luego el nos va a dar como un resumen de todo lo que es la instalación nos va amostrar la parte
del software que se va a instalar, nos muestra cada uno de los grupos de paquetes y dentro de cada
grupo vamos a ver los paquetes independientes.
Nosotros podemos agregar paquetes o quitar paquetes dependiendo de lo que nosotros queramos,
esta opción es muy buena porque con esta opción de una vez en la instalación podemos montar
dentro de la distribución los paquetes que queremos de forma predeterminada e nuestra instalación
de nuestro sistema operativo
También nos permite instalar de modo gráfico o de modo texto por si vamos a instalar una versión
de servidor. Hay una parte que nos permite ver el resumen del hardware que nos detecto la
instalación. Esto es mas que todo para saber si nosotros tenemos conectados otro tipo de hardware
al sistema y lo esta detectan o no lo esta detectando, entonces ya después de instalado pues
buscaremos los drivers o los módulos o lo que nosotros necesitemos para que dicho hardware sea
detectado.
Otra parte importante es la parte de fireware, pues vamos a hacer una instalación de texto o estación
de trabajo, entonces le vamos a quitar el fireware
Una vez ya tenemos todo esto vamos a continuar con nuestra instalación, le tenemos que dar
ACEPTAR a una confirmación de todo lo que estamos configurando en este resumen que nos esta
presentando entonces al darle INSTALAR ya nos va a iniciar la copia de los paquetes al disco duro
de nuestra maquina. Mientras se hace la instalación les voy contando un poquito
Save
Las siguientes ventanas que aparecen son la aceptación de licencias tanto de gstreamer como de
Adobe, las aceptamos y seguimos con la instalación.
Save
Save
En esta ventana simplemente damos la confirmación para que inicie la instalación de OpenSUSE.
Save
Mientras se instala OpenSUSE nos muestra una barra de progreso y nos va a mostrar al unos puntos
a tener en cuenta de esta Distro
Save
Ya hemos terminado aquí nuestra instalación de OPENSUSE el va hacer un reinicio y va a
comenzar a cargar nuestro sistema operativo OPENSUSE. ya nos aparece El Escritorio de
OpenSUSE.

Save
Sin duda disfrutarán mucho con esta nueva experiencia, de poder instalar y probar OpenSUSE no
se olviden inscribirse en el Feed de Proyecto Byte para que reciban un correo con cada nueva
entrega.
Cómo instalar Linux CentOS paso a paso
15/60
Compartir11
Twittear
Compartir
+1
Compartir 11
Hoy vamos a ver Cómo instalar Linux CentOS, En este capitulo 15 del Curso de Linux tendrás de la
ultima versión de Linux CentOS así como la explicación de su instalación tanto en vídeo como en
texto.

Ventajas de Linux CentOS


Linux CentOS es una distribución gratuita pero robusta de clase empresarial que cuenta con un
periodo de soporte de 10 años (hasta el 30 de junio de 2024) es una distribución que se deriva y es
100% compatible a nivel binario con Linux Red Hat Enterprise.
Cuenta con soporte para discos duros de hasta 500 Terabytes, soporte para tarjetas Ethernet 40G,
incorpora la plataforma de administración systemd y poderosas herramientas para simplificar la
virtualización de Sistema Operativos, entre otras ventajas.
Si es la primera vez que instalas una distribución de Linux en esta lección te sugerimos que instales
VirtualBox ya que este te proporciona un espacio virtual y separado de tu Sistema Operativo actual,
donde podrás instalar cualquier distribución sin riesgo alguno, así que dale un vistazo al tutorial de
Cómo instalar VirtualBox.

Descarga de CentOS
 Descarga de Linux CentOS
 Instalación de VirtualBox
Instalación de Linux CentOS paso a paso

En la primera imagen vemos el Gestor de inicio de Linux CentOS, este nos proporciona tres
opciones:
1. Instalar Linux CentOS.
2. Verificar la integridad de los medios de instalación e instalar.
3. Y la solución de problemas.
Elegimos una de las dos primeras opciones.
Save
Yo elegí la opción que recomienda Linux CentOS, así que una vez que el sistema inicia lo primero
que hace es una verificación de los medios de instalación, para descartar la posibilidad de que algún
archivo este corrupto.
Save
Una vez iniciado el programa de instalación de Linux CentOS lo primero que nos pide es el idioma
que utilizaremos en la instalación, así que yo elegí Español – el idioma Español con la variante
Español España)
Save
Linux CentOS nos permite seleccionar desde ya el software que utilizaremos en el servidor o
estación de trabajo, en este caso yo elegí como base un escritorio Gnome y como complementos a
Gnome las aplicaciones propias de Gnome y una Suite de Ofimática.
Save
En destino de la instalación elegi el Disco Duro donde se realizará la instalación de Linux CentOS.
Save
En la siguiente pantalla CentOS nos permite activar la red para acceder a Internet.
Save
En este punto el programa de instalación ya comienza a instalar el Sistema Operativo, y mientras
tanto podemos ir creando los dos primeros usuarios que el Sistema tendrá.
Save
Una vez finalizada la instalación clic en Reiniciar.
Save
En esta ultima ventana ya solo toca aceptar la licencia y sus términos de uso, y clic en Finalizar
Configuración.
Save
Una vez que Linux inicia nos muestra la ventana de bienvenida donde aparece el usuario y al darle
click nos solicita la contraseña que previamente le establecimos.
Save
Una vez dentro de la cuenta de usuario nos pregunta que idioma utilizaremos en este usuario.
Save
Una vez más nos permite seleccionar el tipo de teclado que utilizara este usuario.
Save
Nos pregunta si queremos conectar alguna de nuestras cuentas de Google, Outlook o OwnCloud.
Save
Ya todo esta a punto de caramelo.
Save
y nos muestra un tutor donde podremos conocer algunas de las opciones básicas de uso para
movernos mejor en CentOS.
Save
Espero y la información compartida en este capitulo les proporcione una nueva experiencia, al usar
esta magnifica distribución linux, no se olviden de suscribirse si a un no lo han hecha al Feed de
Proyecto Byte para recibir notificaciones por correo de cuando publiquemos información tan buena
como esta y aun mejor.
Cómo Instalar Ubuntu Server
Compartir39
Twittear
Compartir
+1
Compartir 39
Si estás buscando cómo instalar Ubuntu Server de forma correcta has llegado al lugar indicado ya
que aquí en Proyecto Byte te hemos preparado un buen tutorial paso a paso, así podrás configurar tu
servidor de la forma más fácil y sencilla posible.
Ubuntu Server es una buena opción como sistema Operativo para tu servidor, ya que cuenta con
soporte de larga duración, una comunidad bastante grande y activa que ha generado mucha
documentación sobre Ubuntu Server y por otro lado como sistema Operativo es confiable y robusto.

Requisitos minimos de Ubuntu Server


Para instalar Ubuntu Server debes verificar que tu ordenador cumpla con los siguientes
requerimiento mínimos:

 Procesador de 1Ghz
 Al menos 2GB de RAM
 Espacio en disco de al menos 16GB
 Conexión a Internet

Cómo descargar Ubuntu Server


Una vez que ya verificaste que cuentas con los requisitos mínimos para instalar Ubuntu Server,
entonces debes proceder a su descarga. Para tener más opciones de descarga puedes ir a la siguiente
dirección http://releases.ubuntu.com/16.04/ desde allí podrás elegir si quieres una ISO de 32 o 64
bits o si deseas realizar la descarga por torrent.

Prepara el soporte de Instalación


Para instalar Ubuntu Server lo primero que debes de hacer es prepara una memoria USB con
Ubuntu Server para poder instalar desde allí el sistema Operativo.
Una vez que hayas preparado adecuadamente la memoria USB reinicia tu equipo y configuralo para
que este inicie desde la memoria USB. Este paso puede ser diferente si esta con un ordenador que
tenga una BIOS o posea un Sistema EFI

Comenzando a instalar Ubuntu Server


Alcanzado este nivel ya puedes instalar Ubuntu Server en tu servidor como primer paso elige el
idioma que utilizaras para instalar Ubuntu tal como se ve en la siguiente pantalla, en nuestro caso es
el español y al seleccionar pulsamos la tecla enter.
Save

Una vez en la siguiente pantalla, como podemos a ver a continuación, debemos seleccionar la
primera opción que dice Instalar Ubuntu Server y presiona Enter.
Save

Ahora vamos con la configuración de la distribución del teclado que el sistema lo puede auto-
detecte, pero será más sencillo creo yo responder que no y presionamos enter.
Save

Ahora se te desplegará una lista para que selecciones la ubicación del servidor, seleccionala la
ubicación y pulsa enter.
Save

Ahora si selecciona la distribución del teclado correspondiente, en este caso Spanish y seguimos.
Save

Como puedes ver entre los teclados en español hay variantes, así que a continuación puedes elegir
el que más se ajusta a tus necesidades o simplemente elige el que dice Spanish ahora pulsa enter y
continuamos.
Save

En este punto, tal como muestra la siguiente pantalla, debes escribir el hostname de tu servidor osea
un nombre que identifique a tu servidor, como por ejemplo Ubuntu-Server o el que tu prefieras, una
vez asignado el nombre elege Continuar y presiona la tecla enter.
Save

Ahora debemos crear una cuenta de usuario para administrar nuestro servidor. Lo primero que
nos pide es el nombre completo de quien va a administrar este servidor Coloca tu nombre por
ejemplo y pulsa enter sobre continuar.
Save

Ahora lo que te pide a continuación es el nombre de usuario con el que iniciará sesión, esta
información es la que siempre usaras al iniciar sección en tu servidor, por ejemplo podrías usar tu
apellido o asignarle el nombre Administrador una vez asignador el nombre de usuario presiona
sobre continuar.
Save

Ahora hay que darle una contraseña a tu usuario no querrás que cualquier persona tenga acceso a tu
Servidor ¿verdad? así que toca asignarle una contraseña, puedes pulsar “Show Pasword in Clear”
que te permite ver lo que escribes. Al terminar pulsa continuar.
Save

Debes confirmar la contraseña osea debes de escribirla una vez más para que el sistema compruebe
que la has escrito correctamente, pulsa continuar.
Save

Si quieres cifrar tu carpeta de usuario este es el momento para decidirlo, pulsa la opción que deseas
y continúa.
Save

En la siguiente sección el sistema detecta automáticamente una zona horaria, en caso de estar
correcta pulsamos sí y seguimos.
Save

Ahora corresponde particionar el disco, aquí elegiremos la segunda opción que es Guiado – Utilizar
el disco completo y configurar LVM
Save

El sistema muestra los discos detectados, elige el que se usará para la instalación.
Save

Te pregunta si este es el disco que se utilizará, indica que sí y continúa.


Save

Vamos a utilizar todo el espacio en el disco, (Ojo este paso borra todo lo que tengas en el Disco
Duro) presiona continuar.
Save

A continuación te muestra lo que el instalador ha hecho y lo que a continuación va a ser, selecciona


Sí.
Save

En el caso de que emplees un proxy para salir a internet debes escribirlo en este cuadro de texto y si
no utilizas déjalo en blanco y pulsa continuar.
Save

En este punto escoge la primera opción, sin actualizaciones automáticas, esto es por que tu más
adelante irás actualizado tu sistema, no si antes que realizar tus copias de seguridad y que
posteriormente compruebes que tu servidor funcione adecuadamente después de cada actualización,
pulsa enter.
Save

Llegó el momento de escoger que paquetes vas a instalar, esto depende del uso que le quieras dar a
tu servidor, si aun no lo tienes claro marca la opción Standard system utilities y también te
recomiendo la opción OpenSSH server, esta ultima opción te permitirá conectar al servidor de
forma remota a través de una conexión ssh luego pulsa enter sobre continuar.
Save

El GRUB es el gestor de arranque que utiliza Ubuntu Server para poder iniciarse, sin este tu
servidor seria incapaz de arrancar el Sistema Operativo, así que responde afirmativamente.
Save

En este aspecto ya haz terminado la instalación de Ubuntu Server, así que debes retirar la memoria
USB con la que instalaste el Sistema Operativo en el servidor y pulsa continuar.
Save
Ahora toca ingresar al servidor así que te pedira tu Usuario y contraseña.
Una vez dentro el servidor te indica si tienes paquetes que debes de actualizar, en este campo las
actualizaciones criticas so las de seguridad así que como primera acción actualiza estos paquetes
con
con los comandos:

 sudo apt-get update


 sudo apt-get dist-upgrade
Save
Para que tu puedas realizas una correcta administración de tu o tus servidores te recomiendo que
sigas nuestro Curso de Linux es muy bueno y lo mejor que es totalmente gratis.
Una vez terminada la instalación de Ubuntu Server tu servidor está listo para ser utilizado ¿qué
proyectos tienes en mente para él? coméntanoslo aquí debajo en la caja de comentarios.

You might also like