linux le101 - linux enterprise operacional v1-5

129
LE-101 - Linux Enterprise Operacional

Upload: sebeca

Post on 06-Jul-2015

293 views

Category:

Documents


13 download

TRANSCRIPT

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 1/129

 

LE-101 - Linux Enterprise Operacional

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 2/129

 

Tabla de contenido

Índice de contenido

Introducción al sistema operativo LINUX...............................................................................7El sistema operativo Linux......................................................................................................8

Usuarios y grupos...................................................................................................................9

El usuario root.......................................................................................................................10

Organización del árbol de archivos ....................................................................................11

El directorio raíz: / ................................................................................................................11

Introducción a la línea de comandos....................................................................................13

Ejecución de comandos y opciones.....................................................................................13

Obtener ayuda......................................................................................................................13

El comando info....................................................................................................................14

Fecha, hora, calendario........................................................................................................15

Manipulación de contraseñas...............................................................................................16

Utilización de consolas virtuales...........................................................................................16

Otros comandos básicos útiles.............................................................................................17

Manipulación de archivos......................................................................................................18

Directorio actual de trabajo...................................................................................................19

Nombres de archivos............................................................................................................19

Listar el contenido de directorios..........................................................................................19

Rutas absolutas y relativas...................................................................................................20

El directorio HOME...............................................................................................................21

Cambiando directorios..........................................................................................................21

Comodines de la línea de comandos...................................................................................22

Comprobando espacio disponible........................................................................................24

Crear y borrar archivos y directorios....................................................................................27

Borrar archivos y directorios.................................................................................................28

Mover o renombrar archivos.................................................................................................28

Copiando archivos y directorios...........................................................................................29

Determinando el tipo de un archivo......................................................................................30

Visualizar archivos de texto..................................................................................................31

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 3/129

 

Usuarios y grupos..................................................................................................................33

Usuario y grupos, concepto..................................................................................................34

El usuario root y otros usuarios del sistema........................................................................34

Modelo de seguridad de Linux.............................................................................................34

Comandos para obtener información de usuarios...............................................................35

Cambiando la identidad del usuario.....................................................................................36

Permisos de acceso a archivos y directorios......................................................................37

Seguridad de archivos en Linux...........................................................................................38

Tipos de permisos de archivos.............................................................................................38

Examinando los permisos de archivos y directorios............................................................38

Cambiando permisos de archivos........................................................................................39

Permisos especiales.............................................................................................................41

Permisos por defecto de los archivos..................................................................................43

El sistema de archivos...........................................................................................................45

Sistemas de archivos ext2/ext3............................................................................................46

Enlaces o vínculos simbólicos (blandos) y duros.................................................................46

Los enlaces o vínculos.........................................................................................................47

Los vínculos simbólicos y la limitación de los vínculos duros..............................................48

Buscando y procesando archivos.........................................................................................49

bzip2 y gzip: comandos de compresión de datos ...............................................................52

El comando zip.....................................................................................................................53

Copias de seguridad con el comando tar.............................................................................53

Nombres de archivos comprimidos comunes y programas asociados................................55

El editor vi................................................................................................................................56

Ejecutar vi ............................................................................................................................57

Comandos de movimiento del cursor ..................................................................................57

Borrar texto ..........................................................................................................................58

Cambiar texto........................................................................................................................58

Deshaciendo y rehaciendo cambios ...................................................................................59

Grabando y saliendo.............................................................................................................59

Cortando, copiando y pegando............................................................................................59

Otras operaciones útiles.......................................................................................................60

Buscando, reemplazando y usando de expresiones regulares...........................................60

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 4/129

 

Búsqueda y sustituciones.....................................................................................................61

El intérprete de comandos BASH..........................................................................................63

GNU Bourne-Again Shell y las variables de en ..................................................................64

Volviendo a llamar a comandos...........................................................................................65

Expansión de la linea de comandos.....................................................................................66

Valores de retorno de los comandos....................................................................................67

Sobrenombres......................................................................................................................67

Scripts de inicialización y finalización...................................................................................68

Historial.................................................................................................................................69

Búsqueda de comandos previamente ejecutados...............................................................69

Substitución de comandos...................................................................................................70

Redirecciones y tuberías.......................................................................................................71

Descriptores de archivos, entrada, salida y error estándar.................................................72

Redireccionando la entrada y la salida................................................................................72

Redireccionando el error estándar.......................................................................................73

Sobrescritura y agregado de las redirecciones....................................................................74

Redireccionando la salida estándar y el error estándar.......................................................74

Tuberías................................................................................................................................74

Filtros y procesamiento de cadenas.....................................................................................76

Concepto de filtro .................................................................................................................77

Traducción de caracteres ...................................................................................................77

Paginador de la salida por impresora...................................................................................78

Mostradores de ficheros por porciones: tail y head ............................................................79

El comando de ordenado.....................................................................................................80

Supresión de líneas repetidas .............................................................................................81

El comando de selección de campos del fichero.................................................................82

El comando de fusión de campos de diferentes ficheros....................................................83

Expresiones regulares...........................................................................................................85Expresiones regulares..........................................................................................................86

Búsqueda de patrones dentro de archivos..........................................................................86

Correspondencia de principio y fin de línea.........................................................................87

Anulación del significado especial de un caracter...............................................................87

Correspondecia con cualquier caracter................................................................................87

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 5/129

 

Conjuntos de caracteres.......................................................................................................88

Correspondencia repetida de patrones................................................................................88

Grupos de caracteres...........................................................................................................89

Buscando archivos con un patrón de texto en su contenido ..............................................90

Editores fuera de línea.........................................................................................................90

Editor de flujo sed.................................................................................................................90

El awk....................................................................................................................................94

Variables del awk..................................................................................................................95

Programación en awk...........................................................................................................97

Scripts del shell.......................................................................................................................98

Conceptos básicos de scripts del shell................................................................................99

Los caracteres especiales más comunes............................................................................99

El comando read.................................................................................................................100

Test.....................................................................................................................................100

Test de archivos.................................................................................................................101

Test de comparación de enteros........................................................................................101

Test de comparación de cadenas......................................................................................102

Condicionales.....................................................................................................................102

Bucles.................................................................................................................................104

Bucles for............................................................................................................................104

Bucle while..........................................................................................................................105

Case....................................................................................................................................106

Parámetros posicionales ...................................................................................................107

Scripts de ejemplo..............................................................................................................108

Impresión y comunicación...................................................................................................110

Imprimir bajo Linux.............................................................................................................111

Viendo la cola de impresión...............................................................................................112

Cancelando un trabajo de impresión..................................................................................112La variable de entorno PRINTER ......................................................................................112

Enviar correo electrónico....................................................................................................112

Leer el correo......................................................................................................................113

Redirección de correo.........................................................................................................113

Control de procesos y herramientas del sistema.............................................................115

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 6/129

 

El árbol de procesos...........................................................................................................116

Las señales.........................................................................................................................117

kill, killall..............................................................................................................................117

Usando el control de trabajos.............................................................................................118

Agendando la ejecución periódica de procesos................................................................119

Agendando procesos para su ejecución ...........................................................................120

Nociones básicas de red......................................................................................................122

Introducción a las redes IP.................................................................................................123

El comando ping.................................................................................................................123

Obteniendo información sobre interfaces..........................................................................124

Transfiriendo archivos a través de la red...........................................................................125

Shell Seguro (ssh)..............................................................................................................127

Usando el comando scp.....................................................................................................128

Uso del comando sftp.........................................................................................................129

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 7/129

 

1

Introducción al sistema operativo LINUX

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 8/129

 

Introducción al sistema operativo Linux

El sistema operativo Linux

LINUX es un sistema operativo, compatible Unix. Dos características muy peculiares

lo diferencian del resto de los sistemas que podemos encontrar en el mercado, laprimera, es que es libre, esto significa que no tenemos que pagar ningún tipo delicencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda,es que el sistema viene acompañado del código fuente. El sistema lo forman el núcleodel sistema (kernel) mas un gran numero de programas / librerías que hacen posiblesu utilización.

LINUX se distribuye bajo la GNU Public License: Inglés , por lo tanto, el código fuentetiene que estar siempre accesible.

El sistema ha sido diseñado y programado por multitud de programadores alrededor 

del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinación deLinus Torvalds, la persona de la que partió la idea de este proyecto, a principios de ladécada de los noventa.

Día a día, más y más programas / aplicaciones están disponibles para este sistema, yla calidad de los mismos aumenta de versión a versión. La gran mayoría de losmismos vienen acompañados del código fuente y se distribuyen gratuitamente bajolos términos de licencia de la GNU Public License.

Las funciones principales de este magnífico sistema operativo son: •

Sistema multitarea: En Linux es posible ejecutar varios programas a la vez sinnecesidad de tener que parar la ejecución de cada aplicación.

• Sistema multiusuario: Varios usuarios pueden acceder a las aplicaciones yrecursos del sistema Linux al mismo tiempo. Y, por supuesto, cada uno de ellospuede ejecutar varios programas a la vez (multitarea).

• Shells programables: Un shell conecta las ordenes de un usuario con el Kernel deLinux (el núcleo del sistema), y al ser programables se puede modificar paraadaptarlo a tus necesidades. Por ejemplo, es muy útil para realizar procesos ensegundo plano.

• Multiplataforma: Corre en muchas CPUs distintas, no sólo Intel, también el Alpha,PowerPC, Itanium, etc.

• Consolas virtuales múltiples: Varias sesiones de login a través de las consolasvirtuales entre las que se puede cambiar con las combinaciones adecuadas deteclas.

La memoria se gestiona como un recurso unificado para los programas de usuario ypara el caché de disco, de tal forma que toda la memoria libre puede ser usada para

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 9/129

 

caché y éste puede a su vez ser reducido cuando se ejecuten grandes programas.

Linux permite un acceso transparente a particiones Windows (VFAT) y acceso de sólolectura a particiones NTFS.

El sistema operativo Linux comúnmente puede ser estructurado en capas como semuestra en la siguiente figura:

El hardware se encuentra en el centro. El sistema operativo es la interfaz entre losprocesos del usuario y el hardware.

El kernel de Linux es intencionalmente compacto y diseñado para incluir aquellasoperaciones que requieren privilegios especiales del sistema para ejecutarse.

El kernel es el programa de control central que provee los servicios básicos del

sistema. Es un archivo ejecutable, se compila desde los archivos fuente, archivosobjetos y parámetros configurables. Se carga en memoria cuando el sistema inicia yejecuta programas y administra los recursos del computador.

El kernel espera solicitudes de los procesos del usuario para acceder a los recursosdel sistema, como memoria, CPU y dispositivos. Los programas del usuario solicitanservicios al kernel por medio de llamadas del sistema o system calls. Los dispositivosde hardware se comunican con el kernel por medio de interrupciones.

El shell rodea al kernel y actúa como una interfaz del usuario. El shell es conocidocomo intérprete de comandos. Administra la ejecución de procesos en primer ysegundo plano, posee un entorno configurable, un lenguaje flexible y proporcionaredirección de la entrada y la salida.

Usuarios y grupos

El concepto de usuarios y grupos es extremadamente importante, ya que tiene unainfluencia directa sobre todos los demás conceptos que iremos presentando a lo largode la unidad.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 10/129

 

Linux es un sistema multi-usuario verdadero, y para poder usar su sistema GNU/Linuxdebe poseer una cuenta en el mismo.

Los dos parámetros importantes son, el nombre de conexión (comúnmente abreviadologin) y la contraseña. Estos son los que usará para poder ingresar al sistema. Otraacción que ocurrió cuando se creó una cuenta de usuario es la creación de un grupo.

Por defecto, el programa de instalación habrá creado un grupo por usuario. Comoveremos más adelante, los grupos son útiles cuando varias personas tienen quecompartir archivos. Por lo tanto, un grupo puede contener tantos usuarios como Ud.desee, y es muy común ver tal separación en sistemas grandes.

En una universidad, por ejemplo, Ud. puede tener un grupo por cada departamento,otro grupo para los profesores, y así sucesivamente. La inversa también vale: unusuario puede ser miembro de uno o más grupos, hasta un máximo de treinta y dos.Por ejemplo, un profesor de matemáticas puede ser un miembro del grupo deprofesores y también ser miembro del grupo de sus queridos estudiantes dematemáticas. Sin embargo, todo esto no le dice como conectarse.

Para poder conectarse, tendrá que ingresar su nombre de conexión en el promptLogin: y presionar Intro, después de lo cual aparecerá el programa de conexión(denominado login ) que mostrará el prompt Password:, donde deberá ingresar lacontraseña para esta cuenta.

Debido a que la conexión en la consola no hace eco de los caracteres querepresentan a la contraseña, deberá tener cuidado cuando teclea su contraseña aciegas. Note que Ud. se puede conectar varias veces usando la misma cuenta sobreconsolas adicionales y bajo X .

Cada sesión que abra es independiente de las otras, e incluso es posible tener variassesiones X abiertas concurrentemente.

El usuario root

Normalmente esta es la cuenta que tiene el administrador del sistema, que es muyprobable que sea Ud. Para la seguridad de su sistema, es muy importante que lacuenta de root ¡siempre esté protegida por una buena contraseña! Si se conecta comoroot regularmente es muy fácil cometer un error que puede hacer que su sistemaquede inútil; un único error puede hacer que esto ocurra. En particular, si no haproporcionado una contraseña para la cuenta root, cualquier usuario puedeconectarse usando dicha cuenta y alterar cualquier parte de su sistema (¡incluso deotros sistemas operativos presentes en su máquina!).

Obviamente, esto no es una idea muy buena. Vale la pena mencionar que,internamente, el sistema no lo identifica con su nombre de conexión sino con unnúmero único asignado a este nombre de conexión: el UID (User ID, Identificador delusuario). Similarmente, cada grupo se identifica no por su nombre sino por su GID oGroup ID, (Identificador del grupo). El UID del usuario root es 0 y el GID es también 0.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 11/129

 

Un sistema de archivos consta de de tipos de datos abstractos (que representan lainformación y las operaciones posibles sobre ellas), que son necesarios para elalmacenamiento, organización jerárquica, manipulación, navegación, acceso yconsulta de datos.  La mayoría de los sistemas operativos poseen su propio sistemade archivos.

Organización del árbol de archivos

Hoy día, un sistema Unix es grande, muy grande. Esto es particularmente cierto conGNU/Linux : la profusión de software disponible lo harían un sistema inmanejable sino hubieran guías para la ubicación de los archivos en la estructura del árbol.Respecto a eso, la norma reconocida es FHS (Filesystem Hierarchy Standard,Norma para la jerarquía del sistema de archivos).

El documento que describe la norma está disponible en diferentes formatos en laInternet en la dirección http://www.pathname.com/fhs/(http://www.pathname.com/fhs/ ). Sólo da un breve sumario, pero debería ser 

suficiente para que Ud. sepa en que directorio debería buscar (o poner) un archivodado.

El directorio raíz: /

El directorio raíz contiene toda la jerarquía del sistema. Aquí tiene una lista de losdirectorios y subdirectorios principales:

● /bin - Archivos binarios esenciales del sistema. Este directorio contiene loscomandos básicos que usarán todos los usuarios y son necesarios para la

operación del sistema: ls, cp, login, etc.

● /boot - Contiene los archivos que necesita el administrador de arranque deGNU/Linux, incluyendo el kernel y el disco RAM inicial.

● /dev - Archivos de los dispositivos del sistema.

● /etc - Este directorio contiene todos los archivos de configuraciónespecíficos a la máquina.

● /home - Contiene todos los directorios personales de los usuarios del

sistema. Este directorio puede, o no montado a través de NFS.

● /lib - Este directorio contiene las bibliotecas esenciales al sistema y losmódulos del kernel, en /lib/modules. Todas las bibliotecas que necesitanlos binarios presentes en los directorios /bin y /sbin se deben ubicar aquí,

 junto con el vinculador ld.so.

● /mnt - Directorio que contiene los puntos de montaje para los sistemas dearchivos temporales.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 12/129

 

● /media - El directorio /media/ contiene los subdirectorios utilizados comopuntos de montaje para la media removible, tales como DVD/CD-ROMs ydiscos flash/USB.

● /misc – Este directorio es utilizado por el servicio autofs el cual permite montar 

y desmontar automáticamente dispositivos y sistemas de archivos de red .

● /net – Este directorio es utilizado por el servicio autofs el cual permite montar y desmontar automáticamente dispositivos y sistemas de archivos de red.

● /opt - Este directorio contiene los paquetes que no son necesarios para laoperación del sistema y generalmente son compilados e instalados desde elfuente, no desde un formato RPM.

● /proc - El directorio /proc/ contiene "archivos" especiales que o bienextraen información del kernel o bien la envían a éste.

● /root - Directorio personal del usuario root.

● /usr – Gerarquía secundaria de los datos de usuario, contiene la mayoría delas utilidades y aplicaciones multiusuario.

◦ /usr/bin - Comandos binarios no esenciales (no necesarios en el modode usuario único); para todos los usuarios.

◦ /usr/sbin - Sistema de binarios no esencial (por ejemplo demonios paravarios servicios de red) utilizables únicamente por el usuario root.

 ● /sbin - Contiene los binarios del sistema esenciales para el arranque del

mismo, sólo utilizables por root. Un usuario no privilegiado también puedeejecutarlos pero no tendrá provilegios suficientes para que el comando funcionecorrectamente.

● /selinux – Punto de montaje para el sistema de archivos virtual SELinuxcuando este esta habilitado en el kernel.

● /sys – El directorio /sys/ utiliza el nuevo sistema de archivos virtual sysfsespecífico al kernel 2.6. Ahora con el soporte más extendido para losdispositivos de conexión en caliente (hot plug) en el kernel 2.6, el directorio/sys/ contiene información similar a la que se encuentra en /proc/, peromuestra una vista jerárquica de la información de dispositivos específica conrelación a los dispositivos de conexión en caliente.

● /tmp - Directorio destinado a contener archivos temporales que pueden crear ciertos programas.

● /var - Ubicación para los datos que los programas pueden modificar entiempo real (ej: el servidor de correo electrónico, los programas de auditoria, el

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 13/129

 

servidor de impresión, etc.)

Introducción a la línea de comandos

La línea de comandos es la manera más directa de enviar comandos a la máquina. Siusa la línea de comandos de GNU/Linux , rápidamente verá que es mucho máspotente y tiene más capacidades que los intérpretes de comandos que puede haber usado con anterioridad. La razón de esto es que tiene un acceso directo, no sólo atodas las aplicaciones X , sino también a los miles de utilitarios en modo consola (enoposición al modo gráfico) que no tienen su equivalente gráfico, o nunca (¡o al menostodavía!) será posible mostrar en forma de menús y botones todas las opciones ycombinaciones posibles.

Ejecución de comandos y opciones

Lo que obtiene en realidad al iniciar este emulador de terminal es un shell . Este es el

nombre del programa con el cual Ud. interactúa. Ud. se encontrará frente al prompt :

[usuario@localhost ~]$

Esto supone que su nombre de usuario es usuario y que el nombre de su máquina eslocalhost (este es el caso si su máquina no es parte de una red existente). Todo loque aparece después del prompt es lo que tiene que teclear. Note que cuando Ud. esroot el signo $ del prompt cambia por un signo #. (esto sólo es válido con laconfiguración predeterminada, ya que puede personalizar todos estos detalles enGNU/Linux ).

Todos los comandos Unix consisten de una secuencia de letras, números ycaracteres. No son validos los espacios dentro del nombre del comando. Algunoscomandos validos son mail, cat, man. Linux además hace diferencia entre

mayúsculas y minúsculas, lo que significa que Cat y cat son comandos distintos.

Obtener ayuda

El comando man muestra las páginas de la guía de referencia para un comando dado.

Hay aproximadamente una página completa de información sobre cat. Pruebe correr man este momento. No espere entender la pagina de manual que se le muestra. Laspaginas de manual suponen un cierto conocimiento de Unix, conocimiento que tal vezUd. no tenga en este momento.

Cuando termine de leer la pagina, es probable que vea un bloque en video inverso alnal de la pagina, parecido a “--more--". En lugar de dejar escapar el texto fuera delos limites de la pantalla, man se detiene al final de cada pagina, y espera para ver que ha decidido hacer Ud.. Si desea seguir leyendo, oprima Barra espaciadora yavanzar a una pagina. Si desea terminar con la lectura de la pagina del manual,oprima q .

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 14/129

 

Cuando el autor describe los argumentos de un comando:

comando <argumento no textual> [--opción={arg1,arg2,arg3}][argumento_opcional ...]

Los signos “<” (menor que) y “>” (mayor que) denotan un argumento obligatorio que

no debe ser copiado textualmente, sino que debe reemplazarse de acuerdo con susnecesidades. Por ejemplo, <archivo> se refiere al nombre real de un archivo. Sidicho nombre es pepe.txt, usted debería teclear pepe.txt, y no <pepe.txt> o<archivo>.

Los corchetes "[ ]" denotan argumentos opcionales, los cuales puede o no incluir enel comando.

Los puntos suspensivos "..." significan que en ese lugar se puede incluir un númeroarbitrario de elementos.

Las llaves "{ }" contienen los argumentos permitidos en este lugar. Uno de ellos debeser puesto aquí.

El man provee además una función de búsqueda de palabras clave. Por ejemplo,digamos que Ud. está interesado en el tema PostScript, el lenguaje de control deimpresoras desarrollado por Adobe. Si escribe:

$ man -k ps$ man -k Postscript

Recibirá como resultado una lista de todos los comandos, llamadas al sistema, y otraspartes documentadas de Linux que contengan la palabra “ps" (o “Postscript") en su

nombre o descripción breve. Esto puede llegar a ser muy útil cuando quiere buscar una herramienta para hacer algo, pero no conoce su nombre o si existe.

El comando info

El comando info nos sirve cuando el texto de ayuda de man es insuficiente, odirectamente no existe una entrada en su base de datos sobre lo que buscamos. Elprograma info tiene una interfaz navegable: muchas de las páginas tienen enlaces aotras páginas relacionadas, muy similar a como tienen las páginas web. Los enlacesse indican mediante un asterisco (*) seguido por el título del enlace, seguido por un

doble dos puntos (::). Para seguir los enlaces, hay que situar el cursor sobre ellos ypulsar la tecla <INTRO>.

Para ayudar la navegación por los documentos, también están las siguientes teclas:

Tecla Descripción

 b Ir un paso hacia atrás, a la última página visitada

u Ir al nivel superior en el árbol de páginas

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 15/129

 

Tecla Descripción

n Ir a la siguiente página

 p Ir a la página previa

q  Salir de info

Fecha, hora, calendario

Para obtener la fecha y hora del sistema se debe ejecutar el comando date. Elcomando date sin argumentos devuelve la fecha y la hora actual. El comando datepuede ser formateado de tal forma a obtener la fecha como sea requerido. Ejemplos:

Mostrar la hora actual:

$ date

Mostrar la hora en el formato año, mes, día:$ date "+%Y-%m-%d"

$ date "+Año: %Y Mes: %m Dia: %d"

La fecha de un mes antes a partir de hoy:

$ date -d '1 month ago'

El mes hace cinco meses del actual:

$ date +%B -d '5 month ago'

La fecha de ayer: 

$date --date "yesterday" 

La fecha de mañana:

$date --date "tomorrow"

La fecha del viernes de la próxima semana:

$ date -d "next week friday"

El comando date también puede ser utilizado por el usuario root para cambiar la horadel sistema, el formato del comando es:

# date [MMDDhhmm[[CC]YY][.ss]]

El comando cal muestra un calendario en pantalla, sin opciones, el comando calmostrará el calendario para el mes corriente. Podemos especificar al comando quemuestre un mes determinado o un año específico. Por ejemplo:

Calendario del mes corriente de este año:

$ cal

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 16/129

 

Calendario del año 2010:

$ cal 2010

Calendario de diciembre de 2010:

$ cal 12 2010

Manipulación de contraseñas

Muchas veces es necesario cambiar la contraseña del inicio de sesión. Esto puedeser tan solo por gusto, para mantener la seguridad, por que la contraseña actual hasido conocida o por políticas que requieren que la contraseña sea cambiada.

Para cambiar la contraseña se utiliza el comando passwd. Un usuario no privilegiadopuede cambiar tan solo su propia contraseña, ejecutando el comando passwd sin

opciones.

El usuario root puede cambiar la contraseña de cualquier usuario utilizando elcomando passwd <usuario>.

Ejemplos:

Para cambiar su propia contraseña ejecute el comando:

$ passwd

El usuario root puede cambiar la contraseña del usuario juan con el comando:

# passwd juan

Utilización de consolas virtuales

Las consolas virtuales permiten el acceso en simultáneo de un usuario a más de unasesión en el sistema operativo.

Por defecto, Linux tiene seis consolas virtuales además de la reservada para lainterfaz gráfica. Puede cambiarse a cualquiera de ellas ingresando la secuencia deteclas Ctrl-Alt- F<n>1, donde <n> es el número de consola a la cual deseacambiarse.

Por defecto, la interfaz gráfica está sobre la consola número 7.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 17/129

 

Otros comandos básicos útiles

Puede utilizar el comando bc para realizar cálculos matemáticos. Es una calculadorabásica. Los operadores básicos son + (suma), - (resta), * (multiplicación), / (división).Para finalizar la calculadora presione las teclas CTRL+D. Por ejemplo:

$ bc

bc 1.06Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.This is free software with ABSOLUTELY NO WARRANTY.For details type `warranty'.2*488/422+242-20

El comando tty le ayudará a determinar en qué terminal está conectado

actualmente.$ tty/dev/pts/2

El comando echo le permite desplegar mensajes en la pantalla. Es muy útil para laprogramación de scripts del shell. Ejemplo:

$ echo "Mensaje de información"

El comando clear le permite limpiar la pantalla, también puede utilizar el métodoabreviado CTRL-L.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 18/129

 

2

Manipulación de archivos

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 19/129

 

Manipulación de archivos

Manipulación de archivos

Directorio actual de trabajo

Para averiguar el directorio de trabajo actual, basta con ingresar el comando pwd y enla linea siguiente saldrá el directorio completo donde estamos posicionados. Ejemplo:

$ pwd/tmp

Nombres de archivos

Un nombre de archivo puede contener cualquier caracter (excepto el caracter nulo -

caracter ASCII 0 - y una / que es el separador de directorio), incluso los noimprimibles. Linux distingue entre mayúsculas y minúsculas. Los archivos puedencontener hasta 255 caracteres.

Como debe haber notado, un nombre de archivo no contiene extensión alguna amenos que Ud. lo prefiera así. Bajo GNU/Linux las extensiones no caracterizan el contenido de un archivo, y tampoco lo hacen bajo otros sistemas operativos si espor eso. No obstante, las llamadas extensiones de archivo siempre son muyconvenientes. El caracter del punto (.) bajo Unix es simplemente un caracter entreotros. Vale la pena mencionar que, bajo Linux los nombres de archivo quecomienzan con un punto son archivos ocultos.

Listar el contenido de directorios

ls: listar archivos.

El comando ls (LiSt, LiStar) es equivalente a dir de DOS , pero puede hacer muchomás. De hecho, esto se debe en gran parte al hecho de que los archivos tambiénpueden hacer más.

La sintaxis del comando ls es la siguiente:

ls [opciones] [archivo|directorio] [archivo|directorio...]

Si no se especifica archivo o directorio alguno en la línea de comandos, ls mostrarála lista de los archivos del directorio corriente.

Sus opciones son muchas y sólo citaremos unas pocas:

19 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 20/129

 

Manipulación de archivos

Tecla Descripción

-a Listar todos los archivos, incluyendo los archivos ocultos (en Linux losarchivos ocultos son aquellos cuyo nombre comienza con un . ); la opción-A lista casi todos los archivos, lo que significa que se mostrarán todoslos archivos que mostrara la opción -a excepto . y ..

-l Muestra información adicional sobre cada archivo (formato largo)

-s Muestra el tamaño en kilobytes junto a cada archivo

-h Muestra el tamaño en formato fácilmente leíble por el humano junto a cadaarchivo

-R  Listar recursivamente, es decir, todos los archivos y subdirectorios deldirectorio que se menciona en la línea de comandos

-d  Trata a los directorios de la línea de comandos como si fueran archivosnormales en vez de listar su contenido

-S Organiza el listado por tamaño de archivo

-r Lista los archivo en orden inverso

-t lista los archivos ordenados por fecha de creación o modificación

Puede combinar más de una opción en la línea de comandos, por ejemplo para listar los archivos en formato largo, incluyendo los ocultos ejecute:

$ ls -la

Para listar todos los archivos en formato largo, ordenados por fecha de modificación

en orden inverso ejecute:

$ ls -latr

Para listar todos los archivos en formato largo, ordenados por tamaño ejecute:

$ ls -laS

Rutas absolutas y relativas

Una trayectoria o ruta absoluta, indica la forma de ubicar un archivo en el sistema dearchivos a partir del directorio raíz. Comienza con una “/" y especifica todos lo

directorios que existen antes del archivo que Ud. desea. Ejemplo:

$ ls /home/juan/

Una trayectoria o ruta relativa esta referida a su directorio actual. Existen dosdirectorios que se utilizan solamente para trayectorias relativas: “." y “..". El directorio“." se refiere al directorio actual, y “.." es el directorio anterior o directorio padre: son

20 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 21/129

 

Manipulación de archivos

“abreviaturas" de directorio, y existen en todos los directorios, aun el directorio raíztiene un directorio anterior: el es su propio directorio anterior. Ejemplo:

Para listar el directorio actual puede ejecutar:

$ ls ./$ ls .$ ls

Listar el contenido de un directorio inmediatamente superior:

$ ls ../

Listar el contenido de 2 directorios por encima del actual:

$ ls ../../

Listar el contenido del directorio tmp que se encuentra 2 directorios por encima delactual

$ ls ../../tmp/

El directorio HOME

Cada usuario tiene su propio directorio (denominado su directorio personal, o home eninglés). El es el dueño de este directorio, y de los archivos que va a crear posteriormente en él.

El directorio home es el directorio al cual accede automáticamente luego de haber iniciado una sesión en el sistema.

Cambiando directorios

cd : Cambiar de directorio (Change Directory)

El comando cd es exactamente el mismo que en DOS , con alguna funcionalidadextra. Puede usar . para referirse al directorio corriente y .. para referirse al directoriopadre del directorio corriente.

Si ingresa cd solo, ser llevado de vuelta a su directorio personal. Si ingresa cd - ser llevado al ultimo directorio en el cual estuvo.

Finalmente, puede especificar el directorio personal del usuario juan ingresando:

$ cd ~juan 

21 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 22/129

 

Manipulación de archivos

Usando ~ solo o seguido de / significa el directorio personal suyo. Note que, comousuario no privilegiado, normalmente no puede ingresar a los directorios personalesde otros usuarios (a menos que esos usuarios lo hayan autorizado explícitamente o

esa sea la configuración predeterminada del sistema), excepto si Ud. es root.

Ejemplos:

Cambiando al directorio superior usando rutas relativas:

$ cd ..

Cambiando al directorio /tmp usando la ruta absoluta:

$ cd /tmp

Retornando al último directorio utilizado:$ cd -

Cambiando al directorio HOME:

$ cd ~$ cd

Cambiando al directorio HOME de juan:

$ cd ~juan

Comodines de la línea de comandos

Los comodines permiten especificar de forma más eficiente múltiples archivos en lalínea de comandos.

Comodín Descripción

* Es reemplazado por el shell por "cualquier conjunto de caracteres"

? Es reemplazado por un y solo un caracter en cualquier posición[] Corresponde a cualquier caracter que se encuentre entre corchetes

[!] Corresponde a cualquier caracter que no se encuentre entrecorchetes

' El caracter ' (comilla simple), elimina el significado especial de lospatrones de englobamiento, también la barra invertida “\”

22 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 23/129

 

Manipulación de archivos

Comodín Descripción

{c1,c2} Corresponde con c1 o con c2

Ejemplos:

Listar todos los sub-directorios de directorio:

$ ls /directorio/*

Listar todos los archivos README un nivel por debajo de dir:

$ ls /dir/*/README

Listar los archivos que comianzan con a y tienen exactamente cuatro caracteres:

$ ls a???

Listar archivos cuyo nombre comience con a, A, b, B:

$ ls [aAbB]*

Listar archivos uyo nombre comience con cualquier letra del alfabeto:

$ ls [a-zA-Z]*

Listar archivos con nombre que comiencen con un número del 0 al nueve, seguido delnúmero 5, es decir 05, 15, 25, 35, 45, 55, 65, 75, 85, 95:

$ ls [012345789]5

Un listado igual al anterior pero simplificado con el uso de rangos:

$ ls [0-9]5

Listar todos los archivos cuyo nombre no comience con una vocal:

$ ls [!aeiou]*

Listar todos los archivos cuyo nombre no comience con letras minúsculas:

$ ls [!a-z]*

Listar el archivo salarios o el archivo sueldos:

$ ls {salario,sueldo}

Listar cualquier archivo que comience con sal o con sel:

23 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 24/129

 

Manipulación de archivos

$ ls {sal*,sel*}

$ ls {sal,sel}*

Listar los archivos README de los directorios /usr/share/doc/pam y/usr/share/doc/dovecot:

$ ls /usr/share/doc/{pam,dovecot}/README

Ejemplos de diferencias entre comillas simples y comillas dobles. Comillas dobles:

$ echo "El valor de la variable $PS1 es $PS1"El valor de la variable [\u@\h \W]\$ es [\u@\h \W]\$

Comillas simples:

$ echo 'El valor de la variable $PS1 es $PS1'El valor de la variable $PS1 es $PS1

Comillas dobles con carácter de escape para evitar la interpretación de la variable deentorno PS1:

$ echo "El valor de la variable \$PS1 es $PS1"El valor de la variable $PS1 es [\u@\h \W]\$

Comprobando espacio disponible

El sistema operativo Linux almacena organiza los datos en disco en una estructura de

árbol. El punto inicial de la estructura de árbol es el directorio “/” conocido comodirectorio raiz. La representación de los datos en el disco por medio de esta estructurade árbol es parte de la funcionalidad del sistema de archivos. El sistema de archivospor defecto de Linux es ext3.

Para poder acceder a los datos de un dispositivo que contiene un sistema de archivos,el dispositivo debe estar “montado”.

El término “montado” se refiere a que el dispositivo debe estar asociado a undirectorio en la estructura de directorios. En la siguiente figura se puede observar distintos dispositivos montados en directorios diferentes.

24 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 25/129

 

Manipulación de archivos

El primer disco contiene cuatro particiones, tres de ellas con sistema de archivos ext3.La primera partición esta montada en el directorio raíz. La tercera partición estamontada en el directorio /home, la cuarta partición esta montada en el directorio/tmp. Un segundo disco contiene una única partición que se encuentra montada en eldirectorio /datos.

Si se almacenan datos en el directorio /home o cualquier subdirectorio de el, seestara utilizando el espacio de la tercera partición del primer disco. Si se almacenandatos en /datos o cualquier subdirectorio de el, se estara utilizando espacio en lapartición del segundo disco. Si se almacenan datos en cualquier directorio que no sea/home, /tmp o /datos, se estara utilizando espacio de la partición asociada aldirectorio raíz, para el ejemplo mostrado en la imagen, es la primera partición delprimer disco.

El comando df muestra los distintos sistemas de archivos montados, su capacidadtotal, capacidad utilizada y capacidad libre. Si no se especifica ningún argumento,muestra el espacio disponible en todos los sistema de archivos existentes montados.

Las opciones más interesantes son:

25 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 26/129

 

Manipulación de archivos

Opción Descripción

-k Muestra los tamaños en bloques de 1024 bytes (1K). Si no seespecifica esta opción, se mostrarán los tamaños en bloques de 512bytes. Para convertir los tamaños de bloques a MB, es necesario dividir el tamaño reportado por 2048.

-l Muestra información exclusivamente de sistemas de archivo locales (nomuestra directorios compartidos por NFS).

-s Muestra el tamaño en kilobytes junto a cada archivo

-h Muestra en un formato fácil de interpretar 

-t <tipo> Muestra solamente los sistemas de archivos del tipo indicado

-i Muestra la utilizacion de inodos en lugar de la de bloques

-T Imprime el tipo de cada filesystem (sistema de archivos)

Ejemplos:

Tamaños de todos los sistemas de archivos:

$ df -k

Tamaños del sistema de archivos que contiene el directorio actual en formato fácil deinterpretar:

$ df -h .

Tamaños del sistema de archivos que contiene el archivo /etc/hosts:

$ df /etc/hosts

El comando du está relacionado a la obtención de información de espacio en disco. Sideseamos conocer el tamaño que ocupa en disco un directorio específico y todo sucontenido, utilizaremos el comando du.

El comando du también muestra el resultado en bloques de 512 bytes y tambiénacepta la opción -k para mostrarlos en bloques de 1024 bytes.

La opción mas útil es la opción-s

, que resume el total para el argumento dado.

Ejemplos:

Tamaño que ocupan todos los directorios del directorio actual:

$ du -sk *

26 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 27/129

 

Manipulación de archivos

Tamaño que ocupa el directorio actual:

$ du -sk .

Crear y borrar archivos y directorios

 mkdir: creación de directorios vacíos.

mkdir (MaKe DIRectory, Crear directorio) se usa para crear directorios. Su sintaxis essimple:

mkdir [opciones] <directorio> [directorio ...]

Sólo una opción es digna de interés: la opción -p. La misma hace dos cosas:

1. Crear los directorios padre si es que aún no existen. Si no se especifica esta opcióny los directorios padre no existen, mkdir simplemente fallará, quejándose quedichos directorios padre no existen;

2. Retornar silenciosamente si el directorio que Ud. desea crear ya existe.Similarmente, si no especifica la opción -p, mkdir fallará, quejándose que eldirectorio ya existe.

Aquí tiene algunos ejemplos. Crea un directorio denominado pepe en el directorioactual:

$ mkdir pepe

Crea un directorio misc en el directorio images creando primero el último si es queno existe:

$ mkdir -p images/misc/

touch: Creación de archivos vacíos.

Inicialmente, el comando touch no está orientado a la creación de archivos sino a laactualización de la hora de acceso y modificación de los archivos. Sin embargo,touch crea los archivos mencionados como archivos vacíos si es que no existan.

La sintaxis es:

touch [opciones] archivo [archivo...]

Entonces, ejecutar el comando:

$ touch archivo1 imagenes/archivo2

27 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 28/129

 

Manipulación de archivos

Crea un archivo vacío denominado archivo1 en el directorio corriente y un archivovaco denominado archivo2 en el directorio imágenes.

Borrar archivos y directorios

rm : borrar archivos o directorios

El comando rm (ReMove, Quitar) es utilizado para eliminar archivos o directorios. Susintaxis es la siguiente:

rm [opciones] <archivo|directorio> [archivo|directorio...]

Las opciones incluyen:

Opción Descripción

-r

-R 

Borrar recursivamente. Esta opción es obligatoria para borrar undirectorio, vacío o no. Sin embargo, también puede usar el comandormdir para borrar directorios vacíos.

-i Pedir confirmación antes de cada supresión.

-f La opuesta de -i, fuerza la supresión de los archivos o directorios.

-v  Modo “verbose”, muestra el nombre de cada archivo antes de eliminarlo.

Algunos ejemplos:

Borrar todos los archivos cuyo nombre termina en .jpg en el directorio imágenes yborrar el archivo archivo1 en el directorio actual, pidiendo confirmación para cadauno de los archivos

$ rm -i imagenes/*.jpg archivo1

Borra todo el directorio misc/ del directorio images/

rm -Rf images/misc/* 

Mover o renombrar archivos

 mv : mover o renombrar archivos

La sintaxis del comando mv (MoVe, mover) es la siguiente:

28 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 29/129

 

Manipulación de archivos

mv [opciones] <archivo|dir.> [archivo|dir. ...] <destino>

Algunas opciones:

Opción Descripción-f Fuerza la operación no hay advertencia alguna en caso de que la

operación sobre-escriba un archivo que ya existe.

-i Lo contrario a -f, pedir confirmación al usuario antes de sobre-escribir unarchivo existente.

-v  Modo verboso, reportar todos los cambios y la actividad.

Algunos ejemplos.

Mover todos los archivos del directorio /tmp/pics/ cuyos nombres terminan en

.png al directorio corriente (.), pidiendo confirmación antes de sobre-escribir cualquier archivo.

$ mv -i /tmp/pics/*.png .

Cambiar el nombre del archivo pepe a pepito.

$ mv pepe pepito

Mover, sin pedir confirmación, todos los archivos del directorio corriente cuyosnombres comiencen con archivo junto con todo el directorio imagenes/ al directoriotacho/, y mostrar cada operación llevada a cabo.

mv -vf archivo* imagenes/ tacho/

Copiando archivos y directorios

cp: copiar archivos y directorios

cp (CoPy, Copiar) permite copiar archivos y directorios. Su sintaxis es la siguiente:

cp [opciones] <archivo|dir.> [archivo|dir. ...] <destino>

cp tiene muchas opciones. Estas son las más comunes:

Opción Descripción

-R  Copiar recursivamente; obligatoria para copiar un directorio, incluso si estávacío.

29 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 30/129

 

Manipulación de archivos

Opción Descripción

-i Pedir confirmación antes de sobre-escribir cualquier archivo que pudierasobre-escribirse.

-f La opuesta de -i, reemplazar cualquier archivo existente sin pedir confirmación alguna.

-v  Muestra el nombre de cada archivo antes de copiarlo.

-p Preserva los permisos, el propietario, el grupo y los tiempos de los ficherosoriginales.

Algunos ejemplos:

Copia todos los archivos del directorio /tmp/imagenes al directorio imagenes/ubicado en el directorio corriente. Si se va a sobre-escribir un archivo se pide

confirmación:$ cp -i /tmp/imagenes/* imagenes/

Copia todo el directorio docs más todos los archivos del directorio /shared/mp3s aldirectorio miscosas ubicado en el directorio actual.

$ cp -vR docs/ /shared/mp3s/* miscosas/ 

Hace una copia del archivo pepe bajo el nombre pepito en el directorio actual.

$ cp pepe pepito

Determinando el tipo de un archivo

file: determina el tipo de archivo

El comando file prueba cada argumento e intenta clasificar el tipo de archivo.

En Linux todo está representado por medio de archivos, inclusive ciertos dispositivosdel sistema, como discos, unidades de cinta y puertos de entrada y salida.

Existen dos tipos de archivos:

• Archivos convencionales: son aquellos que contienen información y quegeneralmente sirven a los programas de aplicación.

• Archivos especiales: son aquellos que proveen un interfaz uniforme entre losprogramas y la E/S al hardware del ordenador.

30 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 31/129

 

Manipulación de archivos

Los archivos pueden clasificarse en:

• Archivo regular ( - ): Archivos comunes del sistema operativo, tipo ASCII o binario.

• Directorios ( d ): Archivos contenedores de otros archivos.

• Enlaces ( l ): Archivos que referencian a otros archivos.

• Tuberías ( p ): Archivos que permiten el intercambio de información entreprocesos.

• Archivos especial de bloques ( b ): Archivos que permiten el acceso adispositivos que manejan la E/S de la información por bloques y de forma aleatoria,como los discos duros.

•Archivos especial de caracter ( c ): Archivos que permiten el acceso adispositivos que manejan la E/S de la información en forma secuencial y por caracter, como las terminales, teclado y mouse.

• Archivos socket ( s ): Archivos relacionados a una conexión de red.

Visualizar archivos de texto

cat: mostrar el contenido de uno o más archivos en la pantalla

No hay mucho más que decir, este comando simplemente hace eso: mostrar el

contenido de uno o más archivos en la salida estándar, normalmente la terminal.Utilizando redirección de la salida estándar, puede concatenar uno o más archivosusando cat. Por ejemplo:

$ cat archivo1

less: un paginador 

Su nombre es un juego de palabras relacionado al primer paginador existente bajoUnix, que se denomina more. Un paginador es un programa que permite al usuariover archivos largos página por página (o, más precisamente, pantalla por pantalla).

Hablamos primero de less que de more porque su uso es mucho más intuitivo.Utilice el comando less para ver archivos grandes, que no entran en una pantalla.

Por ejemplo:

$ less /etc/termcap

31 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 32/129

 

Manipulación de archivos

Para acceder a la pantalla siguiente, pulse [barra espaciadora]; para volver a lapantalla anterior, pulse [b]; para salir, presione [q]. También puede usar las flechas dedirección para navegar con less.

Para buscar palabras dentro de un archivo de texto usando less, presione [/] y luegoescriba la palabra que quiere buscar. Por ejemplo:

/Linux

De esta forma buscará las coincidencias dentro del texto de la palabra Linux. Paraavanzar a la siguiente coincidencia, presione la tecla [n], para ir a la coincidenciaanterior presione la tecla [N].

De hecho, simplemente presione [h] para la ayuda (en inglés) y eche un vistazo. Perode todas formas, el objetivo de esta sección es que Ud. sea capaz de leer archivoslargos, y dicho objetivo ya está cumplido.

 more: paginador de archivos

El comando more permite la visualización de un archivo por páginas, así como elcomando less, excepto que las teclas de control son diferentes. La [barraespaciadora] es utilizada para avanzar una página del archivo, la tecla [Enter] paraavanzar por línea y la tecla [b] para retroceder una página. Para salir, utilice la tecla[q]. Puede buscar texto de la misma forma que en less, usando la tecla [/].

$ more /etc/termcap

32 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 33/129

 

3

Usuarios y grupos

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 34/129

 

Usuarios y grupos

Usuarios y grupos

Usuario y grupos, concepto

El Linux es un sistema operativo multiusuario. Cada usuario debe tener un “login” parainiciar sesión en el sistema y pertenece a uno o más grupos. Los grupos permitenorganizar usuarios de funciones o características similares de tal modo que éstospuedan compartir archivos, hacer más fácil la administración de la seguridad yconfiguración restricciones del sistema.

Cada usuario y grupo tiene un identificador numérico que es utilizado por el sistemapara diferenciar a los usuarios, conocidos como UID y GID. El sistema no reconocediferencia entre los usuarios según el nombre del usuario, por lo tanto, si dos usuarioscon nombres distintos tienen el mismo ID, el sistema Linux no podrá diferenciar quién

es quién.

El usuario root y otros usuarios del sistema

Existen tres categorías de cuentas de usuarios, usuario administrativo (root),usuarios regulares y usuarios de servicio.

El usuario root tiene el control total del sistema y puede sobrepasar cualquier restricción de seguridad.

Los usuarios regulares tienen privilegios necesarios para realizar las tareas normalesen Linux, como guardar archivos en su directorio personal, usar procesadores detexto, navegadores, etc. No pueden realizar la configuración del equipo o instalaciónde software a menos que el usuario root explícitamente lo permita.

Como los usuarios regulares no tienen privilegios administrativos, no puedenaccidentalmente o intencionalmente manipular archivos de configuración, borrarlos oinfectarlos con algún virus o programa trojano.

Existen servicios como samba, apache, mail, proxy, impresión, etc, que tienen supropia cuenta de usuario de servicio. Estas cuentas existen para permitir a estosprogramas interactuar con el computador y no necesitan de una contraseña válida.

Modelo de seguridad de Linux

Linux utiliza un grupo privado de usuarios (UPG, del inglés "User Private Group"),que permite que el manejo de grupos UNIX sea mucho más fácil. El esquema UPG noañade o cambia nada al modo tradicional UNIX de manejar grupos. Simplemente

34 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 35/129

 

Usuarios y grupos

ofrece una nueva convención para ello. Cada vez que se crea un nuevo usuario, por defecto, se le asigna un único grupo.

Anteriormente, los usuarios eran, por defecto, agregados a un grupo común. Esto

permite que cualquier persona dentro del mismo grupo, a menos que se hayaconfigurado de lo contrario, pueda acceder al directorio personal de otro usuario y enocasiones modificar o borrar archivos en él.

En el modelo UPG, ningún usuario puede acceder al directorio personal de otro, y sise desea que estos usuarios compartan archivos entre sí, se los agrupa en un gruposecundario común y a este grupo se permite el acceso a un directorio específico.

Comandos para obtener información de usuarios

Puede utilizar el comando who para averiguar quienes están utilizando el sistemaactualmente. La sintaxis del comando es:

who [opciones]... [ archivo | arg1 arg2 ]

El comando who tiene algunas opciones interesante:

Opción Descripción

-b Indica cuándo se inició por última vez el sistema.

-r Indica el nivel de ejecución actual.

-H Muestra una cabecera para los campos.

También puede utilizar el comando whoami para averiguar con qué usuario hainiciado sesión. Ejemplo:

$ whojperez pts/1 Oct 16 09:13 (192.168.6.13)plopez pts/2 Oct 16 09:49 (192.168.5.220)

$whoamijperez

El comando uptime le proporciona información de cuántos usuarios están

actualmente en el sistema, así como el tiempo que el equipo ha estado funcionando yla carga de trabajo hace 1, 5 y 15 minutos. Una carga normal de trabajo depende delequipo, cantidad de procesadores, memoria, etc. Ejemplo:

# uptime14:58:24 up 26 days, 11:26, 2 users, load average: 0.68, 0.73, 0.71

El comando id le permite obtener información del nombre de usuario, su UID, los

35 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 36/129

 

Usuarios y grupos

grupos a los que pertenece y el GID de cada uno de ellos. La sintaxis del comando es:

id [opcion]... [nombre_usuario]

Ejemplo:

$ iduid=64682(jperez) gid=48357(jperez) grupos=220(dba),48357(jperez)

Para mas información acerca del comando id consulte la página man del comando.

Cambiando la identidad del usuario

su: Usuario sustituto.

El comando su le permite ejecutar un shell con un UID o GID sustituto. La sentenciadel comando es:

su [opcion]... [-] [usuario [arg]...]

Si se ejecuta sin opciones, le solicitará que ingrese la contraseña para el usuario root.Si la contraseña proporcionada es correcta, habrá iniciado un shell como root y podrárealizar tareas administrativas.

La opción “-", como en “su -", indica que las variables de entorno del usuario anombre de quien estamos solicitando un shell, sean inicializadas.

Si se especifica un usuario específico, le solicitará la contraseña para ese usuario, amenos que sea usted el usuario root, a quién no se le solicita ninguna contraseña.

La opción más interesante es la opción “-c”, que ejecuta el comando dado comoargumento y finaliza. Por ejemplo, para visualizar el archivo shadow como rootejecute:

$ su -c "cat /etc/shadow"

La contraseña del usuario root deberá ser proporcionada.

36 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 37/129

 

4

Permisos de acceso a archivos y directorios

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 38/129

 

Permisos de acceso a archivos y directorios

Permisos de acceso a archivos y directorios

Seguridad de archivos en Linux

Como dueño del archivo, un usuario puede configurar permisos sobre sus archivos.Estos permisos distinguen tres categorías de usuarios: el dueño del archivo, todos losusuarios que son miembros del grupo asociado al archivo (denominado también grupodueño) pero no son el usuario dueño, y los otros, que son todos los usuarios que noson ni el dueño ni miembros del grupo dueño.

Tipos de permisos de archivos

Hay tres permisos diferentes:

1. Permiso de lectura (r por read, leer): para un archivo, esto permite que se lea sucontenido. Para un directorio, esto permite que se muestren los archivos quecontiene (es decir, los archivos en este directorio).

2. Permiso de escritura (w por write, escribir): para un archivo, esto permite que semodifique su contenido. Para un directorio, esto permite que un usuario agregue y/oquite archivos de este directorio, incluso si no es el dueño de esos archivos.

3. Permiso de ejecución (x por execute, ejecutar): para un archivo, esto permite suejecución (en consecuencia, normalmente sólo los archivos ejecutables tienen

activo este permiso). Para un directorio, esto permite que un usuario lo recorra (loque significa poder ingresar a, o pasar por, ese directorio). Note que esto estáseparado del acceso de lectura: bien puede ser que Ud. pueda recorrer undirectorio, pero no leer su contenido! Todas las combinaciones de estos permisosson posibles.

Examinando los permisos de archivos y directorios

Los comandos ls -l y ls -ld nos permiten examinar los permisos de archivos ydirectorios.

Los diferentes campos de salida del comando ls -l son los siguientes (de izquierdaa derecha):

● El primer caracter es el tipo del archivo, contiene un guión (-) si es un archivoregular, una (d) si es un directorio, una (l) si es un enlace, una (c) si es unarchivo de caracter, una (b) si es un archivo de bloques, una (p) si es unatubería o una (s) si es un archivo socket.

38 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 39/129

 

Permisos de acceso a archivos y directorios

● Los nueve caracteres que siguen representan los permisos asociados con esearchivo. Aquí puede ver la distinción que se hace entre los diferentes usuariospara el mismo archivo:

Los primeros tres caracteres representan los derechos asociados con el dueñodel archivo, los siguientes tres se aplican a todos los usuarios que pertenecenal grupo dueño del archivo, y los últimos tres se aplican a los otros usuarios queno el propietario del archivo ni pertenecen al grupo propietario. Un guión (-)significa que el permiso no está activo.

● Luego viene el número de vínculos del archivo. Posteriormente veremos quelos archivos no sólo se identifican por su nombre sino también por un número(el número de i-nodo), y por lo tanto es posible que un archivo en disco tengavarios nombres.

Para un directorio, el número de vínculos tiene un significado especial, a nivelgeneral, puede utilizar el número para identificar cuantos sub directorioscontiene ese directorio.

● Luego viene el nombre del dueño del archivo y el nombre del grupo dueño.

● Finalmente, se muestra el tamaño del archivo (en bytes) y la fecha de su últimamodificación, seguido por último por el nombre del archivo o directoriopropiamente dicho.

Cambiando permisos de archivos

chmod : Cambiar permisos (modos) de archivos.

El comando chmod (CHange MODe, Cambiar el modo) La sintaxis general es:

chmod [opciones] <cambio de modo> <archivo|dir> [archivo|dir. ...]

Existen dos formas que puede indicar los permisos:

● En octal: entonces los derechos del usuario dueño se corresponden con

39 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 40/129

 

Permisos de acceso a archivos y directorios

números de la forma <x>00, donde <x> corresponde al permiso asignado:

– 4 para permiso de lectura

–2 para permiso de escritura

– 1 para permiso de ejecución;

Similarmente, los derechos del grupo propietario toman la forma <x>0 y lospermisos para los otros la forma <x>. Por lo tanto, todo lo que Ud. necesitahacer es sumar los permisos asignados para obtener el modo correcto.

Por lo tanto, los permisos rwxr-xr-- corresponden a 400+200+100 (permisosdel dueño, rwx) +40+10 (permisos del grupo propietario, r-x) +4 (permisos delos otros, r--) = 754; de esta forma, los permisos se expresan en términosabsolutos. Esto significa que los permisos previos se reemplazanincondicionalmente.

Puede utilizar una tabla como la inferior para asignar permisos, luego conpráctica, mentalmente podrá asignar estos permisos.

u g o

R (4) 4 4 -

W (2) 2 - -

X (1) 1 1 -

7 5 0

El resultado de los permisos en octal calculado en el cuadro es 750, indicandotodos los permisos para el usuario propietario, lectura y ejecución para el grupopropietario y ningún permisos para los demás usuarios.

● Con expresiones: aquí los permisos se expresan con una secuencia deexpresiones separadas por comas. Por lo tanto una expresión toma la forma:

[categoría]+|-|=<permisos>

La categoría puede ser una o más de:

• u (User. Usuario, permisos para el dueño)

• g (Group. Grupo, permisos para el grupo propietario)

• o (Others. Otros, permisos para los otros ).

40 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 41/129

 

Permisos de acceso a archivos y directorios

Si no se especifica categoría alguna, los cambios se aplicarán para todas lascategorías. Un signo + otorga un permiso, un - lo niega. Finalmente, el permisoes uno o más de:

• r (Read, lectura)

• w (Write, escritura)

• x (eXecute, ejecución).

Las opciones principales son:

Opción Descripción

-R  Cambiar los permisos recursivamente.

-v  Modo verboso , muestra las acciones efectuadas para cada archivo.

Ejemplos:

Quitar recursivamente el permiso de escritura para los otros sobre todos los archivosy subdirectorios del directorio /shared/docs/.

$ chmod -R o-w /shared/docs

Quitar recursivamente el permiso de escritura para el grupo y para los otros sobretodo el directorio privado/, y quitar el permiso de ejecución para los otros.

$ chmod -R og-w,o-x privado/

Asignar permiso de lectura y ejecución para todos:

$ chmod +rwx miarchivo.bash

Permisos especiales

Existen permisos especiales para archivos y directorios

● T: Sticky (pegajoso) ((t) minúscula si el permiso (x) además está asignado paraotros).

● S: SGID (Set Group ID). ((s) minúscula en el grupo si el permiso (x) ademásestá asignado).

● S: SUID (Set User ID). ((s) minúscula en el usuario si el permiso (x) además

41 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 42/129

 

Permisos de acceso a archivos y directorios

está asignado)

El permiso Sticky en archivos no tiene función en Linux. El permiso Sticky endirectorio provoca que los archivos contenidos dentro de ese directorio puedan ser 

borrados únicamente por el usuario propietario y por el usuario root.

El permiso SUID en directorios no tiene función en Linux. El permiso SUID en archivospermite que si el archivo es ejecutable, en lugar de correr con los permisos del usuarioque ejecutó el archivo, se ejecutará con los permisos del usuario propietario delarchivo.

El permiso SGID en archivos permite que si el archivo es ejecutable, en lugar decorrer con los permisos del grupo al que pertenece el usuario que ejecutó el archivo,se ejecutará con los permisos del grupo propietario del archivo.

El permiso SGID en directorios obliga a que los archivos que se crean por debajo deldirectorio, hereden el grupo propietario del directorio contenedor.

El SGID en directorios es parte del modelo de seguridad User Private Group.

Para asignar los permisos especiales en forma octal debe utilizar:

● Sticky: 1000

● SGID: 2000

● SUID: 4000

Para asignar con expresiones:

● Sticky: +t

● SUID: u+s

● SGID: g+s

Ejemplos:

42 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 43/129

 

Permisos de acceso a archivos y directorios

Establecer sticky, lectura, escritura y ejecución para todos:

$ chmod 1777 tmp

Establecer sticky:

$ chmod +t tmp

Establecer SGID, lectura, escritura y ejecución para el propietario, lectura y ejecuciónpara todos:

$ chmod 2755 directorio/

Establecer SGID:

$ chmod g+s directorio/

Establecer SUID:

$ chmod u+s archivo.bash

Permisos por defecto de los archivos

Cuando se crea un archivo o directorio, éste se crea con ciertos permisos por defecto.Los permisos por defecto están dados por la configuración del umask.

El comando umask permite definir qué permisos tendrán por defecto los archivos y

directorios son creados.

El comando umask sin parámetros nos devuelve dicho valor :

$ umask022

Los permisos se calculan en base al umask de la siguiente manera:

• Para nuevos directorios o archivos ejecutables (programas compilados):

777 Permisos predeterminados

- 022 Se resta el valor de umask755 Permisos permitidos

Esto significa que los permisos con los que el archivo será creado serán 755 (rwxr-x-r-x).

• Para nuevos archivos de texto:

43 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 44/129

 

Permisos de acceso a archivos y directorios

666 Permisos predeterminados- 022 Se resta el valor de umask

644 Permisos permitidos

En el caso anterior, 666-022 = 644 , es decir , cualquier fichero que creemos con uneditor ó con otros comandos serán creados con permisos 644 (rw-r--r--) .

Para cambiar la máscara , usamos el comando umask con la nueva máscara que ledeseamos dar :

$ umask 077

En cuyo caso , todos los ficheros a partir del ése momento , y hasta que finalice lasesión, serán creados con sin permisos para el grupo y los otros.

44 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 45/129

 

5

El sistema de archivos

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 46/129

 

El sistema de archivos

El sistema de archivos

Sistemas de archivos ext2/ext3

Sistema de archivos Ext2: El Segundo Sistema de Archivos Extendido (SecondExtended Filesystem) (su forma abreviada es Ext2FS o simplemente ext2) ha sido elsistema de archivos predeterminado de GNU/Linux por muchos años. El mismoreemplazó al Sistema de archivos extendido (Extended File System). De allí, eltérmino segundo.

El sistema de archivos nuevo corrigió ciertos problemas y limitaciones. Ext2FSrespeta las normativas usuales para los sistemas de archivos de tipo Unix. El mismofue diseñado para evolucionar desde su concepción, a la vez de ofrecer una granrobustez y buen rendimiento.

Sistema de archivos Ext3: Como su nombre lo sugiere, el Tercer Sistema de Archivos Extendido (Third Extended File System es el sucesor de Ext2FS. El mismoes compatible con este último pero está mejorado por una característica muyinteresante: journaling.

Una de las mayores fallas de los sistemas de archivos tradicionales como Ext2FS essu baja tolerancia a caídas del sistema abruptas (fallas de energía o programas quese cuelgan). En general, dichos eventos implican un examen prolongado de laestructura del sistema de archivos e intentos para corregir errores, resultando algunasveces en una corrupción aun mayor del sistema de archivos.

En consecuencia puede producirse una pérdida total o parcial de los datos grabados.El  journaling  responde a este problema. Para simplificar, digamos que la idea esgrabar las acciones (tales como el guardar un archivo) antes de llevarlas a caboefectivamente. Podemos comparar su funcionamiento al de un capitán de un bote queanota en su cuaderno de bitácora los eventos diarios.

El resultado, un sistema de archivos coherente siempre. Y si ocurren problemas, laverificación es muy rápida y las reparaciones eventuales, muy limitadas. Por lo tanto,Ext3FS ofrece la tecnología de sistemas de archivos con journal, a la vez quemantiene la estructura de Ext2FS asegurando una compatibilidad excelente.

Enlaces o vínculos simbólicos (blandos) y duros

Los i-nodos son, junto con el paradigma “todo es un archivo”, la parte fundamental decualquier sistema de archivos Unix. La palabra i-nodo es una abreviación deInformation NODE (NODO de Información). Los i-nodos se almacenan en el disco enuna tabla de i-nodos. Existen para todos los tipos de archivos que se pueden

46 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 47/129

 

El sistema de archivos

almacenar en un sistema de archivos, y esto incluye a los directorios, las tuberíasnombradas, los archivos de modo caracter, y as sucesivamente. Los i-inodos tambiénson la forma en la que Unix identifica de forma unívoca a un archivo.

En Unix, Ud. no identifica a un archivo por su nombre, sino por un número de i-nodo.La razón para esto es que un mismo archivo puede tener varios nombres, o no tener ninguno.

Los enlaces o vínculos

La mejor forma de comprender qué hay detrás de esta noción de vínculo es por mediode un ejemplo. Creemos un archivo (regular):

$ touch archivo1

$ ls -il archivo132555 -rw-rw-r-- 1 jperez jperez 0 sep 10 08:12 archivo1

La opción -i del comando ls imprime el número de i-nodo, que es el primer campode la salida. Como puede ver, antes de crear el archivo a, no haba archivo alguno enel directorio.

El otro campo de interés es el tercero, que es el contador de vínculos del archivo(bueno, de hecho, del i-nodo). De hecho, el comando touch archivo1 puedesepararse en dos acciones distintas:

1. Creación de un i-nodo, al cual el sistema le atribuye el número 32555, y cuyo

tipo es el de un archivo regular,

2. Creación de un vínculo a este i-nodo.

Por lo tanto, el archivo archivo1 es un vínculo al i-nodo numerado 32555, y por elmomento es sólo uno: el contador de vínculos muestra un 1.

Pero ahora, si ingresamos:

$ ln archivo1 archivo2

$ ls -il archivo?

32555 -rw-rw-r-- 2 jperez jperez 0 sep 10 08:12 archivo132555 -rw-rw-r-- 2 jperez jperez 0 sep 10 08:12 archivo2

Habremos creado otro vínculo al mismo i-nodo. Como puede ver, no hemos creadoarchivo alguno denominado archivo2, sino que sólo hemos agregado otro vínculo ali-nodo numerado 32555 en el mismo directorio y lo denominamos archivo2. Puede ver en la salida de ls -l que el contador de vínculos para el i-nodo ahora es 2, y ya noes 1

47 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 48/129

 

El sistema de archivos

Ahora, si hacemos:

$ rm archivo1$ ls -il archivo2

32555 -rw-rw-r-- 1 jperez jperez 0 sep 10 08:12 archivo2

Vemos que incluso cuando hemos borrado el archivo original, el i-nodo todavía existe.Pero ahora el único vínculo a él es el archivo denominado archivo2.

Por lo tanto, bajo Unix un archivo tiene uno o más vínculos en uno o más directorios,los cuales pueden ser considerados el nombre del archivo. También los directorios sealmacenan en i-nodos, pero su contador de vínculos, contrariamente a todos los otrostipos de archivos, es el número de subdirectorios que contiene. Existen al menos dosvínculos por directorio: el directorio en sí mismo (.) y su directorio padre (..).

Ejemplos típicos de archivos que no están vinculados (es decir, no tienen un nombre)son las conexiones de red: nunca verá el archivo correspondiente a su conexión conun sitio web en su árbol de archivos, sin importar que directorio intente. Similarmente,cuando usa una tubería en el shell, el archivo que corresponde a la misma existe,pero no está vinculado.

Los vínculos simbólicos y la limitación de los vínculos duros

Los vínculos simbólicos son archivos de un tipo particular que sólo contienen unacadena de caracteres arbitraria, que puede, o no, apuntar a un nombre de archivoexistente. Cuando se menciona un vínculo simbólico en la línea de comandos o en un

programa, de hecho se accede al archivo al que apunta, si es que existe. Por ejemplo:

$ echo "Hola" > miarchivo$ ln -s miarchivo mivinculo

$ ls -iltotal 4 169 -rw-rw-r-- 1 reina reina 6 sep 10 21:30 miarchivo416 lrwxrwxrwx 1 reina reina 6 sep 10 21:30 mivinculo -> miarchivo

$ cat miarchivoHola

$ cat mivinculoHola

Puede ver que el tipo de archivo para mivinculo es 'l', por Link (Vínculo). Losderechos de acceso para un vínculo simbólico son insignificantes: siempre seránrwxrwxrwx. También puede ver que este es un archivo diferente de miarchivo, yaque su número de i-nodo es diferente. Pero se refiere al archivo miarchivo demanera simbólica, por lo tanto cuando ingresa cat mivinculo, en realidad estaráimprimiendo el contenido del archivo miarchivo.

48 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 49/129

 

El sistema de archivos

Para demostrar que un vínculo simbólico contiene una cadena de caracteresarbitraria, podemos hacer lo siguiente:

$ ln -s "No soy un archivo existente" otrovinculo

$ ls -il otrovinculo418 lrwxrwxrwx 1 reina reina 20 sep 10 21:43 otrovinculo -> No soy un archivoexistente

$ cat otrovinculocat: otrovinculo: No existe el fichero o el directorio

Pero los vínculos simbólicos existen porque superan varias de las limitaciones de losvínculos normales ( duros ):

● No se puede crear un vínculo a un i-nodo en un directorio que está en unsistema de archivos diferente a dicho i-nodo.

● No se pueden vincular dos directorios, debido a que el contador de vínculospara un directorio tiene un uso especial como hemos visto. Pero Ud. puedehacer que un vínculo simbólico apunte a un directorio y usarlo como sirealmente fuera un directorio. Por lo tanto los vínculos simbólicos son muyútiles en muchas circunstancias, y muy a menudo, la gente tiende a usarlospara vincular archivos entre sí, incluso cuando podría haberse usado un vínculonormal. No obstante, una ventaja de los vínculos normales es que Ud. nopierde el archivo si borra el original.

● Los permisos de un vínculo no pueden ser modificados, siempre será 777.

● Finalmente, si ha observado atentamente, sabrá que el tamaño de un vínculosimbólico es simplemente el tamaño de la cadena de caracteres.

Para borrar un vínculo se utiliza el comando rm, como con cualquier otro archivo.

Buscando y procesando archivos

find : busca archivos basado en criterios.

find es un utilitario de Unix muy antiguo. Su rol es buscar recursivamente uno o más

directorios y encontrar archivos que se correspondan con un cierto conjunto decriterios en esos directorios. Aunque es muy útil, su sintaxis es verdaderamentecompleja, y usarlo requiere cierta práctica. La sintaxis general es:

find [opciones] [directorios] [criterios] [accion] 

Si no especifica directorio alguno, find buscará en el directorio corriente. Si noespecifica el criterio, esto es equivalente a verdadero, por lo que se encontrarán

49 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 50/129

 

El sistema de archivos

todos los archivos.

Las opciones, criterios y acciones son tan numerosas que solo mencionaremosalgunas de cada una. Comencemos por las opciones:

Opción Descripción

-xdev  No extender la búsqueda a los directorios ubicados en otrossistemas de archivos.

-follow Seguir los vínculos simbólicos si apuntan a directorios. Por defecto no los sigue.

Algunos criterios que pueden ser utilizados para la búsqueda son:

Criterio Descripción-type <tipo>  Busca los archivos de un tipo dado; <tipo> puede ser uno

de: f (archivo regular), d (directorio), l (vínculo simbólico), s(socket), b (archivo en modo de bloques), c (archivo enmodo caracter) p (tubería nombrada).

-name <patron>  Encontrar los archivos cuyo nombre se corresponde con el<patron> dado. Con esta opción, se trata a <patron> comoun patrón de englobamiento del shell.

-iname <patron>  Como -name, pero sin distinguir mayúsculas/minúsculas.

-mtime <n>  Encontrar los archivos a los que se han modificado hace <n>

días. También puede especificar +<n> o -<n>, en cuyo casola búsqueda se hará para los archivos modificados antes den días o de <n> días hasta ahora respectivamente.

-newer <archivo>  Encontrar los archivos que han sido modificados másrecientemente que el archivo <archivo>.

Existen muchas otras pruebas, debe referirse a la página man para más detalles.

Para combinar las pruebas, Ud. puede utilizar uno de:

●<c1> -a <c2>: Verdadero si tanto <c1> como <c2> son verdaderas; -a estáimplícito, por lo tanto puede ingresar <c1> <c2> <c3> ... si quiere que todas laspruebas <c1>, <c2>, ... sean verdaderas.

● <c1> -o <c2>: Verdadero si <c1> o <c2> o ambos son verdaderos. Note que -otiene una precedencia menor que -a, por lo tanto si desea, por ejemplo, losarchivos que verifican los criterios <c1> o <c2> y verifican el criterio <c3>,tendrá que usar paréntesis y escribir ( <c1> -o <c2> ) -a <c3>. Debe escapar 

50 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 51/129

 

El sistema de archivos

(desactivar) los paréntesis, ya que si no lo hace ¡el shell los interpretará!

● -not <c1>: Invertir la prueba <c1>, por lo tanto -not <c1> es verdadero si <c1>es falso.

Finalmente, puede especificar una acción para cada archivo encontrado. Las accionesmás usadas frecuentemente son:

Acción Descripción

-print Simplemente imprime el nombre de cada archivo en lasalida estándar. Esta es la acción predeterminada si Ud. noespecifica acción alguna.

-ls Muestra en la salida estándar el equivalente de ls -ilds

para cada archivo que encuentra.-exec <comando>  Ejecutar el comando <comando> sobre cada archivo

encontrado. La línea de comandos <comando> debeterminar con un ;, que deberá desactivar para que el shell nolo interprete; la posición del archivo se representa con {}.

-ok <comando>  Igual que -exec pero pedir confirmación para cadacomando.

Ejemplos:

Digamos que quiere encontrar todos los directorios en /usr/share. Entonces

ingresará:

$ find /usr/share -type d

Suponga que tiene un servidor HTTP, todos sus archivos HTML están en/var/www/html, que coincide con su directorio corriente. Ud. desea encontrar todoslos archivos que no se modificaron en el último mes. Debido a que tiene páginas devarios autores, algunos archivos tienen la extensión html y otros la extensión htm.Desea mover estos archivos en el directorio /var/www/obsolete . Entoncesingresará:

$ find \( -name "*.htm" -o -name "*.html" \) -a -mtime +30 -exec mv {} \/var/www/obsolete \;

Está bien, este es uno un poco complejo y requiere una pequeña explicación. Elcriterio es este: \( -name "*.htm" -o -name "*.html" \) -a -mtime +30que hace lo que queremos: Encuentra todos los archivos cuyos nombres terminan con .htm o con .html \(

51 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 52/129

 

El sistema de archivos

-name "*.htm" -o -name "*.html" \) , y (-a) que no han sido modificados enlos últimos 30 días, lo que es más o menos un mes (-mtime +30).

Note los paréntesis, aquí son necesarios, porque -a tiene una precedencia mayor.

Note también que los paréntesis están desactivados para el shell.

Y finalmente, está el comando a ejecutar para cada uno de los archivos: -exec mv{} /var/www/obsolete \; Aquí también, tiene que desactivar el ; para el shell,ya que de no ser así el shell lo interpretaría como un separador de comandos. Si no lohace, find se quejará que le falta un argumento a -exec.

bzip2 y gzip: comandos de compresión de datos

Al principio, bzip2 había sido escrito como un reemplazo de gzip. Sus relaciones de

compresión generalmente son mejores, pero por otra parte, toma más memoria. Larazón por la cual todavía está aquí gzip es que todavía es más usado que bzip2.

Ambos comandos tienen una sintaxis similar:

gzip [opciones] [archivo(s)]gunzip [opciones] [archivo(s)]

bzip2 [opciones] [archivo(s)]bunzip2 [opciones] [archivo(s)]

Si no se especifica un nombre de archivo, tanto gzip como bzip2 esperarán datos

de la entrada estándar y enviarán los resultados a la salida estándar. Por lo tanto,puede usar ambos programas en tuberías. También ambos programas tienen unconjunto de opciones en común:

Opción Descripción

-1 .. -9 Configuran el nivel de compresión. A mayor número, mejor compresión, pero mejor también significa más lenta.

-d  Descomprimir el(los) archivo(s). Esto es equivalente a usar gunzipo bunzip2.

-c Volcar el resultado de la compresión/descompresión de los archivos

dados en la línea de comandos a la salida estándar.

Ahora, algunos ejemplos. Digamos que quiere comprimir todos los archivos queterminan con .txt en el directorio actual usando bzip2, entonces usará:

$ bzip2 -9 *.txt

52 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 53/129

 

El sistema de archivos

Los archivos quedarán con un nombre que termina en .bz2.

$ gzip -9 *.txt

Los archivos quedarán con un nombre que termina en .gz.

Para descomprimir los archivos utilice los comandos bunzip2 y gunziprespectivamente.

También existen otros utilitarios de compresión para GNU/Linux tales como zip, arjo rar.

El comando zip

El comando zip también es muy utilizado. La sintaxis del comando zip es la

siguiente:

zip [opciones ...] [archivo_zip archivo1 archivo2 ... ]

Para comprimir archivos con el comando zip ejecute:

$ zip archivo.zip archivo1 archivo2 archivo3

Para comprimir todo un directorio ejecute el comando:

$ zip -r archivo.zip directorio

Para listar el contenido de un archivo zip utilice el comando:

$ unzip -l archivo.zip

Para descomprimir un archivo ejecute:

$ unzip archivo.zip

Copias de seguridad con el comando tar 

Al igual que find, tar es un utilitario Unix de larga data, y como tal, su sintaxis es unpoco especial. La sintaxis es:

tar [opciones] [archivos...]

Entre las opciones encontramos:

53 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 54/129

 

El sistema de archivos

Opción Descripción

c Esta opción se usa para crear nuevos paquetes (respaldos) tar.

x Esta opción se usa para extraer los archivos de un paquete tar 

existente.t Listar los archivos de un paquete tar existente.

 v  Esto simplemente listará los archivos mientras se agregan o seextraen de un paquete, o, en conjunción con la opción t (ver arriba), imprime un listado largo de archivo en vez de uno corto.

f <archivo>  Crear, extraer o listar los archivos del paquete <archivo>. Si<archivo> es un dispositivo de cinta, como /dev/st0, se listará elcontenido del medio. Si el parámetro archivo es - (un guión, laentrada o la salida (dependiendo de si está creando unarchivador o extrayendo de uno) será asociado con la entrada

estándar o la salida estándar.z Le dice a tar que el paquete a crear debe comprimirse con gzip,

o que el paquete del que se quiere extraer está comprimido congzip.

j Le dice a tar que el paquete a crear debe comprimirse conbzip2, o que el paquete del que se quiere extraer estácomprimido con bzip2.

 p Cuando se extraen archivos de un paquete, preservar todos losatributos del archivo, incluyendo pertenencia, último tiempo deacceso, y así sucesivamente. Muy útil para los volcados del

sistema de archivos.

Ejemplos:

Hace una copia de seguridad de todos los archivos del directorio personal de jose alarchivo /tmp/backup_home.tar:

$ tar cvf /tmp/backup_home.tar /home/jose

Lista el contenido de la copia de seguridad:

$ tar tvf /tmp/backup_home.tar

Restaura la copia de seguridad:

$ tar xvf /tmp/backup_home.tar

También es posible restaurar tan solo algunos archivos específicos de la copia deseguridad, para ello, debe especificar como un argumento más al comando tar x el

54 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 55/129

 

El sistema de archivos

nombre del archivo y su ruta, así como se muestra en el comando tar t. Por ejemplo:

$ tar xvf /tmp/backup_home.tar home/jose/miarchivo.txt

La ubicación donde los archivos son restaurados depende de el comando con el quefueron salvados los archivos. Si se utilizó una ruta absoluta para especificar la lista dearchivos, se restauran en su ubicación original, si se utilizó una ruta relativa paraespecificar la lista de archivos, se restaurarán en una ruta a partir del directorio actual.

El Linux por defecto remueve la raíz (/) de los archivos especificados con rutacompleta.

Nombres de archivos comprimidos comunes y programas asociados

Al obtener de Internet o recibir un archivo que debe ser descompactado en Linux,identifique el programa a utilizar según el nombre del archivo:

Nombre Descripción

.gz Archivo comprimido con gzip.

.bz2 Archivo comprimido con bzip2.

.tar.gz o .tgz Empaquetado con tar y comprimido con gzip. Utilice gunzip paradescomprimir el archivo, luego el comando tar, o utilice tar conla opción z para realizar ambos pasos de una sola vez.

.tar.bz2 Empaquetado con tar y comprimido con gzip2. Utilice bunzip2para descomprimir el archivo, luego el comando tar, o utilice tar con la opción j para realizar ambos pasos de una sola vez.

.zip Archivo comprimido con zip.

.Z Comprimido con el comando compress. Utilice el comandouncompress para descomprimirlo. Generalmente no se instalapor defecto en Linux debido a su pobre habilidad decompresión.

55 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 56/129

 

6

El editor vi

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 57/129

 

El editor vi

El editor vi

Ejecutar vi

El comando vi es utilizado editar archivos de texto. Para ejecutar vi, simplementetiene ingresar el comando vi seguido del nombre de archivo que desea crear. Ver auna pantalla con una columna de tildes (~) en el lado izquierdo, vi esta ahora enmodo de comando. Cualquier cosa que teclee ser a interpretado como un comando,no como texto que usted desea escribir.

Para introducir texto, tiene que teclear un comando. Los dos comandos de entradabásicos son los siguientes:

Comando Descripción

i Insertar texto a la izquierda del cursor.

a Añadir texto a la derecha del cursor.

Dado que esta al comienzo de un archivo vacío, no importa cual de estos usar.Presione la tecla a o la tecla i y después teclee el siguiente texto:

Las pulgas grandes tienen pequeñas pulgas<ENTER>sobre sus espaldas para que les muerdan.<ENTER>Y las pulgas pequeñas tienen pulgas mas pequeñas<ENTER><Esc>

Fijese que tiene que pulsar la tecla Esc para finalizar la inserción y volver al modo decomando.

Comandos de movimiento del cursor 

Si bien el Linux es posible desplazarse con las teclas de dirección, es recomendadoque aprenda a utilizar las siguientes teclas para mover el cursor dentro del vi:

Comando Descripciónh Mueve el cursor un espacio a la izquierda.

j Mueve el cursor hacia abajo.

k Mueve el cursor hacia arriba.

l Mueve el cursor un espacio a la derecha.

57 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 58/129

 

El editor vi

Estos comandos se pueden repetir manteniendo la tecla pulsada. Intente mover elcursor por el texto ahora. Si intenta un movimiento imposible, por ejemplo, pulsar la

tecla k cuando el cursor esta en la línea superior, la pantalla parpadear amomentáneamente o el terminal sonar.

Borrar texto

Comando Descripciónx Borra el caracter que hay en el cursor.

D Borra toda la línea desde la posición actual del cursor.

dw Borra la palabra que está delante del cursor. Puede indicar mas de unapalabra usando d<n>w, siendo <n> la cantidad de palabras que deseaborrar.

dd  Borra toda la línea en la que se encuentra el cursor.

Mueva el cursor a la primera línea y ubíquelo de modo que esté sobre la n. Pulse laletra x , y la n desaparecerá. Ahora pulse la letra i para cambiarse al modo deinserción y vuelva a teclear la n. Pulse Esc cuando haya terminado.

Mueva el cursor a la última línea y presione dos veces la tecla d (dd). Este comandoborrara toda la línea sobre la cual está situado.

Cambiar texto

Comando Descripciónr Cambia (reemplaza) el caracter que hay en el cursor.

cw Cambia toda la palabra que está por delante del cursor.

Mueva el cursor a la primera línea y ubiquelo de modo que esté sobre la letra P de la

primera palabra pulgas. Pulse la letra r, y el caracter al cual desea cambiar. Nonecesita volver a pulsar la tecla Esc debido a que no ha entrado en modo edición.

Ahora sitúe el cursor en la segunda línea al comienzo de la palabra pequeñas. Pulsela letra c seguido de w (cw), ahora podrá cambiar toda esa palabra por la que desee.Pulse Esc cuando haya terminado.

58 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 59/129

 

El editor vi

Deshaciendo y rehaciendo cambios

Comando Descripciónu Deshacer la operación (undo).

CTRL+r Reehacer la operación (redo).

. Repetir la última acción.

Si desea deshacer algún cambio que haya realizado, presione la tecla Esc y acontinuación la tecla u.

Si desea rehacer un cambio que deshizo, presione la combinación de teclas CTRL+r,o tecla Esc, luego la tecla dos puntos “:” y escriba la palabra redo.

La tecla . Puede utilizarla para repetir la última acción realizada, sea cual fuera quefué.

Grabando y saliendo

Comando Descripción:w Grabar el archivo.

q  Salir.

q! Salir sin guardar las modificaciones.wq  Guardar y salir.

wq! Guardar y salir omitiendo la protección de escritura. Sólo posible para elpropietario del archivo y root.

Asegúrese de que está en modo de comando presionando la tecla Esc. Luegopresione la tecla dos puntos y luego w (:w). Esto guardara el archivo en disco. Elcomando para salir de vi es q. Si quiere combinar el guardar y salir, utilice :wq.

Para salir sin guardar los cambios que ha realizado, presione la tecla Esc y luego :q!.

Cortando, copiando y pegando

59 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 60/129

 

El editor vi

Comando Descripcióncc Corta una línea y cambia a modo inserción.

yy Copia una línea. Puede indicar <n>yy para copiar <n> líneas.

 p Pega una línea por debajo del cursor.

Otras operaciones útiles

Comando Descripcióno Letra “o” minúscula. Inserta una línea por debajo del cursor y cambia a

modo inserción.

O Letra “o” mayúscula. Inserta una línea por encima del cursor y cambia amodo inserción.

 A  Agregar texto al final de la línea.

I Agregar texto al inicio de la línea.

J  Unir la línea inferior con la línea en la cual está posicionada el cursor.

Buscando, reemplazando y usando de expresiones regulares

vi le permite buscar una cadena de texto en el buffer de edición.

Comando Descripción/Linux Busca hacia la derecha y abajo la siguiente instancia de la palabra

Linux.

?Linux Busca hacia la izquierda y arriba la siguiente instancia de la palabraLinux.

n Repite la última búsqueda.

 N Repite la última búsqueda en dirección opuesta.

J  Unir la línea inferior con la línea en la cual está posicionada el cursor.

La cadena en el comando / or ? puede ser una expresión regular. Los caracteresespeciales de una expresión regular son:

60 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 61/129

 

El editor vi

Búsqueda y sustituciones

vi usa el modo de comandos de ex para llevar a cabo búsquedas y sustituciones.Todos los comandos que empiezan con dos puntos son comandos en modo ex.

Los comandos de búsqueda y sustitución permiten que se usen expresiones regularessobre un rango de líneas y sustituir la tira de caracteres que se busca. El usuariopuede pedir confirmación antes de que se realice la sustitución. Para buscar y sustituir una línea utilice la siguiente sintaxis:

:<linea_inicial>,<linea_final>s/<texto_a_buscar>/<texto_de_sustitucion>/[g|c] 

El significado de cada campo, en orden a partir del primero:

Comando Descripción <linea_inicial>  A partir de qué numero de línea se realizará labúsqueda. Utilice . para indicar desde la línea actual.

 <linea_final>  Hasta qué línea se realizará la búsqueda. Utilice . paraindicar hasta la línea actual y $ para indicar a hasta elfinal del documento.

 <texto_a_buscar>  El texto que se busca.

 <texto_de_sustitucion>  El texto que reemplazará a al texto buscado.

g Realice los cambios en todas las concordancias.

c Solicitar confirmación antes de efectuar un reemplazo.

Ejemplos de búsqueda y reemplazo:

Desde el inicio hasta el final, buscar y sustituir “los” por “Los”:

:1,$ s/los/Los/g

Igual al anterior, utilizando % en lugar de 1,$ para indicar “en todo el documento”:

:% s/los/Los/g 

Borra el contenido de la línea actual hasta la quinta, buscando cualquier concurrenciade cualquier carácter usando expresiones regulares (^.*) y reemplazando por nada (//):

:.,5 s/^.*//g

Sustituye “los" con “Los" solicitando confirmación antes de hacer la operación:

61 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 62/129

 

El editor vi

:% s/los/Los/c 

Borra los primeros cuatro caracteres de cada línea, buscando los primieros 4caracteres de cada línea usando expresiones regulares (^....) y reemplazando por 

nada //:

:% s/^....//g

62 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 63/129

 

7

El intérprete de comandos BASH

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 64/129

 

El intérprete de comandos BASH

El intérprete de comandos BASH

GNU Bourne-Again Shell y las variables de en

Bash es un interprete de comandos que ejecuta las órdenes leídas desde la entradaestándar o desde un archivo.

Las variables de entorno son variables que se almacenan en memoria durante laejecución del shell BASH. Los procesos tienen sus variables de entorno y el shell lepermite verlas directamente con el comando echo.

Algunas variables interesantes son:

● HOME: esta variable de entorno contiene una cadena de caracteres querepresenta su directorio personal.

● PATH: esta variable contiene la lista de todos los directorios en los cuales elshell busca los ejecutables cuando Ud. ingresa un comando. Note quepredeterminadamente, a diferencia de DOS , el shell ¡no buscará los comandosen el directorio corriente!

● USER : esta variable contiene una cadena que representa su nombre deconexión.

● UID: Contiene su identificador de usuario (UID)

● PS1: contiene la definición de su prompt. Generalmente, es una combinaciónde secuencias especiales. Puede leer la página man bash para másinformación.

● PS2: contiene la definición de su prompt secundario. El prompt secundarioaparece cuando no se ha finalizado un comando.

Para hacer que el shell muestre el valor de una variable, debe anteponer al nombre dela misma un $. Aquí, el comando echo lo ayudará:

echo "Realizando copia de seguridad del directorio $HOME"tar cvf /tmp/$USER.tar $HOME

Como puede ver, el shell substituye el valor de la variable antes de ejecutar elcomando. El comando anterior mostrará un mensaje indicando se está realizando unacopia de seguridad, luego ejecutará la copia de seguridad con el comando tar deldirectorio HOME del usuario que ejecutó el comando a un archivo llamado

64 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 65/129

 

El intérprete de comandos BASH

/tmp/<nombre_usuario>.tar.

Es posible visualizar la lista completa de variables definidas con el comando set oenv.

Para definir una variable de ambiente, ésta debe ser exportada al shell, de otra formael shell no tendrá conocimiento de la variable.

Por ejemplo, puede utilizar los siguientes comandos para modificar la variable PATH:

$ PATH=$PATH:/usr/local/bin$ export PATH

o

$ export PATH=$PATH:/usr/local/bin

Estos comandos hacen que la variable PATH tenga el mismo valor que tenía antesagregando el directorio /usr/local/sbin.

Para eliminar la definición de una variable de ambiente se ejecuta el comando unset:

$ export ORACLE_HOME=/oracle$ echo $ORACLE_HOME/oracle

$ unset ORACLE_HOME$ echo $ORACLE_HOME

$

Las variables son muy utilizadas en los scripts del shell.

Volviendo a llamar a comandos

Puede verse que con las teclas de las flechas para arriba y para abajo. Ud. puederemontarse hasta un número de comandos previamente ejecutado igual al definido enla variable de entorno HISTSIZE. Es más, el histórico es persistente de una sesión aotra, por lo que no va a perder los comandos que ingresó en una sesión previa.

Las teclas de las flechas izquierda y derecha mueven el cursor hacia la izquierda yhacia la derecha en la línea corriente, por lo que puede editar sus comandos de estaforma. Pero hay más en materia de edición: Ctrl+a y Ctrl+e, por ejemplo, lo llevarán alcomienzo y al final, respectivamente, de la línea corriente.

Las teclas Backspace 3 y Supr funcionan como se espera. Un equivalente deBackspace es Ctrl+h y un equivalente de Supr es Ctrl+d . Ctrl+k borrará toda la línea

65 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 66/129

 

El intérprete de comandos BASH

desde la posición del cursor hasta el final de la misma, y Ctrl+w borrará la palabradelante del cursor.

Ingresar Ctrl+d en una línea en blanco le hará cerrar la sesión corriente, lo cual es

mucho más corto que tener que ingresar exit. Ctrl+c interrumpirá el comando en cursode ejecución, excepto si se encuentra en el proceso de edición, en cuyo casointerrumpirá la edición y lo devolverá al prompt. Ctrl+l borra la pantalla.

Finalmente, están Ctrl+s y Ctrl+q. Estas secuencias de teclas sirven,respectivamente, para suspender y reanudar el flujo de caracteres sobre una terminal.No son muy usadas, pero sin embargo, puede ocurrir que ingrese Ctrl+s por error (después de todo, s y d están muy cerca una de la otra en el teclado...). Entonces, sipresiona las teclas pero no ve aparecer caracter alguno en la terminal, primero intenteCtrl+q y preste atención: aparecerán en la pantalla todos los caracteres juntos queingresó entre el Ctrl+s no deseado y Ctrl+q.

Puede volver a ejecutar un comando por medio del uso de el caracter de admiración(!). Ejemplo:

$ ls -la /tmp$ touch /tmp/archivo$ !ls

Expansión de la linea de comandos

El completado es una funcionalidad muy útil, y todos los shells modernos (bash,inclusive) la tienen. Su rol es darle al usuario el menor trabajo posible. La mejor 

manera de ilustrarlo es con un ejemplo.

Suponga que su directorio personal contiene un archivo cuyo nombre esarchivo_con_un_nombre_muy_largo, y Ud. quiere visualizarlo.

Suponga que Ud. también tiene en el mismo directorio otro archivo denominadoarchivo_texto. Ud. está en su directorio personal. Así que Ud. ingresa la secuenciasiguiente:

$ less /etc/pa<TAB>

Es decir, ingresa el comando less pa y luego presiona la tecla TAB. El shell ahoraextenderá la línea de comandos por Ud. completando el nombre del archivo passwd.Si ingresa el comando less /etc/ho y presiona la tecla TAB dos veces, semostrara la lista de archivos que comienzan con ho para que pueda continuar ingresando el nombre y presionando la tecla TAB hasta que sea único:

$ less /etc/ho<TAB><TAB>

66 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 67/129

 

El intérprete de comandos BASH

host.conf hosts hosts.allow hosts.deny hotplug/ hotplug.d/

También puede completar comandos, digitando el comienzo del comando y luegopresionando TAB. Por ejemplo ingresando:

$ upt<TAB>

Completara el comando uptime.

Finalmente puede autocompletar nombres de equipos, usuarios o variables deambiente anteponiendo los caracteres ~, @ y $ respectivamente.

Valores de retorno de los comandos

Los comandos devuelven un código de retorno 0 si el comando termina

correctamente, o un número entre 1 y 255 según la razón de falla. La página del mandel comando puede dar información acerca de las variables de retorno, por ejemplo, ladel fsck. El código de retorno del último comando queda en una variable llamada '?',que se interroga como $?. Por ejemplo, si la ejecucion del comando ls es correcta, elvalor de retorno es 0:

$ ls$ echo $?0

Si ocurre un error, el valor de retorno sera diferente de 0:

$ ls /no

ls: /no: No such file or directory$ echo $?1

Sobrenombres

Los sobrenombres o aliases son definiciones de sinónimos o atajos a comandosfrecuentemente utilizados, por ejemplo:

$ alias ll="ls -la"

Define el alias ll, ahora al ejecutar ll, se ejecutará el comando ls -la.

Para eliminar la definición de un alias se utiliza el comando unalias.

Para mostrar los aliases definidos ejecute el comando alias sin opciones.

Para mostrar un alias específico ejecute el comando con el nombre del alias, por ejemplo:

67 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 68/129

 

El intérprete de comandos BASH

$ alias ll

Scripts de inicialización y finalización

Existen tres ficheros en el directorio de un usuario que tienen un significado especialpara el shell Bash. Estos ficheros permiten al usuario configurar el entorno de sucuenta automáticamente cuando entra en el sistema, cuando arranca un subshell oejecutar comandos cuando sale del sistema.

Los nombres de estos ficheros son . bash_profile, .bashrc y .bash_logout. Sininguno de estos ficheros existe en el directorio del usuario, /etc/profile esutilizado por el sistema como fichero de configuración de bash.

●  Archivo .bash_profile es el el mas importante de los tres. Es leído y los

comandos incluidos en el, ejecutados, cada vez que el usuario entra en elsistema. Cualquier cambio hecho en este fichero no tendrá efecto hasta quesalgamos y entremos en el sistema de nuevo. Una alternativa para no tener que salir del sistema es ejecutar el comando source .bash_profile.

$ cat .bash_profile# .bash_profile

# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi

# User specific environment and startup programs

BASH_ENV=$HOME/.bashrcUSERNAME=""PATH=$PATH:/usr/local/pgsql/binMANPATH=$MANPATH:/usr/local/pgsql/manPGLIB=/usr/local/pgsql/libPGDATA=/usr/local/pgsql/data

export USERNAME BASH_ENV PATH MANPATH PGLIB PGDATAumask 027

●   Archivo .bashrc es leído cuando el usuario arranca un subshell,escribiendo por ejemplo bash en la linea de comandos. Esto nos permiteejecutar diferentes comandos para la entrada al sistema o para la ejecución deun subshell.

$ cat .bashrc# .bashrc

# User specific aliases and functions

alias ll=”ls -la”alias rm=”rm -i”

68 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 69/129

 

El intérprete de comandos BASH

# Source global definitionsif [ -f /etc/bashrc ]; then

. /etc/bashrcfi

●  Archivo .bash_logout es el fichero leído por Bash, cuando salimos delsistema. Podemos definir, por ejemplo que se borren los ficheros temporalescreados en nuestra ultima sesión o registrar el tiempo que hemos estadoutilizando el sistema. Si .bash_logout no existe, ningún comando seraejecutado a nuestra salida.

$ cat .bash_logout# ~/.bash_logout

clear

Historial

El comando history nos permite visualizar la lista de comandos ejecutadospreviamente. Existen variables de entorno que controlan el comportamiento delhistorial.

● HISTSIZE: El número de comandos a recordar.

● HISTFILE: El archivo en el cual se almacena el historial, por defecto~.bash_history.

● HISTCONTROL: Si se define a ignorespace, las líneas de comando quecomienzan con espacio no se guardan en el historial. La opción ignoredupsevita que comandos duplicados se guarden de forma independiente y lacombinación de ambas opciones es ignoreboth.

Búsqueda de comandos previamente ejecutados

Presionando las teclas CTRL+r, podemos buscar comandos ejecutados previamente.Una vez introducido el patrón, presionando CTRL+r  repetidamente iremosrecuperando los comandos que concuerden con el patrón.

El comando fc puede ser utilizado para listar, recuperar y editar comandospreviamente ejecutados. Opciones comunes:

Opción Descripción-l Lista los últimos comandos ejecutados.

69 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 70/129

 

El intérprete de comandos BASH

Opción Descripción-n Edita el comando n de la lista.

Substitución de comandos

La sustitución de comandos permite que la salida de un comando sea tratada como sifuese escrita en la línea de comandos. La substitución de comandos sucede cuandoes encerrado de la siguiente forma:

$(comando)

O entre comillas invertidas:

`comando`

Bash realiza la expansión ejecutando el comando y reemplazando el comando con lasalida estándar del comando. Por ejemplo:

$ tar cvf /tmp/$USER.tar $(find $HOME -name *.odt)

En el ejemplo anterior, el comando find se ejecutará primero y la salida de éste seráutilizado por el comando tar. De esta forma, estamos indicando a tar que haga unacopia seguridad de todos los archivos .odt que pueda encontrar en el directorio HOMEo cualquier subdirectorio de éste del usuario que ejecuta el comando.

En el siguiente ejemplo, se creará un archivo tar que contenga la fecha actual

anexado al nombre del archivo:

$ tar cvf /tmp/$USER-$(date +%m-%d-%Y).tar $HOME

En el ejemplo anterior, el comando date es ejecutado primero y el resultado utilizadopor el comando tar, de esta forma se anexa al nombre del archivo tar la fechaactual en formato MM-DD-AAAA.

70 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 71/129

 

8

Redirecciones y tuberías

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 72/129

 

Redirecciones y tuberías

Redirecciones y tuberías

Descriptores de archivos, entrada, salida y error estándar 

Cuando un programa Linux desea utilizar un archivo, primero debe abrir ese archivo.Cuando hace esto, el Linux asociará un número con el archivo. Este número, el cuales usado por el programa cuando lee o escribe a un archivo, es el descriptor dearchivo.

Un programa típico abrirá tres archivos cuando inicia. Esto archivos son:

● Entrada estándar - standard input (stdin)

● Salida estándar - standard output (stdout)

● Error estándar - standard error (stderr)

La entrada estándar tiene un descriptor de archivo 0, salida estándar utiliza el 1, y elnúmero 2 es usado por el error.

En general, estos tres descriptores están asociados con la terminal desde la cual seinició el proceso, siendo el teclado la entrada. El objetivo de las redirecciones y lastuberías es redirigir estos descriptores.

Redireccionando la entrada y la salida

Suponga, por ejemplo, que Ud. quiere una lista de los archivos que terminan en .pngen el directorio imagenes. Esta lista es muy larga, por lo que Ud. desea almacenarlaen un archivo para consultarla a gusto más tarde. Puede ingresar el comandosiguiente:

$ ls imagenes/*.png 1> lista_de_archivos 

Esto significa que la salida estándar de este comando (1) se redirecciona (>) alarchivo denominado lista_de_ archivos. El operador  > es el operador de

redirección de la salida. Si el archivo de redirección no existe, se crea, pero si existese sobre-escribe su contenido.

Sin embargo, el descriptor predeterminado que redirecciona el operador > es la salidaestándar y no es necesario especificarla en la línea de comandos. Entonces podríahaber escrito simplemente:

72 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 73/129

 

Redirecciones y tuberías

$ ls imagenes/*.png > lista_de_archivos 

y el resultado será exactamente el mismo. Luego, puede mirar el archivo usando unpaginador de archivos de texto tal como less. Imagine ahora que Ud. quiere saber 

cuantos de estos archivos hay. En vez de contarlos a mano, puede usar el utilitariodenominado wc (Word Count, Contador de palabras) con la opción -l, que escribeen la salida estándar el número de líneas en el archivo.

Una solución es la siguiente:

$ wc -l 0 < lista_de_archivos 

y esto da el resultado deseado. El operador  < es el operador de redirección de laentrada, y el descriptor redirigido por defecto es el de la entrada estándar, es decir, 0,y Ud. simplemente tiene que escribir la línea:

$ wc -l < lista_de_archivos

Redireccionando el error estándar 

También puede ser útil redirigir el error estándar. Por ejemplo, desea saber a cualesdirectorios de /etc no tiene acceso: una solución es listar este directoriorecursivamente y redirigir los errores a un archivo, a la vez que no se muestra la salidaestándar:

$ ls -R /etc > /dev/null 2> errores 

lo que significa que se redireccionará la salida estándar (>) a /dev/null, un archivoespecial donde todo lo que escribe se pierde (es decir que, como efecto secundario,no se muestra la salida estándar) y el canal de error estándar (2) se redirecciona (>) alarchivo errores.

Esto es muy útil al momento de realizar copias de seguridad agendadas oautomatizadas. Por ejemplo con el comando tar, usted puede crear una copia deseguridad de los archivos de su directorio personal de la siguiente forma:

$ tar cvf /tmp/$USER.tar $HOME > /tmp/$USER.log 2 > /tmp/$USER.errs

En el archivo <nombre_usuario>.log obtendrá información de qué archivos fueronsalvados correctamente, y en el archivo <nombre_usuario>.errs será un registrode errores que ocurrieron durante la copia de seguridad.

73 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 74/129

 

Redirecciones y tuberías

Sobrescritura y agregado de las redirecciones

Cada vez que redireccionamos la salida estándar o el error estándar a un archivo, por defecto este se sobreescribe. Si no deseamos que los archivos se sobreescriban y

queremos concatenar el resultado de un comando, redireccionar de la siguienteforma:

Para redireccionar stdout, utilice >>, por ejemplo:

$ ls -l > lista$ ls -l >> lista

Para redireccionar stderr, utilice 2>>, por ejemplo:

$ ls -l /root 2> lista$ ls -l /root 2>> lista

Redireccionando la salida estándar y el error estándar 

Si desea que tanto los mensajes de información como los mensajes de error seanredireccionados al mismo archivo debe utilizar la siguiente sintaxis:

$ comando > archivo 2>&1

Esta forma de redirección indica programa que envíe los mensajes dirigidos al error estándar al mismo lugar que envía los mensajes salida estándar.

Por ejemplo:$ tar cvf /tmp/$USER.tar $HOME > $USER.log.err 2>&1

Tuberías

En el mundo Linux, las tuberías (también conocidas como pipes) relacionan la salidaestándar de un comando con la entrada estándar de otro comando.

Por ejemplo, existen varias opciones disponibles con el comando ls, pero ¿qué pasasi la visualización del contenido de un directorio es demasiado rápida como para

verla?

Vamos a ver el contenido del directorio /etc/ con el comando:

$ ls -al /etc

¿Cómo podemos visualizar la salida antes de que desaparezca de la pantalla?

74 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 75/129

 

Redirecciones y tuberías

Una forma es entubando la salida a una utilidad llamada less, use la barra vertical (|)conocida como pipe para entubar comandos.

$ ls -al /etc | less

De esta manera verá el contenido de /etc/ en una pantalla a la vez.

Si desea saber cuantos archivos de tipo pdf existen en su directorio personal, puedeutilizar el siguiente comando:

$ ls -l *.pdf | wc -l

La salida del comando ls muestra la lista de archivos pdf, uno por cada linea, y elcomando wc -l cuenta la cantidad de lineas resultantes, obteniendo así la lista dearchivos existentes.

75 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 76/129

 

9

Filtros y procesamiento de cadenas

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 77/129

 

Filtros y procesamiento de cadenas

Filtros y procesamiento de cadenas

Concepto de filtro

Linux ofrece una amplia gama de herramientas capaces de gestionar la informacióncontenida en ficheros de texto.

Los filtros son órdenes que operan sobre estructuras de datos (ficheros) yproporcionan como salida modificaciones sobre la entrada. Por tanto, son órdenes degestión de la información contenida en ficheros.

Los filtros leen el fichero de entrada y escriben el resultado de su operación sobre lasalida estándar. Cada orden de gestión de información o filtro realiza unos cambiospropios sobre la información del fichero de entrada, que dependen del programa

específico utilizado.

En general, los filtros nunca modifican el fichero de entrada, simplemente escriben elresultado en la salida estándar. Si se desea que el resultado se almacene en otrofichero deberá redireccionarse esta salida.

Existen gran variedad de filtros, desde los más sencillos que operan ligerasmodificaciónes, hasta los más potentes que llevan a cabo operaciones complejas demanipulación de información, próximas a las manipulaciones de los editores de texto ode las bases de datos.

Traducción de caracteres

tr: Traduce o asigna caracteres de un archivo desde una forma a otra. Por ejemplose puede usar tr para convertir todos los tabuladores en espacios. Este comandopermite hacer un sólido manejo de caracteres con una estructura bastante sencilla. Lasintaxis es:

tr [-d] [-s] [de_cadena] [a_cadena] 

Opción Descripción

-d  Suprime los caracteres de la cadena inicial.

-s Suprime las repeticiones consecutivas.

Ejemplos:

Sistituir “:” por nueva línea (line feed):

77 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 78/129

 

Filtros y procesamiento de cadenas

$ echo $PATH | tr ":" "\n"

Remover todos los espacios en blanco de un archivo:

$ tr -d "[:space:]" /etc/hosts

Convertir todas las minúsculas en mayúsculas:

$ tr [:lower:] [:upper:]

Paginador de la salida por impresora

 pr: El comando pr formatea un archivo y lo visualiza en la salida estándar, aunqueel formateo se realiza pensando en la impresora. La sintaxis es:

pr [+página] [opciones] [lista_archivos]

Los nombres de la lista de archivos deben estar delimitados por espacios. Si se dejaen blanco, se lee la entrada estándar.

Opción Descripción

+pagina Empieza a imprimir desde la página especificada. El valor predeterminado es 1.

-columnas Especifica un número de columnas de salida. Dividiendo lapantalla en tantas partes como indique el número.

-d  Hace que la salida esté a doble espacio.-nancho Numera las líneas. c es el caracter que se sitúa entre el número

de línea y la salida normal, el valor predeterminado es eltabulador, ancho es el valor del número de posiciones decaracteres + 1 que ocupa el número, el valor predeterminado es5.

-wn Establece la longitud de la línea a n columnas. Para salida enforma de columnas el valor predeterminado es 72. Esta opciónda algunos problemas.

-ln Establece la longitud de la página en n líneas. El valor 

predeterminado es 66. El número no puede ser inferior a 10.-h <texto>  En vez del nombre de archivo, es la cabecera que muestra por 

defecto, utiliza cadena como cabecera.

-t No imprime la cabecera ni el pie de página. Normalmente seimprime una cabecera y un pie de página de cinco líneas.

Ejemplos:

78 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 79/129

 

Filtros y procesamiento de cadenas

Imprime dos archivos en columnas separadas:

$ pr -m -t README1 README2This is the This is the

1st file. 2nd file.

Lista archivos y directorios en dos columnas con doble espaciado:

$ ls -a | pr -t -a -c2 -d

Inserta una cabecera personalizada al texto:

$ pr -h 'Instrucciones de Instalacion' README.txt | lpr

Mostradores de ficheros por porciones: tail y head  

El comando tail permite visualizar el final de un archivo de texto o hacer elseguimiento del crecimiento de este. La sintaxis es:

tail [-líneas] [-f] [fichero]

Opción Descripción

-lineas Es un número que representa a las líneas del archivo que seempieza a visualizar. Si a este número le precede el signo -, eldesplazamiento está relacionado con el final del archivo. Si se

utiliza el +, el desplazamiento está relacionado con el comienzodel archivo. Si no se especifica nada, muestra las 10 últimaslíneas.

-f Cuando se utiliza esta opción y la entrada no es estándar, tailcontrola el crecimiento del archivo. Esto es un bucle de salidasin fin y tiene que ser terminado con la tecla de interrupción.

El comando head muestra la porción inicial de un fichero. La sintaxis es:

head [-líneas] [fichero]

Opción Descripción

-lineas Es el número de líneas a imprimirse desde el principio delarchivo. El valor predeterminado es 10.

79 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 80/129

 

Filtros y procesamiento de cadenas

Ejemplos:

Muestra las primeras seis líneas del archivo archivo.txt

$ head -6 archivo.txt

Muestra las últimas 25 líneas del archivo archivo.txt

$ tail -25 archivo.txt

Hace un seguimiento al archivo de registro debug.log

$ tail -f debug.log

El comando de ordenado

sort: ordena las líneas de la entrada estándar. Tiene multitud de opciones, entre lasque podemos destacar:

Opción Descripción

-n Ordenado numérico. Por defecto es alfabética.

-r Orden inverso.

-u Elimina las líneas duplicadas.

-f Ordena sin distinguir mayúsculas y minúsculas.

-b Ignora los espacios en blanco.-k pos1[,pos2] Indica la posición de las claves de ordenación. El formato de la

clave se especifica siguiendo el formato pos1[,pos2], donde elcampo consiste en la parte de la línea entre pos1 y pos2comenzando desde 1. Por tanto, para ordenar por el segundocampo, utilizaría -k 2,2. Si indica pos2 entonces se ordena apartir del segundo campo hasta el final de la línea.

Ejemplos:

Utilice el comando cat para visualizar el archivo /etc/passwd, este archivo posee

campos delimitados por dos puntos “:”, cada campo tiene su significado. Haremos conel archivo las siguientes operaciones:

Ordenar el archivo alfabéticamente utilizando toda la línea como campo deordenamiento:

$ sort /etc/passwd

80 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 81/129

 

Filtros y procesamiento de cadenas

Ordenar en forma inversa, utilizando el primer campo para el ordenamiento (nombrede usuario) utilizando como delimitador de campos dos puntos (:):

$ sort -t ":" -r -k 1,1 /etc/passwd

Ordenar por el tercer campo, en formato numérico y de forma inversa, utilizando comodelimitador de campos dos puntos (:) :

$ sort -t ":" -nr -k 3,3 /etc/passwd

 

Supresión de líneas repetidas 

uniq: Este comando quita las líneas que son idénticas, produciendo una sola líneade salida. El comando uniq asume que el archivo ya está ordenado puesto que las

líneas que son iguales deben ser adyacentes. La sintaxis es:

uniq [opciones ...] [fichero_entrada] [fichero_salida]

El fichero_entrada se refiere al nombre del archivo que se va a leer, si no seespecifica asume la estándar.

La salida es el fichero que se va a crear con el resultado. Si no se especifica es laestándar. La salida, si se especifica, no puede ser la misma que la entrada.

Opción Descripción-u Sólo muestra las líneas que no están repetidas.

-d  Muestra sólo las líneas que están repetidas.

Ejemplos:

Lista los nombres de todos los alumnos de la case A y la clase B, ordenandoalfabéticamente y mostrando solamente las líneas repetidas:

$ cat alu_claseA alu_claseB | sort | uniq -d

Elimina los nombres repetidos del archivo alu_claseA y crea un archivoalu_claseA.uniq como resultado:

$ uniq alu_claseA > alu_claseA.uniq

81 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 82/129

 

Filtros y procesamiento de cadenas

El comando de selección de campos del fichero

cut: Este comando extrae campos de una lista de archivos. Los campos puedenestar definidos como posiciones de caracteres o relativamente con un separador de

campo. El separador por defecto es el tabulador. La sintaxis es la siguiente:

cut [-c <caracteres> | -f <campos> ] [-d <separador> ] [-s] [lista_archivos]

Opción Descripción

-c <caracteres> Muestra los caracteres especificados por los números(posiciones) de la lista. Puede ser una lista separada por comas, un rango separado por guiones o una combinación deambos. Por ejemplo son válidos: 1,4,5,1-4 y 1-4,5-10,10,25.

-f <campos>  Muestra los campos especificados mediante los números de la

lista. Los campos se distinguen por un caracter separador. Sise repite el separador varias veces seguidas, no se tratancomo un separador. Para indicar la lista se hace con la mismasintaxis de los caracteres.

-d <separador>  Especifica el separador de campo. Un caracter de tabulaciónes el valor predeterminado. El separador puede ser cualquier caracter.

-s Suprime las líneas que no tienen separador de campo.

Ejemplos:

Mostrar el primer caracter de cada línea del archivo:

$ cut -c 1 /etc/passwd

Mostrar el primer, quinto y desde el décimo a vigésimo caracter del archivo:

$ cut -c 1,5,10-20 /etc/passwd

 Muestra el segundo campo del archivo passwd siendo el delimitador dos puntos “:”:

$ cut -d ":" -f 2 /etc/passwd

Muestra el tercer campo de un archivo cuyos campos están separados por espacios:

$ cut -d " " -f 3 /etc/passwd

Muestra a partir del tercer campo en adelante:

$ cut -d ":" -f 2- /etc/passwd

82 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 83/129

 

Filtros y procesamiento de cadenas

El comando de fusión de campos de diferentes ficheros

 paste: Produce una salida en forma de columnas desde uno o más archivos, dondecada archivo proporciona una columna de la salida, paste se utiliza frecuentementecon cut para reordenar columnas de un archivo. Si no se especifica nada en contra lasalida es la estándar. La sitanxis es:

paste [-d <caracter>] [-s] [lista_archivos]

Opción Descripción-d <caracter>  Especifica el caracter que se utiliza para delimitar cada columna. El

valor predeterminado es el tabulador.

-s Pegar un archivo a la vez en lugar de en paralelo.

Ejemplos:

Suponga los siguientes archivos:

$ cat nombresJuanCarlosDavidJose

$ cat direcciones

Peru y ArtigasPalma y EstrellaOliva y AlberdiEstrella y Colón

 Para unirlos ejecute el comando:

$ paste nombres direcciones

Juan Peru y ArtigasCarlos Palma y EstrellaDavid Oliva y AlberdiJose Estrella y Colón

Para este caso, los campos están separados por un tabulador. Para usar un caracter diferente use -d.

Para pegar líneas del mismo archivo use la opción -s:

$ paste -sJuan Carlos David Jose

83 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 84/129

 

Filtros y procesamiento de cadenas

84 Ing. Ivan Ferreira

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 85/129

 

10

Expresiones regulares

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 86/129

 

Expresiones regulares

Expresiones regulares

Las expresiones regulares son cadenas de caracteres (unos normales y otros con

significados especiales) que representan un conjunto de cadenas más complejo enforma de expresiones simples. Debido a que muchos de los caracteres que utilizanexpresiones regulares tienen significados especiales en el shell es mejor encerrar laexpresiones entre comillas. Las comillas simples ' son las más seguras, pero amenudo las comillas dobles " son suficientes. En los casos sencillos no es necesarioque el patrón esté entrecomillado.

Búsqueda de patrones dentro de archivos

La familia grep forma un conjunto de tres utilidades para la búsqueda en ficheros depatrones regulares de caracteres.

grep|egrep|fgrep [opciones] [patron] [file] [> file.out]

Hay tres programas en la familia. grep es el primero que apareció y localiza patronesregulares con alguna particularidad. fgrep realiza una búsqueda muy rápida pero lospatrones están delimitados. egrep es una forma extendida de grep que buscapatrones regulares de forma completa aunque ello conlleva lentitud de proceso.

El comando grep tiene las siguientes opciones:

Opción Descripción

-c Visualiza sólo el número de líneas en las que coincide elpatrón.

-i No hace distinción entre mayúsculas y minúsculas al realizar comparaciones.

-l Visualiza sólo los nombres de fichero en las que coincide.

-n Visualiza el número de línea antes de cada línea.

-s Suprime la visualización de los mensajes de error.

-v  Visualiza sólo aquellas líneas en las que no coinciden con elpatrón.

-w Busca el patrón como palabra.

-f <archivo>  Toma el patrón de fichero y no de la línea de comandos.

-E Modo extendido. Permite expresiones regulares extendidas.

Los patrones utilizan expresiones regulares.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 87/129

 

Correspondencia de principio y fin de línea

Un caracter circunflejo (^) que aparece al principio de una cadena se corresponde conel comienzo de una línea. Similarmente, el signo dólar ($) al final de una cadena secorresponde con el fin de línea. No hay ningún caracter especial que se correspondaa un salto de línea, aunque sí es posible identificar una línea vacía.

Expresión Descripción

"^patron" Aparición de la palabra patron al principio de una línea delfichero.

"dado$" Aparición de la palabra dado al final de una línea del fichero.

"^lugar$" Línea que sólo contiene la palabra lugar.

"^$" Una línea vacía.

Por ejemplo, para mostar las líneas que contienen el texto root en el archivo/etc/passwd utilice el comando:

$ egrep "root" /etc/passwd

Para mostrar las líneas que comienzan con el texto root en el archivo /etc/passwdutilice el comando:

$ egrep "^root" /etc/passwd

Para mostrar las líneas que terminan con lel texto bash en el archivo /etc/passwdutilice el comando:

$ egrep "bash$" /etc/passwd

Anulación del significado especial de un caracter 

El caracter de barra invertida (\) delante de otro caracter anula el significado especialde este último.

Ejemplo, mostrar todos los archivos cuyos nombres comienzan con punto delresultado de ls -a:

$ ls -a | egrep "^\."

Correspondecia con cualquier caracter 

El punto (.) tiene un significado especial y se corresponde con cualquier caracter (incluidos caracteres especiales, dígitos, espacios en blanco, etc.).

Ejemplos:

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 88/129

 

Expresión Descripción

"a..." Aparición de una a seguida por tres caracteres cualesquiera,precedidos y acabados por espacio (es decir, aquellaspalabras de cuatro letras que comienzan con a como alla,a12%, etc.).

"a...\.log$" Líneas que acaban en una palabra de cuatro letras queempieza por a y terminan con .log.

"^AM. $" Líneas que contienen únicamente palabras de al menos trescaracteres que empiezan por AM y acaban en espacio.

Por ejemplo, para mostar las líneas que comienzan con a y tienen exactamente cuatrocaracteres en el archivo /usr/share/dict/words utilice el comando:

$ egrep ^a...$ /usr/share/dict/words

Conjuntos de caracteres

Los caracteres encerrados entre corchetes [ ] especifican un conjunto de caracteresque van a ser buscados. Dentro del corchete, un signo menos - entre dos caracteresespecifica un rango. Notar que dicho rango tiene que ser ascendente; de lo contrariose pierde la interpretación.

Si el caracter  ^ aparece entre corchetes adquiere el significado de negación delconjunto ([^]).

Expresión Descripción

"[a-z]" Todas las minúsculas.

"[a-z]...\.log$" Líneas que acaban en una palabra de cuatro letras queempieza por una letra de la a a la z y terminan con .log.

"^[^a-z]" Líneas que no comiencen por letras minúsculas (quecomiencen con algo distinto de letras minúsculas).

"[-ab]$" Concuerda con el caracter -, a, b al final de la línea.

Para obtener las lineas que comienzan con r o s del archivo /etc/passwd utiliceel comando:

$ egrep "^[rs]" /etc/passwd

Para obtener las lineas que no comienzan con r o s del archivo /etc/passwdutilice el comando:

$ egrep "^[^rs]" /etc/passwd

Correspondencia repetida de patrones

A veces interesa buscar un patrón que se repite un número determinado de veces.Esta especificación del número de repeticiones se conoce como cierre y su formato

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 89/129

 

general es {n,m} donde n es el número mínimo de repeticiones y m el númeromáximo. Si falta n se toma como 1 y si falta m se toma como infinito.

Están disponibles algunas formas abreviadas que suelen utilizar casi todos losprogramas de manipulación de textos.

Expresión Descripción* Equivale a {0,} significando que el patrón que le precede va a ser 

repetido cero o más veces.

+ Equivale a {1,} significando que el patrón que le precede va a ser repetido una o más veces.

? Equivale a {0,1} significando que el patrón que le precede puedeser repetido sólo cero o una vez.

Por ejemplo, consultando las lineas que comienzan con pe y utilizando las

expresiones anteriores obtenemos:

$ cd /usr/share/dict

La siguiente expresión indica que la linea debe comenzar con el carácter p y elcarácter el carácter e puede aparecer 0 o más veces:

$ egrep “^pe*$” wordsppepee

La siguiente expresión indica que la linea debe comenzar con el carácter p y el

carácter el carácter e puede aparecer 1 o más veces:$ egrep “^pe+$” wordspepee

La siguiente expresión indica que la linea debe comenzar con el carácter p y elcarácter el carácter e puede aparecer 0 o una vez:

$ egrep “^pe?$” wordsppe

Grupos de caracteres

Pueden formarse grupos de caracteres cuando éstos se encierran entre paréntesis ().De esta forma se pueden tratar palabras. Dentro de grupos de caracteres puedeutilizarse el caracter de barra vertical '|' para separar opciones alternativas.

Para obtener la lista de archivos o directorios que tienene permisos de lecturaescritura y ejecución o lectura y ejecución para el grupo utilice el comando:

$ ls -la | egrep "^[-d]...(rwx|r-x)"

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 90/129

 

En el comando anterior se filtra el resultado del comando ls -la para mostar laslíneas que comienzan con – (representando archivos) o d (representando directorios)con la expresión ^[-d], posteriormente existen tres caracteres cualesquieraindicados con la expresión ... los cuales serían los permisos para el propietario delarchivo, luego deberían estar los grupos de caracteres rwx o r-x indicados con laexpresión (rwx|r-x).

Buscando archivos con un patrón de texto en su contenido

Ahora que ya conoce de expresiones regulares, el comando find y el comandogrep, podemos agrupar estas funciones de tal modo a encontrar archivos quecontengan un texto dado.

Utilizaremos el comando find para buscar archivos regulares y ejecutaremos elcomando grep en cada archivo encontrado para verificar si existe la cadena de textobuscada.

Por ejemplo:

$ find / -type f -exec grep -l "<patron>" {} \:

El comando find buscará todos los archivos regulares a partir de la raíz y pasará elresultado al comando grep, el cual solo mostrará el nombre del archivo (-l) quecontenga el patrón dado.

Editores fuera de línea

Existen ocasiones en las que el uso de un editor de textos como el vi o emacs puede

ser demasiado o no cumplen con lo que queremos realizar. Tal vez se tengan quehacer cambios repetitivos a archivos o tener que procesar datos de una fuente yenviarlos a otro archivo en un orden correcto o tal vez solo queremos una formasimple de hacer el trabajo desde un script o la línea de comandos. Es aquí dondeentran a trabajar los editores fuera de línea y para nombrar solo 2 veremos el editor de flujo sed y el lenguaje de programación awk (por Alfred Aho, Peter Weinberg yBrian Kernighan). Lo especial de awk es que es un lenguaje con todas las letras ymuy poderoso, pero en ocasiones nos facilitará tareas tediosas de procesamiento deinformación y por esto lo ponemos en el rango de un editor fuera de línea. Aunqueesto no quiere decir que es lo único que puede hacer.

Editor de flujo sed 

No es preciso detallar en demasía el uso de este editor fuera de línea dada que poseemucha similitud en su uso al editor de textos vi pero si es bueno mostrar algunas desus funciones y usos tanto en el procesamiento desde un script o en la línea decomandos. Existen 3 casos específicos en los que se podrá usar sed.

1. Para editar archivos muy largos para editar interactivamente.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 91/129

 

2. Para editar archivos de cualquier tamaño cuando la secuencia de comandos deedición es muy complicada para hacer el tipeado confortable en ambienteinteractivo.

3. Para usar múltiples funciones globales de edición eficientemente en un solopaso

Existen diferentes formas de realizar una edición con el sed. Puede hacerse desde lalínea de comando o simplemente guardándolos en un archivo para poder ser usadoluego. sed lee la entrada línea a línea y realiza los cambios a estas de acuerdo a loque se le especifique. Luego de hacer estos cambios dirige su salida hacia stdout, lacual puede ser redireccionada. El comando sed actúa en forma similar a filtros comoel grep y sort pero con la diferencia que con sed se podrán crear programas mascomplicados y con una mayor cantidad de funciones.

Para definir una estructura de uso del sed veremos 2 formas distintas. La primera esla utilizada en la línea de comandos a través de una canalización y que tendrá estaestructura:

comando | sed <opciones> <descripción_de_la_edición>

La segunda opción para su uso a partir de la línea de comandos:

sed -f script_de_edición <archivo>

Con la opción -f le decimos a sed que a continuación le pasaremos un archivo dondeencontrara las reglas a aplicar en <archivo>. El comando sed tiene mucho que ver con el editor  vi en el área de búsqueda y reemplazo donde la estructura es lasiguiente:

[<linea_inicial>,<linea_final>] comando_de_edicion [argumentos]

Siendo <linea_inicial>,<linea_final> las direcciones serán reglas que el sed tendrá queencontrar en el texto, si se omitieran estas sed realizara los cambios en todas laslíneas. El comando_de_edicion indica a sed los cambios que tiene que hacer.

Puede estar en un archivo guardado para ser pasado al sed con la opción -f o puedeser ejecutado directamente desde la línea de comandos.

Considere que tiene un archivo llamado passwd con 10 líneas como el siguiente:

$ cat passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownjperez:x:59106:59106:Usuario Restringido:/home/jperez:/bin/bashplopez:x:59107:59107:Usuario Restringido:/home/plopez:/bin/bashhgomez:x:59108:391:Usuario Restringido:/home/hgomez:/bin/bash

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 92/129

 

Si desea eliminar la primera línea de puede ejecutar el siguiente comando:

$ cat passwd | sed '1 d'bin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownjperez:x:59106:59106:Usuario Restringido:/home/jperez:/bin/bashplopez:x:59107:59107:Usuario Restringido:/home/plopez:/bin/bashhgomez:x:59108:391:Usuario Restringido:/home/hgomez:/bin/bash

La primera línea no fue mostrada debido a que se indico a sed que realice el comandode edición “d” sobre la línea 1.

Puede ejecutar comandos de edición directamente sobre el archivo, por ejemplo, paraeliminar desde la linea 1 hasta la linea 3 puede ejecutar el siguiente comando:

$ sed '1,3 d' passwdadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownjperez:x:59106:59106:Usuario Restringido:/home/jperez:/bin/bashplopez:x:59107:59107:Usuario Restringido:/home/plopez:/bin/bashhgomez:x:59108:391:Usuario Restringido:/home/hgomez:/bin/bash

Tenga en cuenta que el archivo original no fue modificado, simplemente la salidamostrada en pantalla, la cual podria ser redireccionada con el carácter “>” a un nuevoarchivo con las líneas modificadas o utilizando el comando de edición “w”. Por ejemplo:

$ sed '1,3 d' passwd > passwd.sed$ sed '1,3 d; w passwd.sed' passwd

Múltiples comandos de edición fueron separados por “;” en el comando anterior.

Puede invertir el orden de las líneas sobre las cuales se ejecutará el comando deedición utilizando el carácter !, por ejemplo:

$ sed '1,3! d' passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin

El comando anterior elimina todas las líneas excepto la 1 a la 3.

Para eliminar la linea 1, y las líneas 8 a la 10, ejecute el siguiente comando:

$ sed '1,3 d; 8,10 d' passwdadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

Múltiples comandos de edición fueron separados por “;” en el comando anterior.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 93/129

 

Con el comando de edición “s” del editor sed puede realizar búsqueda y sustitución,por ejemplo, para reemplazar el directorio home de los usuarios restringidos de/home a /rhome utilice el siguiente comando:

$ sed '1,$ s/home/rhome/' passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownjperez:x:59106:59106:Usuario Restringido:/rhome/jperez:/bin/bashplopez:x:59107:59107:Usuario Restringido:/rhome/plopez:/bin/bashhgomez:x:59108:391:Usuario Restringido:/rhome/hgomez:/bin/bash

Puede utilizar el comando de edición “p” del editor sed para mostrar las líneasindicadas, por ejemplo:

$ sed -n '1,5 p' passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

En este caso es necesario agregar la opción -n al comando sed para evitar que semuestren las líneas que no concuerdan con las líneas indicadas.

Puede utilizar expresiones regulares en lugar de números de línea para indicar laposición donde deben ejecutarse los comandos de edición. Para utilizar expresionesregulares en lugar de números de línea, utilice la siguiente sintaxis:

/expresion_regular/ comando_de_edicion [argumentos]

Por ejemplo, el siguiente comando:

$ sed '/Restringido/ s/\/bin\/bash/\/sbin\/nologin/' passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownjperez:x:59106:59106:Usuario Restringido:/home/jperez:/sbin/nologinplopez:x:59107:59107:Usuario Restringido:/home/plopez:/sbin/nologinhgomez:x:59108:391:Usuario Restringido:/home/hgomez:/sbin/nologin

Sustituye la aparición de "/bin/bash" por "/sbin/nologin" en las líneas quecontengan "Restringido". Como el patrón de búsqueda y sustitución contiene elcarácter  / el cual es interpretado por  sed como una instrucción, éste debe ser escapado usando la barra invertida (\/bin\/bash).

Existen ocasiones en las que se desea obtener partes de archivos que concuerdencon un patrón determinado, por ejemplo si se desea eliminar todas las líneas decomentario de un archivo, es decir las líneas que comienzan con el carácter #, puedeutilizar el siguiente comando:

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 94/129

 

$ sed -n '/^#/ d' /etc/sysctl.conf

Con la instrucción /^#/ se está indicando a sed que procese las líneas queconcuerdan con la expresión regular  ^#, es decir, las líneas que comienzan con elcarácter “#” y con el comando de edición d se indica a sed que elimine las líneas.

Si desea eliminar las líneas que son comentario y además las líneas en blanco utiliceel comando:

$ sed '/^#/ d; /^$/ d' /etc/sysctl.conf

Múltiples comandos de edición fueron separados por “;” en el comando anterior.

El awk

EL awk es un poderoso lenguaje de programación el cual permite crear scripts

complejos de tratamiento de texto. El awk al igual que el sed lee las líneas completaspara realizar sus modificaciones. Uno de los aspectos mas útiles en relación al awk esque a diferencia del "sed", awk puede dividir las líneas en campos a través de unseparador de campo indicado en el script o en la línea de comandos. Si no se indicaninguno se tomara como separador de campo un espacio o tabulador. Usando laopción -F de la línea de comandos o la variable FS desde un programa hecho en awkse puede especificar un nuevo separador de campo.

Por ejemplo si lo que quisiéramos es ver los UID que aparecen en el archivo/etc/passwd primero tendríamos que saber como separar los campos. En elarchivo /etc/passwd se separan por un ":". Ahora tendríamos que saber en quecampo se encuentra el UID. Es en el campo numero 3, comenzando a contar como elprimero de los campos. El 0 es la línea completa:

$ awk -F : '{print $3}' /etc/passwd

Como vemos lo primero que hicimos fue indicarle al awk cual seria el separador decampo "-F :", luego entre comillas le indicamos que imprima a la salida estándar elcampo nº 3, '{print $3}'. De esta forma vemos los nombres contenidos en el

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 95/129

 

archivo /etc/passwd. Podríamos imprimir mas de un campo a la vez:

$ awk -F : '{print $1,$3,$4}' /etc/passwd

Podríamos además incluir texto adicional al resultado del comando, por ejemplo:

$ awk -F : '{print "Usuario:",$1,"UID:",$3,"GID",$4}' /etc/passwd

Todo el proceso gira en torno a la comparación de todas las líneas del archivo, lasintaxis es, en general, de la forma:

expresión { acción }

Si la evaluación de la expresión resulta positiva, se realiza la acción asociada.

Por ejemplo, si deseamos mostrar los usuarios del archivo /etc/passwd cuyo UID esmayor a 500 utilizaremos la siguiente sintaxis:

$ awk -F : '$3 >= 500 { print $1,$3,$4 }' /etc/passwd

Algunos de los operadores que awk puede manejar son los siguientes:

Operador Descripción< Menor que.

<= Menor o igual que.

== Igual a.

!= Diferente a.

>= Mayor o igual que.

>  Mayor que.

Otra posibilidad es el usar expresiones regulares para efectuar la búsqueda. Por ejemplo:

$ awk -F : '/^root/ { print $0 }' /etc/passwd

Este comando mostrará toda la línea que comienza con root. Lo único que tendremosque hacer es encerrarlo entre barras "/" para que se tomen como expresión regular.

Variables del awk

Existen diferentes variables integradas, que permiten llevar cuentas de distintosaspectos. Por ejemplo existe la variable NR que llevara la cuenta de los registros quemostremos. Por ejemplo supongamos que necesitamos obtener un listado largo de undirectorio, pero solo queremos ver los permisos, el nombre del archivo y el número deregistro que a pasado por el awk:

$ ls -l | awk '{ print NR,$1,$9}'

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 96/129

 

Existen muchas más variables en el awk que son de extrema utilidad. Por ejemplo, enel caso anterior sabíamos que el ultimo campo estaba en la posición número 9, pero¿que ocurre si no sabemos la posición del último campo o esta varia? Para esto estala variable NF que lleva la cuenta de la cantidad de campos de cada registro. Por elloen lugar de la anterior forma podríamos poner:

$ ls -l | awk '{ print NR,$1,$NF}'

y obtendríamos idénticos resultados. Pero un momento, aquí hay algo raro. Lavariable NR no tiene el signo $, en cambio la variable NF si lo tiene. Esto esta dadoasí para que no sea reemplazado por el awk. Por ejemplo si hubiésemos puesto lavariable NF sin signo $, lo que nos esta mostrando no es el último campo, sino lacantidad de campos que ese registro tiene. Esto es, a diferencia del shell, el símbolode dólar es utilizado para referenciar campos, no para utilizar el valor de las variables.

Las siguientes variables predefinidas son comúnmente utilizadas:

Variable DescripciónFS (Field separator). Contiene el caracter que indica a awk en qué punto

del registroacaba un campo y empieza el siguiente. Por omisión es unespacio. Se puede indicar un caracter alternativo mediante unainstrucción de asignación como FS = “/”. Si se deja vacío, cada lecturase realiza dejando un caracter en cada campo.

 NF (Number of fields). Contiene el número total de campos que contieneel registro que se está leyendo en cada momento.

RS (Record separator).C ontiene el caracter que indica a awk en quépunto del archivo acaba un registro y empieza el siguiente. Es “\n” por 

omisión. NR  (Number of record). Contiene el número de orden del registro que se

estáprocesando en cada momento.

OFS (Output FS). Contiene el separador de campos para la salidagenerada por awk. La instrucción print inserta en la salida un caracter de separación cada vez que aparece una coma en el código.

ORS (Output RS). Contiene el caracter que awk escribirá al final de cadaregistro. Es“\n” por omisión.

Para redefinir una variable utilice la opción -v del awk, por ejemplo:

$ awk -v FS=”:” -v OFS=”\t” '{ print $1,$3,$4 }' /etc/passwd

El comando anterior redefine las variables predeterminadas FS y OFS indicando queel separador de campos de entrada es “:” y el separador de campos de salida es untabulador.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 97/129

 

Programación en awk

El awk puede ser usado no sólo en una línea. Podríamos usarlo también comocualquier otro lenguaje para realizar múltiples tareas en una línea o realizar algo antesde comenzar la lectura y otra después. Para demarcar el código se utilizan los paresBEGIN-END. Todo lo que aparece después de la palabra BEGIN, pero en el mismo

renglón, se realiza antes de que comience el ciclo, es decir, antes que se procese eltexto. Cualquier cosa que este después de END se realiza después de que se hayaleído la última línea y cerrado el ciclo. Estas líneas tendrán que estar en un archivoque será utilizado por el awk para procesar en este ejemplo al archivo /etc/passwd.Un ejemplo seria el siguiente:

BEGIN { FS=":"}{ print "Nombre Completo:",$5 }{ print "Nombre de Usuario:",$1}{ print "UID:",$3,"GID:",$4 }{ print " " }END { print "Total de usuarios:", NR}

Este pequeño programa realizado con el vi será guardado en el archivo awk.src, elnombre se lo damos nosotros, y nos servirá para mostrar algunos datos del/etc/passwd mas detalladamente. La forma de ejecutarlo es a través delmodificado "-f" donde le decimos al awk que a continuación le pasaremos un archivocon el programa que tiene que usar para procesar el /etc/passwd.

$ awk -f awk.src /etc/passwd

Otro ejemplo podría ser este que utiliza awk para verificar el estado del espacio endisco:

BEGIN {ALERTA = 70

CRITICO = 90}$5 >= ALERTA && $5 <= CRITICO { print "Atencion:",$6,"Uso:",$5"%" }$5 >= CRITICO { print "Critico:",$6,"Uso:",$5"%" }

Luego ejecute el comando:

$ df |tr -d % | awk -f /tmp/awk.src

Y obtendrá un reporte indicando los sistemas de archivos que se encuentran enestado de alerta o crítico.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 98/129

 

11

Scripts del shell

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 99/129

 

Scripts del shell

Conceptos básicos de scripts del shell

El intérprete de comandos o "shell" de Linux es también un lenguage de programación

completo. La programación de shell se usa mucho para realizar tareas repetidas confrecuencia. Los desarrolladores de sistemas suelen escribir aplicaciones en ellenguaje de base del sistema operativo, gcc en el caso de Linux, por razones derapidez y eficiencia. Sin embargo, el shell de Linux tiene un excelente rendimiento enla ejecución de "scripts" (guiones); ésta es la denominación aplicada a los programasescritos en el lenguaje del shell.

Una vez creado un archivo de script, es conveniente cambiar el modo del archivo aejecutable, para ello ejecute el comando:

$ chmod 755 archivo.sh

Entonces para ejecutar un archivo script, introduzca la ruta al archivo. El script seejecutará en un nuevo shell. Si desea que el script se ejecute en el shell actual enlugar de iniciar uno nuevo, ejecute el script usando punto, espacio y el nombre delscript de la siguiente forma:

. archivo.sh

Como en cualquier lenguaje de programación, en bash hay una serie de caracteres ypalabras reservadas que tienen un significado especial.

Los caracteres especiales más comunes

Como en cualquier lenguaje de programación, en bash hay una serie de caracteres ypalabras reservadas que tienen un significado especial:

Codigo Descripción#!/bin/bash Todos los scripts de shell empiezan con esta linea, que sirve para

decirle al sistema operativo que se trata de un fichero ejecutable y quesepa cual es el intérprete que lo tiene que interpretar.

# Comentario, todo lo que haya tras él en una línea es ignorado.

; Separa dos comandos.

. Seguido del nombre de un fichero, hace que el contenido de esefichero sea interpretado por la shell como si fuese parte del script, escomo un #include de C o el comando source del bash.

' y " Las comillas dobles y simples tienen un funcionamiento distinto comose describe más abajo.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 100/129

 

Codigo Descripción

` o $() Comillas invertidas y $(), se ejecuta lo que hay entre ellos como uncomando y se sustituye su salida.

\ Escapa al siguiente carácter.

• Comillas dobles: En general los caracteres especiales no son interpretadoscuando están entre comillas dobles. Sin embargo algunos de ellos sí soninterpretados:

– $: Esta permitido referenciar variables dentro de las comillas dobles.

– \: Se pueden escapar caracteres.

– `: Se puede realizar sustitución de comandos, esto es, ejecutar un comando ysustituir la cadena por su salida.

• Comillas simples: Dentro de las comillas simples todos los caracteres soninterpretados literalmente, ninguno de los caracteres especiales conserva sussignificado dentro de ellas.

• Comillas invertidas: Poner una cadena entre comillas invertidas supone ejecutar su contenido como un comando y sustituir su salida.

El comando read

Este comando tiene como propósito solicitar información al usuario. Su ejecucióncaptura las digitaciones del usuario, hasta obtener un caracter nueva línea (teclaENTER).. El ejemplo siguiente obtiene datos del usuario y los repite en pantalla:

clearecho "Datos del usuario."echo -n "Nombre y apellido: "read NOMBREecho -n "Cédula de identidad: "read CEDULAechoecho "Ha ingresado los siguientes datos:"echo " Nombre y apellido: $NOMBRE"echo " Cédula de Identidad: $CEDULA"

También puede usarse read para detener momentáneamente la ejecución de unprograma. El siguiente ejemplo detiene la ejecución del programa hasta que se

presione la tecla ENTER:echo "Presione ENTER para continuar..."read

Test

Este comando prueba condiciones y devuelve valor cierto (0) o falso (distinto de 0)según el criterio de cierto y falso del shell; esto lo hace apto para usar en la condiciónde if. Tiene dos formas equivalentes

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 101/129

 

test expresión[ expresión ]

Los blancos entre la expresión y los corchetes son necesarios.

Test de archivos

Estos tests toman como argumento el nombre de un archivo y devuelven verdadero(0) o falso (1):

Prueba Descripción

-e Verdadero si el archivo existe.

-f Comprueba que el archivo es un archivo regular (que no es ni undirectorio, ni un dispositivo).

-d  Devuelve verdadero si se trata de un directorio.

-h Cierto si el archivo es un enlace simbólico.

-r Cierto si se tiene permiso para leer el archivo .-w Cierto si se tiene permiso para escribir el archivo.

-x Cierto si se tiene permiso para ejecutar el archivo.

El siguiente ejemplo verifica si un archivo es ejecutable:

if [ -x /bin/ls ]thenecho "el archivo es ejecutable"

fi

Es común utilizar un archivo vacío para indicar que un proceso ya se encuentra enejecución. Durante el inicio del proceso, se crea un archivo vacío indicando que elproceso está activo.

El siguiente ejemplo es comúnmente utilizado para verificar si un proceso ya seencuentra en ejecución consultando la existencia del archivo:

if [ -e /var/run/proceso ]thenecho "El proceso ya se está ejecutando"

fi

Test de comparación de enterosToman dos valores y devuelven verdadero o falso:

Prueba Descripción-eq  Igual a.

-ne No es igual a.

-gt Mayor que.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 102/129

 

Prueba Descripción

-ge Mayor o igual que.

-lt Menor que.

-le Menor o igual que.

Ejemplo:

Este script verifica la cantidad de sesiones de un usuario, si tiene mas sesiones a lasestablecidas, entonces se lo no se le permite el inicio de sesión. El script deberá ser llamado desde el /etc/profile:

LIMIT=2SESSIONS=`who | grep $USER | wc -l`if [ $SESSIONS -gt $LIMIT ]thenecho "Usted ya tiene $SESSIONS activas”echo “No se permiten nuevos inicios de sesion"exit 0

fi

Test de comparación de cadenas

Comparan dos cadenas y devuelven verdadero o falso.

Prueba Descripción= ó == Comparación de igualdad.

!= Comparación de desigualdad. El operador ! se puede colocar delantede cualquier test para negar su resultado.

 < y >  Menor que y mayor que.

Ejemplo:

if [ "$USER" != "root" ]thenecho "Usted debe ser root para ejecutar este programa"

elsetar cvf /dev/st0 /

fi

Condicionales

Las condicionales permiten efectuar comandos basándose en el resultado deexpresiones.

if [ expresion 1 ]thenBloque 1

elif [ expresion 2 ]thenBloque 2

elseBloque 3

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 103/129

 

fi

Este es el modelo más general con todas las opciones posibles. Si el valor de retornode expresion 1 es 0 (verdadero), las líneas de comandos de "Bloque 1" seránejecutadas. El resto del bloque if será ignorado en ese caso.

Si el valor de retorno de test 1 no es 0 (por tanto es falso), pero el de expresion

2 sí que es 0, entonces el "Bloque 1" no será ejecutado, mientras que el "Bloque2" sí que será ejecutado. El "Bloque 3" será ignorado. Podemos poner tantos elifcomo necesitemos.

Si ni expresion 1 ni expresion 2 ni cualquier otra de otros elif que pongamosretornan 0, entonces el "Bloque 3" será ejecutado.

Usamos fi para terminar la estructura condicional. Las condiciones puedenconformarse por cualquier forma de test.

Ejemplos.

Este script verifica si un numero introducido es menor, igual o mayor a cinco.

#!/bin/bash

echo "Intrduzca un numero: "

read NUMERO

if [ $NUMERO -lt 5 ]thenecho "El numero era menor que 5"

elif [ $NUMERO -eq 5 ]thenecho "El numero era 5"

elif [ $NUMERO -gt 5 ]thenecho "El numero era mayor que 5"

elseecho "No introdujo un numero"

fi

Este script verifica si un usuario tiene acceso a un directorio dado. El script puedeejecutarse de dos formas, interactivamente si no se especifica como argumento eldirectorio o de forma no interactiva, indicando la ruta al directorio como primer argumento.

#!/bin/bash

# Uso del script: $0 [ruta_a_dir]

# Comprobamos la cantidad de argumentos recibidos# Si no se paso ningun argumento, ejecuta el script# en modo interactivoif [ $# -eq 0 ]thenecho -n "Ingrese ruta al directorio: "read DIR# Verificamos que el usurario haya introducido# una ruta, si no, termina el programa con error.if [ -z $DIR ]

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 104/129

 

thenecho "Debe introducir una ruta valida"exit 1

fielseDIR=$1

fi

# Se verifica si se tiene acceso al directorio

cd $DIR > /dev/null 2>&1

# Se verifica el valor de retorno del comando anteriorif [ $? -eq 0 ]thenecho "Usted tiene acceso a $DIR"

elseecho "Usted no tiene acceso a $DIR"

fi

Bucles

Los bucles en bash difieren un poco de lo que son en la mayoría de los lenguajes deprogramación, pero vienen a cumplir una misión similar; a solucionar el problema de

"Quiero que mi script haga esto mientras se de esta condición", o "Para cada uno delos elementos siguientes, quiero que mi script haga esto otro".

Así, tenemos dos tipos de bucles diferentes en bash: for y while.

Bucles for 

Este comando implementa una estructura repetitiva, en la cual una secuencia decomandos se ejecuta una y otra vez. Su sintaxis básica es la que sigue:

for VARIABLE in <Lista de valores>do

Comando 1Comando 2

done

for (( inicializacion; condicion; incremento ))doComando 1Comando 2

done

Ejemplos.

Este script obtiene información de tres usuarios, root, lp y bin.

for USER in root lp bindofinger $USER

done

Este script establece el permiso de ejecución a todos los archivos del directorio:

for FILE in $(ls *.sh)`doecho "Haciendo ejecutable el archivo $FILE"chmod 755 $FILE

done

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 105/129

 

Este script verifica si reponden 5 hosts de la red.

for I in $(seq 5)doecho "Haciendo ping a 192.168.0.$I"ping -c 1 192.168.0.$I

done

Este script es un simple contador.

for (( i=0; i<10; i++ ))doecho $i

done

Bucle while

Este comando implementa una estructura repetitiva en la cual el conjunto decomandos se ejecuta mientras se mantenga válida una condición (while = mientras).La condición se examina al principio y luego cada vez que se completa la secuenciade comandos. Si la condición es falsa desde la primera vez, los comandos no seejecutan nunca. Su sintaxis básica es la que sigue:

while [ expresion ]doComando 1Comando 2

done

Ejemplos.

Este script realiza el comando df -k cada cinco segundos hasta que se cancele

presionando CTRL+C.while truedodf -ksleep 5

done

Este script utiliza el comando expr para crear un contador que se incrementa de auno.

CONTADOR=0while [ "$CONTADOR" -lt 10 ]do

echo $CONTADORCONTADOR=$(expr "$CONTADOR" + 1)

done

Este script verifica si un usuario tiene acceso a un directorio dado. Si el usuario nointroduce una ruta válida, el script vuelve a solicitar la ruta al directorio.

#!/bin/bash

# Comprobamos la cantidad de argumentos recibidos# Si no se paso ningun argumento, ejecuta el script# en modo interactivo

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 106/129

 

if [ $# -eq 0 ]thenecho -n "Ingrese ruta al dir: "read DIR# Verificamos que el usurario haya introducido# una ruta, si no, vuelve a solicitar la ruta.while [ -z $DIR ]doecho -n "Ingrese ruta al directorio: "

read DIRdoneelseDIR=$1

fi

# Se verifica si se tiene acceso al directoriocd $DIR > /dev/null 2>&1

# Se verifica el valor de retorno del comando anteriorif [ $? -eq 0 ]thenecho "Usted tiene acceso a $DIR"

elseecho "Usted no tiene acceso a $DIR"

fi

En los bucles break y continue tienen el mismo funcionamiento que en otroslenguajes. break termina el bucle y continue salta a la siguiente iteración.

Case

Este comando implementa alternativas o "casos"; elige entre múltiples secuencias decomandos la secuencia a ejecutar. La elección se realiza encontrando el primer patróncon el que aparea una cadena de caracteres.

Si bien es posible hacerlo con if, y elif, pero existe otra forma más eficiente ycómoda de hacer esto: con la estructura case. Se usa como sigue:

case $VARIABLE invalor1)Bloque 1

;;valor2)Bloque 2

;;....*)

Ultimo Bloque;;esac

valor1 y valor2 son valores que nosotros esperamos que la variable puedacontener, y Bloque 1 y Bloque 2 son los bloques de comandos con lo quequeremos que se haga en cada caso. Podemos poner tantos valores reconociblescomo queramos. Los puntos son precisamente para indicar aquello. El * (asterisco)es un comodín exactamete igual que hacíamos moviéndonos entre directorios encapítulos anteriores, cualquier cosa que no haya coincidido en alguna de las de arriba

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 107/129

 

coincidirá aquí. Esto es completamente opcional.

Ejemplo. Este script permite la creación de un backup si se especifica la opción -c o –create, y lista el backup creado si se indica la opción -l, -t o --list.

if [ $# -lt 1 ]then

echo "Error. Esperaba al menos un parametro"exit 1fi

case $1 in-c|--create)echo "Creando backup de $HOME"tar cvf /tmp/$USER.tar $HOME;;

-l|-t|--list)echo "Listando backup en el archivo /tmp/$USER.tar"tar tvf /tmp/$USER.tar;;

*)echo "Error de sintaxis"echo "Uso: $0 <-c|--create>"

echo " $0 <-l|-t|--list>";;esacexit 0

Con exit salimos del script, haciendo que el valor devuelto sea 0 (éxito) o 1 (error)según los parámetros fueran reconocidos o no.

Parámetros posicionales

Es un tipo de variable de shell, almacenan los parámetros de entrada de un script.Tienen los nombres 0, 1, 2, ...y sus valores son $0, $1, $2...

La variable # contiene el número de parámetros posicionales sin contar con el 0.

La variable $ contiene el identificador del proceso bash que corrió el script.

Ejemplo:

if [ $# -eq 0 ]thenecho "Debe especificar al menos un argumento"echo "Uso: $0 usuario"exit 1

elseps -u $1exit 0

fi

Primero se comprueba si no se ha dado un argumento al script “procesos”, si no, sedespliega un mensaje de cómo debería ejecutarse el comando y termina con uncódigo de error. Si se ha especificado un argumento, se toma el primer parámetroposicional, el cual contiene el valor del argumento dado y se lo pasa al comando a ser ejecutado.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 108/129

 

Scripts de ejemplo

Script utilizado para eliminar archivos mas antiguos a una semana de un directorioespecíficado:

#!/bin/bash

echo Bienvenido $USERecho -n "Introduzca el nombre del directorio donde desea borrar los archivos masantiguos de una semana: "read DIRcd $DIR 2> /dev/null

# Si el valor de retorno es diferente de 0, existio un error.

case $? in0)find $DIR -type f -mtime +7 -ok rm {} \;;;1)echo "El directorio que usted introdujo no existe";;esac

El siguiente script permite la realización de una copia de seguridad del directoriopersonal. Este script evita la ejecución simultanea del mismo trabajo de copia deseguridad y los mensajes de información y error son registrados a archivos quepodrán ser consultados posteriormente.

#!/bin/bash# Definimos los permisos por defecto para los archivosumask 022

# Variables configurables por el usuario# En que directorio se almacenara la copia de seguridadBACKUPDIR=/tmp

# A que archivo se hara la copia de seguridadBACKUPFILE=$BACKUPDIR/$USER-`date +%d-%m-%Y`.tar

# El backup podria hacerse a cinta en lugar de archivo.# Para ello, comente la declaracion anterior de BACKUPFILE# y descomente la linea de abajo# BACKUPFILE=/dev/st0

# A que archivo se enviaran los mensajes de informacionLOGFILE=$BACKUPDIR/$USER.log

# A que archivo se enviaran los mensajes de errorERRFILE=$BACKUPDIR/$USER.errs

# Este archivo evita ejecucion simultanea de mas de una tarea de

# copia de seguridad para el mismo usuarioRUNFILE=/tmp/$USER.run

# Inicio del scriptif [ -e "$RUNFILE" ]thenecho "La copia de seguridad para el usuario $USER ya esta en ejecucion"exit 1

elsetouch $RUNFILEecho "Haciendo copia de seguridad del directorio $HOME"tar cvf $BACKUPFILE $HOME > $LOGFILE 2> $ERRFILEif [ $? -eq 0 ]

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 109/129

 

thenecho "La copia de seguridad ha finalizado sin errores"

elseecho "La copia de seguridad ha finalizado con errores"echo "El registro de error ha sido enviado a su direccion de correo"mail -s "Errores durante el respaldo" $USER < $ERRFILE

firm $RUNFILE

fi

exit 0

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 110/129

 

12

Impresión y comunicación

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 111/129

 

Impresión y comunicación

Imprimir bajo Linux

Los usuarios tienen que usar el comando lpr para imprimir un fichero. El comando

lpr es responsable de preocuparse por el trabajo inicial para imprimir un fichero,pasando entonces el control a otro programa, cupsd o lpd, el demonio de lasimpresoras de líneas.

Este demonio le dice entonces a la impresora cómo imprimir el fichero.

Cuando lpr es ejecutado, primero copia el fichero a un cierto directorio (el directoriode spool) donde el fichero permanece hasta que cupsd/lpd lo imprime.

Esto permite que hayan múltiples trabajos a la vez en una cola.

Las sintaxis de lpr es bastante familiar:

lpr [ opciones ] [ nombre_fichero ... ]

Si no se especifica un nombre de fichero, lpr asume que la entrada será efectuadapor la entrada estándar (normalmente el teclado o la salida de otro programa). Estopermite que el usuario redirija la salida de un programa al dispositivo de impresión.Por ejemplo:

$ tail /etc/hosts | lpr

El comando lpr acepta varios argumentos en la línea de comandos que permiten alusuario controlar cómo trabaja. Algunos de los argumentos más ampliamente usadosson:

Opción Descripción-P <impresora>  Especifica la impresora a usar.

-s Crea un enlace simbólico en lugar de copiar el fichero completo aldirectorio de spooling (útil para ficheros grandes).

-# <numero> Eespecifica el número de copias a imprimir.

Un ejemplo de interacción con lpr podría ser algo como:

$ lpr -# 2 -sP laser1 archivo

Este comando crearía un enlace simbólico al fichero archivo en el directorio despool de la impresora llamada laser1, donde debería ser procesado por cupsd/lpd. Además debería imprimir una segunda copia de archivo.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 112/129

 

Viendo la cola de impresión

Para verificar los trabajos en la cola de impresión se utiliza el comando lpstat. Conla opción -R puede visualizar los trabajos de impresión en cola:

$ lpstat -R0 hplj01-1 jperez 1024 vie 09 oct 2009 09:44:43 PYT

1 hplj01-2 plopez 2048 vie 09 oct 2009 09:44:47 PYT

Cancelando un trabajo de impresión

Otra útil característica para cualquier sistema de impresión es la capacidad decancelar un trabajo que ha sido 'encolado' anteriormente. Para hacer esto, use elcomando cancel. Por ejemplo, para cancelar el trabajo de 2 de la impresora hplj01utilice el comando:

$ cancel hplj01-2

Es posible cancelar los trabajos de impresión propios, únicamente el usuario root

puede cancelar trabajos de impresión de otros usuarios.

La variable de entorno PRINTER

Todos los comandos del sistema de impresión de Linux aceptan la opción -P. Estaopción permite que el usuario especifique que impresora usar como salida. Si unusuario no especifica la impresora a usar, entonces se asumirá que la impresora por defecto es el dispositivo de salida.

En lugar de tener que especificar la impresora a usar cada vez que se ejecuta uncomando de impresión, puede configurar la variable de entorno PRINTER indicando la

impresora que desea usar. Esto se hace de diferentes maneras por cada shell. Para elbash puede hacerlo con:

$ PRINTER="nombre_de_impresora"; export PRINTER

Estos comandos pueden ser situados en los scripts de inicio de sesión.

Enviar correo electrónico

Todo lo que hay que hacer es teclear “mail usuario" y escribir el mensaje.

Por ejemplo, supongamos que queremos enviar correo a un usuario que se llamasam:

$ mail samSubject: Documentacion del usuarioSolo estoy probando el sistema de correo.[Ctrl-d]

El programa mail es muy simple. Como cat, acepta texto de la entrada estándar,línea a línea, hasta que recibe un caracter de fin-de-texto como único caracter en una

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 113/129

 

línea: Ctrl-d . Así, para enviar nuestro mensaje, tuvimos que pulsar Intro y despuésCtrl-d.

Usar mail es la manera más rápida de enviar correo, y es bastante útil cuando se usacon redirección de entrada y/o salida. Por ejemplo, si quisiéramos enviar por correoelectrónico el fichero reporte1 a Sam, podríamos escribir 

$ mail -s "Reporte Numero 1" sam < reporte1

Este comando enviaría un correo al usuario sam, el asunto del correo sería “ReporteNumero 1” y el contenido del correo sería el texto del archivo reporte1.

Leer el correo

Para leer el correo, debe ejecutar el comando:

mail

El símbolo petición de órdenes del programa mail es un “&”. Las órdenes básicas demail son:

Opción Descripciónh Lista los mensajes recibidos.

d <lista>  Borra los mensajes seleccionados. La lista de mensajesconsiste en una serie de números separados por espacios, o unrango como 2-5, que equivale a 2 3 4 5.

s <lista>  <archivo>  Guarda los mensajes seleccionados en el archivo indicado.

r Responder a un mensaje.

q  Salir y guardar los mensajes que han sido leídos y no hayansido borrados en un fichero llamado mbox en el HOME delusuario.

Para acceder a los mensajes guardados ejecute el comando:

$ mail -f

Un problema del comando mail es que si un mensaje es más largo que la pantalla, elprograma mail no se detiene!. Habrá que guardar el mensaje en un fichero y usar more sobre él después.

Redirección de correo

También se puede tener un archivo .forward en su directorio personal. En estearchivo puede especificar otra dirección de correo a la cual deberán ser reenviados

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 114/129

 

los mensajes que lleguen para usted en este sistema.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 115/129

 

13

Control de procesos y herramientas del sistema

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 116/129

 

Control de procesos y herramientas del sistema

El árbol de procesos

Al igual que con los archivos, todos los procesos que corren en un sistema GNU/Linux

están organizados en forma de árbol. La raíz de este árbol es init. Cada proceso tieneun número (su PID, Process ID, Identificador de proceso), junto con el número desu proceso padre (PPID, Parent Process ID, Identificador del proceso padre).

El PID de init es 1, y también su PPID: init es su propio padre.

El comando ps es utilizado para mostrar la lista de procesos del sistema.Al enviar este comando sin un argumento se mostrarán solo los procesos iniciadospor Ud. en la terminal que está utilizando:

$ psPID TTY TIME CMD5162 ttya1 00:00:00 zsh7452 ttya1 00:00:00 ps

El comando ps tiene una gran cantidad de opciones, y sólo veremos las máscomunes:

Opción Descripcióna También muestra los procesos iniciados por los otros usuarios.

u Muestra, para cada proceso, el nombre del usuario que lo inició y la

hora a la cual fue iniciado.x También muestra los procesos sin terminal de control alguna o con

una terminal de control diferente a la que Ud. está utilizando.

w Salida amplia.

-u <usuario> 

Mustra los procesos de un usuario específico.

La salida de este comando está dividida en campos diferentes: el que más leinteresará es el campo PID, que contiene el identificador del proceso. El campo CMDcontiene el nombre del comando ejecutado.

Una forma muy común de invocar a ps es la siguiente:

$ ps aux | less

Esto le da una lista de todos los procesos que se están ejecutando corrientemente,entonces puede identificar uno o más procesos que estén causando problemas y,subsecuentemente, puede “matarlos”.

El comando pstree muestra los procesos en forma de estructura de árbol. Una

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 117/129

 

ventaja es que Ud. puede ver inmediatamente quien es el proceso padre de otro:cuando quiere eliminar toda una serie de procesos, y si son todos padres e hijos, essuficiente matar al ancestro común. Puede usar la opción -p, que muestra el PID decada proceso, y la opción -u que muestra el nombre del usuario que inició el proceso.Como generalmente la estructura de árbol es grande, es más fácil invocar a pstreede la siguiente manera:

$ pstree -up | less

Esto le da una visión general de toda la estructura de árbol de los procesos.

Las señales

Cada proceso en Linux puede reaccionar a las señales que se le envían. La señal 15es la señal que debe enviar a un proceso para finalizarlo normalmente. La señal 9termina un proceso irrevocablemente, sin darle tiempo de finalizar adecuadamente.Esta es la señal que se deberá enviar a un proceso cuando el mismo está trabado o

exhibe otros problemas.

Se encuentra disponible una lista completa de la señales usando el comando kill-l.

kill, killall

Estos dos comandos se usan para enviar señales a los procesos. El comando killnecesita el número de un proceso como argumento, mientras que el comandokillall necesita el nombre de un comando.

Los dos comandos opcionalmente pueden recibir el número de una señal comoargumento. Predeterminada-mente, ambos envían la señal 15 (TERM) a el o losprocesos relevantes. Por ejemplo, si quiere matar el proceso con PID 785, Ud. ingresael comando:

$ kill 785

Si quiere enviarle la señal 9, entonces ingresa:

$ kill -9 785

Supongamos que quiere matar un proceso del cual Ud. conoce el nombre delcomando. En vez de encontrar el número de proceso usando ps, puede matar elproceso directamente:

$ killall -9 netscape

Pase lo que pase, sólo matará a sus propios procesos (a menos que Ud. sea root),por lo que no debe preocuparse acerca de los procesos “del vecino” que tienen elmismo nombre, ellos no serán afectados.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 118/129

 

Usando el control de trabajos

Control de trabajos se refiere a la habilidad de poner procesos (esencialmente, otrapalabra para programas) en background (segundo plano) y ponerlos de vuelta enforeground (primer plano). Esto es como decir, que se quiere ser capaz de ejecutar algo mientras se hacen otras cosas, pero que estén ahí otra vez cuando se les quieradecir algo o pararlos.

Los dos comandos más importantes en el shell son fg, para primer plano, y bg, parasegundo plano. Para entender como funcionan, use el comando yes en el indicador del sistema.

$ yes

Esto produce el maravilloso efecto de desplazar una larga columna de yes por la parteizquierda de la pantalla, tan rápido que no se pueden seguir. Para pararlo, se podrápulsar Ctrl-C y matarlo, pero esta vez Ud. oprimirá Ctrl-Z . Parece haberse detenido,pero habrá un mensaje antes del indicador de sistema, más o menos parecido a este:

[1]+ Stopped yes

Significa que el trabajo yes se ha suspendido en el segundo plano. Se puede hacer que siga ejecutándose tecleando fg en el indicador de sistema, que lo pondrá enprimer plano otra vez. Si se desea, se pueden hacer otras cosas antes, mientras estásuspendido.

Pongamos aparte el mensaje que obtuvimos del shell:

[1]+ Stopped yes

El número entre corchetes es el número de trabajo de este proceso, y se usarácuando se necesite referenciarlo específicamente. (Naturalmente, desde el momentoque tengamos en ejecución múltiples trabajos, se necesita un modo de acceder acada uno). El “+" siguiente indica que ése es el “trabajo actual" esto es, el procesomás reciente que se ha movido del primer plano al segundo.

Si se tecleara “fg", se pondrá el trabajo con el “+" en primer plano otra vez. (Mássobre esto después, cuando se discuta la ejecución de múltiples trabajos a la vez). Lapalabra Stopped significa que el trabajo está “parado". El trabajo no está muerto,pero actualmente no se ejecuta. Linux lo ha guardado en un estado especial desuspendido, listo para saltar a la acción cuando alguien lo solicite. Finalmente, el yes

es el nombre del trabajo que se ha detenido.

Antes de seguir adelante, matemos este trabajo y lo arrancamos otra vez de formadiferente. El comando se llama kill y se usa del siguiente modo:

$ kill %1[1]+ Stopped yes$

Ese mensaje sobre el proceso que indica “parado" otra vez induce a error. Para saber 

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 119/129

 

si aún está vivo (eso es, tanto en ejecución como congelado en un estadosuspendido), teclee “jobs":

$ jobs[1]+ Terminated yes$

Ahora ya lo sabe: el trabajo ha terminado!.

Para enviar directamente un comando a segundo plano sin tener que detenerlo yejecutar bg, simplemente agregue el símbolo & al final del comando. Por ejemplo:

$ find / -name "*tesis*" -ls > ls.out &

Agendando la ejecución periódica de procesos

crontab: reportar o editar su archivo cron

crontab es un comando que le permite ejecutar comandos a intervalos de tiemporegulares, con la ventaja adicional que no tiene que estar conectado al sistema y queel reporte de salida se le envía por correo electrónico.

Los intervalos se pueden especificar en minutos, horas, días, meses o días de lasemana.

Dependiendo de las opciones, crontab actuará diferentemente:

crontab [-u usuario] [-e | -l | -r]crontab [-u usuario] archivo

Opción Descripción-l Mostrar su archivo cron corriente.

-e Editar su archivo cron.

-r Eliminar su archivo cron corriente.

-u <usuario> 

Aplicar una de las opciones de arriba para el usuario <usuario>. Sóloroot puede hacer esto.

 <archivo>  Las entradas para el cron son leídas desde el archivo especificado.

Comencemos editando un cron. Si ingresa el comando:

$ crontab -e

Estará frente a su editor de texto favorito si tiene definida la variable de entornoEDITOR o la variable de entorno VISUAL, caso contrario se usará vi. Una línea de unarchivo cron se compone de seis campos. Los primeros cinco campos son losintervalos de tiempo para los minutos, horas, días en el mes, meses y días en lasemana. El sexto campo es el comando a ejecutar.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 120/129

 

Las líneas que comienzan con un # se consideran como comentarios y seránignoradas por  crond (el programa que es responsable de ejecutar los archivoscrontab). Aquí tiene un ejemplo de entradas cron:

# Si no quiere recibir correo electronico simplemente# "descomente" la siguiente linea

# MAILTO=""## Cada Navidad, enviar un mail a los usuarios del sistema0 0 25 12 * /bin/mail -s "Feliz Navidad" [email protected] < $HOME/feliz_navidad## Borrar archivos viejos cada martes a las 17 hs...0 17 * * 2 /usr/bin/find -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1## Ejecutar copias de seguridad todos los días a las 18:30 excepto domingos.30 18 * * 1-6 /usr/local/bin/user_backup.sh## Verificar el estado de la aplicación cada 5 minutos*/5 * * * * /usr/local/bin/check_status.sh app1

Hay muchas otras maneras de especificar los intervalos aparte de las que se

muestran. Por ejemplo, puede especificar un conjunto de valores discretos separadospor comas (1,14,23) o un rango (1-15), o un intervalo determinado (*/5) que significacada cinco.

Agendando procesos para su ejecución

at: programar un comando, pero solo una vez.

También podría querer ejecutar un comando un día dado, pero no regularmente. Por ejemplo, quiere que se le recuerde de una cita, hoy a las 18 horas. Ud. emplea X , yquiere que se le notifique, por ejemplo, a las 17:30 hs. que debe irse. at es lo que Ud.quiere aquí:

$ at 5:30pmat> xmessage "Hora de irse! Cita a las 6pm"CTRL-Dat> <EOT>

Se puede especificar la hora de diferentes maneras:

• now +<intervalo>: Significa eso, ahora, más un intervalo opcional. (Si no seespecifica el intervalo significa ahora mismo). La sintaxis para el intervalo es <n>

(minutes|hours|days|weeks|months). Por ejemplo, puede especificar  now + 1 hour

(dentro de una hora), now + 3 days (dentro de tres días) y así sucesivamente.

•  <hora> <dia>: Especificar la fecha por completo. El parámetro <hora> es obligatorio.at es muy liberal en lo que acepta: por ejemplo, puede ingresar  0100, 04:20, 2am,0530pm, 1800, o uno de los tres valores especiales: noon (mediodía), teatime (la horadel té, 16 hs.) o midnight (medianoche). El parámetro <dia> es opcional.

• También puede indicar una fecha específica en el formato MM/DD/AA, MM/DD/AA oMM.DD.AA.

at también acepta opciones diferentes:

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 121/129

 

Opción Descripción-l Imprime la lista de los trabajos que están programados; el primer 

campo es el número de trabajo. Esto es equivalente al comando atq .

-d <n>  Quita el trabajo número <n> de la lista. Puede obtener los númerosde los trabajos con el comando atq o con la opción anterior. Esto esequivalente al comando atrm <n>.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 122/129

 

14

Nociones básicas de red

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 123/129

 

Nociones básicas de red

Introducción a las redes IP

Una dirección IP es un número que identifica de manera lógica y jerárquica a una

interfaz de red de un dispositivo (habitualmente una computadora) dentro de una redque utilice el protocolo IP.

En su version 4, una dirección IP se representa mediante un número binario de 32 bits(IPv4). Las direcciones IP se pueden expresar como números de notación decimal: sedividen los 32 bits de la dirección en cuatro octetos. El valor decimal de cada octetopuede ser entre 0 y 255 .

Un ejemplo de representación de dirección IPv4 sería : 164.12.123.65

Domain Name System (DNS) es una base de datos distribuida y jerárquica que

almacena información asociada a nombres de dominio en redes como Internet.

La asignación de nombres a direcciones IP es ciertamente la función más conocida delos protocolos DNS. Por ejemplo, si la dirección IP del sitio FTP demercurio.linux.com.py es 200.64.128.4, la mayoría de la gente llega a este equipoespecificando mercurio.linux.com.py y no la dirección IP.

El comando ping

El comando ping es una herramienta de diagnóstico para verificar la conectividad

entre dos computadoras en una red. Envía paquetes ICMP con una solicitud derespuesta a una dirección IP remota y espera las respuestas ICMP.

El resultado de ping solía ser un muy buen indicador de la habilidad de unacomputadora para enviar paquetes IP en general. Si podías hacer  ping a unacomputadora, también podrías hacer una conexión ftp o http. Con el advenimientomayor de el filtrado de paquetes por cuestiones de seguridad, esto se está volviendomenos cierto. Muchos firewalls explícitamente prohíben a los paquetes de tipo ICMPbajo las bases de que,

El comando ping casi siempre es utilizado sin parámetros adicionales y terminadocon un Ctrl +C. Los resultados se ven como sigue:

$ ping mercurio.linux.com.pyPING mercurio.linux.com.py (192.168.1.1) from 192.168.1.10 : 56(84) bytes of data.64 bytes from mango (192.168.1.1): icmp_seq=0 ttl=255 time=0.5 ms64 bytes from mango (192.168.1.1): icmp_seq=1 ttl=255 time=0.3 ms64 bytes from mango (192.168.1.1): icmp_seq=2 ttl=255 time=0.3 ms64 bytes from mango (192.168.1.1): icmp_seq=3 ttl=255 time=0.3 ms64 bytes from mango (192.168.1.1): icmp_seq=4 ttl=255 time=0.3 ms64 bytes from mango (192.168.1.1): icmp_seq=5 ttl=255 time=0.3 ms

--- mercurio.linux.com.py ping statistics ---6 packets transmitted, 6 packets received, 0% packet loss

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 124/129

 

round-trip min/avg/max = 0.3/0.3/0.5 ms

La salida puede dividirse en tres secciones. La primera sección, la línea empezandocon la palabra "PING", muestra un vistazo del comando. La segunda sección, laslíneas que empiezan con "64 bytes" muestran las respuestas obtenidas. La tercerasección, todo después de la línea "--- mercurio ping statistics ---",

muestra un resumen de los resultados. En este caso, los resultados son buenos,ninguno de los paquetes fueron arrojados y todos pasaron suficientemente rápido.

$ ping 192.168.1.3PING 192.168.1.3 (192.168.1.3) from 192.168.1.114 : 56(84) bytes of data.From 192.168.1.114: Destination Host UnreachableFrom 192.168.1.114: Destination Host UnreachableFrom 192.168.1.114: Destination Host Unreachable

--- 192.168.1.3 ping statistics ---7 packets transmitted, 0 packets received, +6 errors, 100% packet loss

El resultado de este comando nos demuestra que el equipo remoto no ha podido ser alcanzado, esto puede ser por varias razones:

• El equipo remoto está apagado.

• El equipo remoto no tiene conectividad a la red por un problema de cable de red oadaptador de red.

• El equipo no tiene conectividad a la red por un error en la configuración TCP/IP.

• El equipo local no tiene la ruta para llegar al equipo remoto.

• El equipo local tiene problemas de red, pruebe hacer ping a otro equipo de la redque con seguridad está encendido y funcionando.

• El equipo local o remoto está protegido por un firewall.

Obteniendo información sobre interfaces

El comando ifconfig puede ser utilizado para configurar y mostrar información delos adaptadores de red del sistema. La configurar adaptadores de red con el comandoifconfig sólo puede ser realizada por el usuario root, sin embargo podemos utilizar 

el comando para obtener información útil.

El comando ifconfig acepta como argumento el nombre del dispositivo de red, siutilizamos la opción -a, se mostrará información de todos los adaptadores en elsistema:

$ /sbin/ifconfig -aeth0 Link encap:Ethernet HWaddr 00:50:BF:16:14:83

inet addr:192.168.1.114 Bcast:192.168.1.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 125/129

 

RX packets:4030418 errors:0 dropped:0 overruns:0 frame:0TX packets:4765994 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:100Interrupt:5 Base address:0xf000

lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:859960 errors:0 dropped:0 overruns:0 frame:0

TX packets:859960 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0

La interfaz lo (loopback) es una interfaz que siempre existirá y permite al computador comunicarse con sí mismo. Su dirección IP siempre es 127.0.0.1 y su máscara255.0.0.0.

Con el comando ifconfig usted puede determinar la dirección MAC del adaptador de red, la dirección IP, la máscara de sub red, si está activa la interfaz (UP), si haocurrido errores o si ha habido colisiones.

Puede saber si está correctamente conectada la interfaz a la red observando los

paquetes recibidos. En una red ethernet siempre existen paquetes viajando por la red,por lo tanto, al cabo de unos segundos, el contador de paquetes recibidos deberíaincrementar. Esto es un buen indicador de conectividad física.

Transfiriendo archivos a través de la red

El comando ftp es utilizado para transferir archivos de un sistema a otro. Paratransferir archivos primero debe iniciar una sesión en el equipo remoto:

$ ftp equipo.remoto.com 

$ ftp 192.168.1.1

Los comandos mas utilizados del ftp son:

•  put: Copia un archivo local en el equipo remoto utilizando el tipo actual detransferencia de archivos.

Sintaxis:

put archivo_local [archivo_remoto]

– archivo_local: Especifica el archivo local que se va a copiar.

– archivo_remoto: Especifica el nombre que se asignará al archivo en elequipo remoto. Si no se especifica este parámetro, el archivo adoptará elnombre del archivo_local.

 • get: Copia un archivo remoto en el equipo local utilizando el tipo actual de

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 126/129

 

transferencia de archivos.

Sintaxis:

get archivo_remoto [archivo_local]

– archivo_remoto: Especifica el archivo remoto que se va a copiar.

– archivo_local: Especifica el nombre que se asignará al archivo en el equipolocal. Si no se especifica este parámetro, el archivo adoptará el nombre delarchivo_remoto.

• ls, dir: Muestra una lista de todos los archivos y subdirectorios de un directorioremoto.

Sintaxis:

ls|dir [directorio_remoto] [archivo_local]

– directorio_remoto: Especifica el directorio cuyo contenido desea examinar.Si no se especifica ningún directorio, se utilizará el de trabajo actual del equiporemoto.

– archivo_local: Especifica un archivo local en el cual se guardará la lista delcontenido del directorio. Si no se especifica este parámetro, el resultadoaparecerá en pantalla.

• cd: Cambia el directorio de trabajo en el equipo remoto.

 Sintaxis:

cd directorio_remoto

directorio_remoto: Especifica el directorio del equipo remoto al cual se deseacambiar.

• hash: Activa o desactiva la impresión del signo # para cada bloque de datostransferido. El tamaño de un bloque de datos es de 2048 bytes. De manerapredeterminada, no se imprime este signo.

•  binary: Establece el tipo de transferencia de archivos como binario.

Nota: FTP admite dos tipos de transferencia de archivos: ASCII e imagen binaria.Cuando se transfieran archivos ejecutables, deberá utilizarse el tipo binario. Enmodo binario, el archivo se transfiere byte a byte.

• ascii: Establece el tipo de transferencia de los archivos como ASCII, que es elvalor predeterminado.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 127/129

 

Nota: Cuando se transfieran archivos de texto deberá utilizarse el tipo ASCII. Enmodo ASCII las conversiones de caracteres al juego de caracteres estándar de lared, o desde éste, se realizan automáticamente. Por ejemplo, la conversión de loscaracteres de fin de línea se efectúa según los requisitos del sistema operativo dedestino.

•  prompt: Activa o desactiva la aparición de un mensaje de confirmación. FTP,durante una transferencia de varios archivos, requerirá confirmación paraseleccionar los archivos que va a recuperar o a almacenar. Los comandos mget omput transferirán todos los archivos. De forma predeterminada, esta opción estáactivada.

•  mget: Copia archivos remotos en el equipo local utilizando el tipo actual detransferencia de archivos

Sintaxis:

mget archivos_remotos [...]

archivos_remotos: Especifica los archivos remotos que se van a copiar en elequipo local.

•  mput: Copia archivos locales en el equipo remoto utilizando el tipo actual detransferencia de archivos.

Sintaxis:

mput archivos_locales [...]

archivos_locales: Especifica los archivos locales que se copiarán en el equiporemoto.

• lcd: Cambia de directorio local.

Sintaxis:

lcd directorio

• Ejecución del comandos localmente: Cualquier comando ftp que ejecute

precedido del signo de admiración, se ejecutará en el equipo local, por ejemplo,para mostrar el contenido del directorio local use:

!ls

Shell Seguro (ssh)

El comando ssh es un reemplazo seguro para los comandos rlogin, rsh, ytelnet. Le permite iniciar sesiones y ejecutar comandos en máquinas remotas. El

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 128/129

 

shell seguro permite que la comunicación entre el cliente y el servidor sea encriptada,a diferencia de los comandos anteriormente mencionados.

Iniciar una sesión en una máquina remota con ssh que es muy parecido a utilizar elcomando telnet. Para iniciar una sesión remota a una máquina llamadamercurio.linux.com.py, escriba el comando siguiente en el intérprete de comandos delshell:

$ ssh mercurio.linux.com.py

La primera vez que ejecute ssh a una máquina remota, verá un mensaje similar alsiguiente:

The authenticity of host 'mercurio.linux.com.py' can't be established.DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.

Are you sure you want to continue connecting (yes/no)? 

Escriba yes para continuar. Esto le permitirá agregar el servidor en su lista de host

conocidos como se muestra en el siguiente mensaje:

Warning: Permanently added 'mercurio.linux.com.py' (RSA) to the list of known hosts.

Luego, verá un indicador de comandos preguntándole por su contraseña. Después deingresar su contraseña, se encontrará en el indicador de comandos de la máquinaremota. Si no especifica un nombre de usuario, el nombre de usuario con el que se havalidado como la máquina local se validará en la máquina remota. Si quiereespecificar un nombre de usuario use el comando siguiente: $ ssh [email protected]

$ ssh -l nombre_usuario mercurio.linux.com.py

El comando ssh se puede utilizar para ejecutar un comando en una máquina remotasin acceder al indicador de comandos. La sintaxis es:

ssh usuario@host comando

Por ejemplo, si quiere ejecutar el comando ls /usr/share/doc en la máquinaremota penguin.example.net, escriba el comando siguiente en la línea de comandosdel shell:

$ ssh mercurio.linux.com.py ls /usr/share/doc

Una vez que introduzca la contraseña correcta, visualizará el contenido del directorio/usr/share/doc, y regresará al shell de su equipo local.

Usando el comando scp

El comando scp puede ser usado para transferir archivos entre máquinas sobre unaconexión encriptada y segura. Es parecido al comando rcp.

5/7/2018 Linux LE101 - Linux Enterprise Operacional v1-5 - slidepdf.com

http://slidepdf.com/reader/full/linux-le101-linux-enterprise-operacional-v1-5 129/129

 

La sintaxis general para transferir el archivo local a un sistema remoto es como siguea continuación:

$ scp archivo_local usuario@host:/ruta/

Siendo archivo_local el archivo origen local, y usuario@host:/ruta/ especificael destino.

Para transferir un archivo local shadowman a su home en mercurio.linux.com.py,escriba en la línea de comandos (reemplace username con su nombre de usuario):

$ scp shadowman mercurio.linux.com.py:/home/jperez/docs

Esto transferirá el archivo local shadowman a /home/jperez/docs/shadowman enmercurio.linux.com.py.

Para transferir un archivo remoto a un directorio local la sintaxis sería:

$ scp mercurio.linux.com.py:/home/jperez/docs/* ./

Este comando transferirá todos los archivos del directorio /home/jperez/docs demercurio al directorio actual en el equipo local.

La sintaxis general para transferir un archivo remoto al sistema local es como sigue:

$ scp [usuario@hostremoto|archivo_local] [usuario@host_remoto|archivo_local]

Uso del comando sftp

La utilidad sftp puede ser usada para abrir una sesión segura interactiva de FTP. Essimilar a ftp excepto que ésta utiliza una conexión encriptada segura. La sintaxisgeneral es sftp [email protected]. Una vez autentificado, podrá utilizar unconjunto de comandos similar al conjunto utilizado por el comando FTP.