You are on page 1of 69

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf.

212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Fundamentos de Linux.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo I COMPONENTES DEL SISTEMA OPERATIVO

Los componentes son:

KERNEL, SHELL, ESTRUCTURA DE ARCHIVOS, MULTI TAREAS, MULTI USUARIO.

Kernel:

El kernel ó núcleo de linux se puede definir como el corazón de este sistema operativo. Es el
encargado de que el software y el hardware de tu ordenador puedan trabajar juntos.

Las funciones más importantes del mismo, aunque no las únicas, son:

 Administración de la memoria para todos los programas y procesos en ejecución.


 Administración del tiempo de procesador que los programas y procesos en ejecución
utilizan.
 Es el encargado de que podamos acceder a los periféricos/elementos de nuestro
ordenador de una manera cómoda.

El Shell:

Es el intérprete de comandos de UNIX, el equivalente al COMMAND.COM de MSDOS. Es decir,


es el que coge todo lo que tecleamos y lo convierte en un programa que se ejecuta.

Para empezar, no hay un shell, sino muchos shells. El más simple es sh, o Bourne shell, que es
tan simple que prácticamente nadie utiliza, sin embargo, es el más común a todos los sistemas,
y además, ciertos programas lo usan, sobre todo los programas de instalación (precisamente
por eso, por ser el mínimo común denominador de los shells). Algunos shells se derivan de este,
como el bash (Bourne again shell, el oficial de la GNU), y el Korh shell, ksh.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Estructura de directorios (File System)

El sistema de archivos (File System) es una gran colección de directorios y archivos que guardan
todo tipo de información. En sistemas de muchos usuarios se pueden tener cientos o miles de
archivos. Para organizar y proteger todos estos archivos, en los sistemas UNIX, los archivos se
organizan en directorios que a la vez pueden contener además de archivos otros directorios
subdirectorios).

Los directorios en los sistemas UNIX están organizados conservando cierta jerarquía, como se
muestra en la siguiente figura esquemática:

/ (root)
|
__________________|___________________
| | | | | | |
bin dev etc lib tmp u usr
|
_________________|_____
| | | | | |
local bin lib tmp adm
|
_________|________
| | | |
bin lib src class

Todos los directorios están debajo del directorio root denotado por "/". Los
directorios usr y local están expandidos para así mostrar los subdirectorios. Ya que el
directorio root es la raíz de todos los directorios, para indicar el camino de un directorio
particular se utiliza la siguiente notación:
/usr /usr/lib usr/local/lib

El símbolo "/" utilizado al comienzo para indicar el directorio raíz no debe ser confundido con
las siguientes "/" que son utilizados para separar los nombres de los directorios.

Multi Tarea.

Es cuando un ordenador es capaz de realizar más de una tarea a la vez. Puede ser en paralelo (si
tiene más de un procesador) o concurrente (si sólo tiene uno).

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Multi Usuario.

Un SO multiusuario permite a más de un solo usuario accesar una computadora. Claro que,
para llevarse esto a cabo, el SO también debe ser capaz de efectuar multitareas. Unix es el
Sistema Operativo Multiusuario más utilizado. Debido a que Unix fue originalmente diseñado
para correr en una minicomputadora, era multiusuario y multitarea desde su concepción.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo II ACCESO AL SISTEMA

Login:

Control de acceso a un cierto sistema, normalmente basado en el nombre de usuario y una


contraseña (password).

Password.

Una contraseña o clave (en inglés password), es una forma de autenticación que
utiliza información secreta para controlar el acceso hacia algún recurso.

La consola Linux

Entrando al sistema

En un sistema Linux existen 6 seudo-terminales independientes. Se puede pasar de una a otra


presionando simultáneamente la tecla Ctrl+Alt con la tecla F1 - F6. Cada seudo-terminal
permite el ingreso al sistema en forma independiente a diferentes cuentas. El sistema multi-
usuario es una gran característica de los sistemas Unix y resulta muy adictiva.

En Unix se considera un buen hábito acceder al sistema como usuario normal para realizar la
mayoría de las tareas.

Ctrl-Alt-F1/ F6: Para cambiar a otra seudo-terminal


Ctrl-Alt-F7: Para volver a X-Window

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
/etc/passwd

El fichero de contraseñas es sin discusión el fichero más crítico en Linux (y en la mayoría de


otros Unix). Contiene el mapa de nombres de usuarios, identificaciones de usuarios y la ID del
grupo primario al que pertenece esa persona. También puede contener el fichero real, aunque
es más probable (y mucho más seguro) que utilice contraseñas con shadow para mantener las
contraseñas en /etc/shadow. Este fichero TIENE que ser legible por todo el mundo, o si no
comandos tan simples como ls dejarían de funcionar correctamente. El campo GECOS puede
contener datos tales como el nombre real, el número de teléfono y otro tipo de cosas parecidas
en cuanto al usuario, su directorio personal, que es el directorio en que se coloca al usuario por
defecto si hace un login interactivo, y el shell de login tiene que ser un shell interactivo (como
bash, o un programa de menús), y estar listado en /etc/shells para que el usuario pueda hacer
login. El formato es:

nombreusuario:contraseña_cifrada:UID:GID:campo_GECOS:direct_personal:login_shell

Las contraseñas se guardan utilizando un hash de un sólo sentido (el hash utilizado por defecto
es crypt, las distribuciones más nuevas soportan MD5, que es significativamente más robusto).
Las contraseñas no pueden obtenerse a partir de la forma cifrada, sin embargo, se puede tratar
de encontrar una contraseña utilizando fuerza bruta para pasar por el hash cadenas de texto y
compararlas, una vez que encuentres una que coincide, sabes que has conseguido la
contraseña. Esto no suele ser un problema por sí mismo, el problema surge cuando los usuarios
escogen claves que son fácilmente adivinables. Las encuestas más recientes han demostrado
que el 25% de las contraseñas se pueden romper en menos de una hora, y lo que es peor es
que el 4% de los usuarios utilizan su propio nombre como contraseña. Los campos en blanco en
el campo de la contraseña se quedan vacíos, así que se vería "::", lo cual es algo crítico para los
cuatro primeros campos (nombre, contraseña, uid y gid).

/etc/shadow

El fichero de shadow alberga pares de nombres de usuario y contraseñas, así como información
contable, como la fecha de expiración, y otros campos especiales. Este fichero debería
protegerse a toda costa, y sólo el root debería tener acceso de lectura a él.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
/etc/groups

El fichero de grupos contiene toda la información de pertenencia a grupos, y opcionalmente


elementos como la contraseña del grupo (generalmente almacenado en gshadow en los
sistemas actuales), este fichero debe ser legible por el mundo para que el sistema funcione
correctamente. El formato es:

nombregrupo:contraseña_cifrada:GID:miembro1,miembro2,miembro3

Un grupo puede no contener miembros (p. ej., no está usado), sólo un miembro o múltiples
miembros, y la contraseña es opcional (y no se suele usar).

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo III ADMINISTRACIÓN DE USUARIOS

Tipos de usuarios
Los usuarios en Unix/Linux se identifican por un número único de usuario, User ID, UID. Y
pertenecen a un grupo principal de usuario, identificado también por un número único de
grupo, Group ID, GID. El usuario puede pertenecer a más grupos además del principal.
Aunque sujeto a cierta polémica, es posible identificar tres tipos de usuarios en Linux:

Usuario root

 También llamado super usuario o administrador.


 Su UID (User ID) es 0 (cero).
 Es la única cuenta de usuario con privilegios sobre todo el sistema.
 Acceso total a todos los archivos y directorios con independencia de
propietarios y permisos.
 Controla la administración de cuentas de usuarios.
 Ejecuta tareas de mantenimiento del sistema.
 Puede detener el sistema.
 Instala software en el sistema.
 Puede modificar o reconfigurar el kernel, controladores, etc.
Usuarios especiales

 Ejemplos: bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache,
etc.
 Se les llama también cuentas del sistema.
 No tiene todos los privilegios del usuario root, pero dependiendo de la cuenta
asumen distintos privilegios de root.
 Lo anterior para proteger al sistema de posibles formas de vulnerar la
seguridad.
 No tienen contraseñas pues son cuentas que no están diseñadas para iniciar
sesiones con ellas.
 También se les conoce como cuentas de "no inicio de sesión" (nologin).
 Se crean (generalmente) automáticamente al momento de la instalación de
Linux o de la aplicación.
 Generalmente se les asigna un UID entre 1 y 100 (definifo en /etc/login.defs)

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Usuarios normales

 Se usan para usuarios individuales.


 Cada usuario dispone de un directorio de trabajo, ubicado generalmente en
/home.
 Cada usuario puede personalizar su entorno de trabajo.
 Tienen solo privilegios completos en su directorio de trabajo o HOME.
 Por seguridad, es siempre mejor trabajar como un usuario normal en vez del
usuario root, y cuando se requiera hacer uso de comandos solo de root, utilizar el
comando su.
 En las distros actuales de Linux se les asigna generalmente un UID superior a
500.

/etc/passwd

Cualquiera que sea el tipo de usuario, todas las cuentas se encuentran definidas en el archivo
de configuración 'passwd', ubicado dentro del directorio /etc. Este archivo es de texto tipo
ASCII, se crea al momento de la instalación con el usuario root y las cuentas especiales, más las
cuentas de usuarios normales que se hayan indicado al momento de la instalación.

El archivo /etc/passwd contiene una línea para cada usuario, similar a las siguientes:

root:x:0:0:root:/root:/bin/bash
sergio:x:501:500:Sergio González:/home/sergio:/bin/bash

La información de cada usuario está dividida en 7 campos delimitados cada uno por ':' dos
puntos.

/etc/passwd

Campo 1 Es el nombre del usuario, identificador de inicio de sesión (login). Tiene que ser único.

La 'x' indica la contraseña encriptada del usuario, además también indica que se está
Campo 2 haciendo uso del archivo /etc/shadow, si no se hace uso de este archivo, este campo
se vería algo así como: 'ghy675gjuXCc12r5gt78uuu6R'.

Campo 3 Número de identificación del usuario (UID). Tiene que ser único. 0 para root,
generalmente las cuentas o usuarios especiales se numeran del 1 al 100 y las de
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
usuario normal del 101 en delante, en las distribuciones mas recientes esta
numeración comienza a partir del 500.

Numeración de identificación del grupo (GID). El que aparece es el número de grupo


Campo 4 principal del usuario, pero puede pertenecer a otros, esto se configura
en /etc/groups.

Campo 5 Comentarios o el nombre completo del usuario.

Campo 6 Directorio de trabajo (Home) donde se sitúa al usuario después del inicio de sesión.

Campo 7 Shell que va a utilizar el usuario de forma predeterminada.

/etc/shadow

Anteriormente (en sistemas Unix) las contraseñas cifradas se almacenaban en el


mismo /etc/passwd. El problema es que 'passwd' es un archivo que puede ser leído por
cualquier usuario del sistema, aunque solo puede ser modificado por root. Con cualquier
computadora potente de hoy en día, un buen programa de descifrado de contraseñas y
paciencia es posible "crackear" contraseñas débiles (por eso la conveniencia de cambiar
periódicamente la contraseña de root y de otras cuentas importantes). El archivo 'shadow',
resuelve el problema ya que solo puede ser leído por root. Considérese a 'shadow' como una
extensión de 'passwd' ya que no solo almacena la contraseña encriptada, sino que tiene otros
campos de control de contraseñas.

El archivo /etc/shadow contiene una línea para cada usuario, similar a las siguientes:

root:ghy675gjuXCc12r5gt78uuu6R:10568:0:99999:7:7:-1::
sergio:rfgf886DG778sDFFDRRu78asd:10568:0:-1:9:-1:-1::

La información de cada usuario está dividida en 9 campos delimitados cada uno por ':' dos
puntos.
/etc/shadow

Campo 1 Nombre de la cuenta del usuario.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Campo 2 Contraseña cifrada o encriptada, un '*' indica cuenta de 'nologin'.

Días transcurridos desde el 1/ene/1970 hasta la fecha en que la contraseña fue


Campo 3
cambiada por última vez.

Número de días que deben transcurrir hasta que la contraseña se pueda volver a
Campo 4
cambiar.

Número de días tras los cuales hay que cambiar la contraseña. (-1 significa nunca). A
Campo 5
partir de este dato se obtiene la fecha de expiración de la contraseña.

Número de días antes de la expiración de la contraseña en que se le avisará al usuario


Campo 6
al inicio de la sesión.

Días después de la expiración en que la contraseña se inhabilitara, si es que no se


Campo 7
cambio.

Fecha de caducidad de la cuenta. Se expresa en días transcurridos desde el


Campo 8
1/Enero/1970 (epoch).

Campo 9 Reservado.

/etc/group

Este archivo guarda la relación de los grupos a los que pertenecen los usuarios del sistema,
contiene una línea para cada usuario con tres o cuatro campos por usuario:

root:x:0:root
ana:x:501:
sergio:x:502:ventas,supervisores,produccion
cristina:x:503:ventas,sergio

 El campo 1 indica el usuario.


 El campo 2 'x' indica la contraseña del grupo, que no existe, si hubiera se mostraría un
'hash' encriptado.
 El campo 3 es el Group ID (GID) o identificación del grupo.
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
 El campo 4 es opcional e indica la lista de grupos a los que pertenece el usuario
Actualmente al crear al usuario con useradd se crea también automáticamente su grupo
principal de trabajo GID, con el mismo nombre del usuario. Es decir, si se añade el usuario
'sergio' también se crea el /etc/group el grupo 'sergio'. Aun así, existen comandos de
administración de grupos que se explicarán más adelante.

Añadir usuarios con useradd

useradd o adduser es el comando que permite añadir nuevos usuarios al sistema desde la línea
de comandos. Sus opciones más comunes o importantes son las siguientes:

 -c añade un comentario al momento de crear al usuario, campo 5 de /etc/passwd


 -d directorio de trabajo o home del usuario, campo 6 de /etc/passwd
 -e fecha de expiración de la cuenta, formato AAAA-MM-DD, campo 8 de /etc/shadow
 -g número de grupo principal del usuario (GID), campo 4 de /etc/passwd
 -G otros grupos a los que puede pertenecer el usuario, separados por comas.
 -r crea una cuenta del sistema o especial, su UID será menor al definido
en /etc/login.defs en la variable UID_MIN, además no se crea el directorio de inicio.
 -s shell por defecto del usuario cuando ingrese al sistema. Si no se especifica, bash, es
el que queda establecido.
 -u UID del usuario, si no se indica esta opción, automáticamente se establece el
siguiente número disponible a partir del último usuario creado.

Ahora bien, realmente no hay prácticamente necesidad de indicar ninguna opción ya que si
hacemos lo siguiente:

#> useradd juan

Se creará el usuario y su grupo, así como las entradas correspondientes en /etc/passwd,


/etc/shadow y /etc/group. También se creará el directorio de inicio o de trabajo: /home/juan y
los archivos de configuración que van dentro de este directorio y que más adelante se detallan.
Las fechas de expiración de contraseña, etc. Quedan lo más amplias posibles así que no hay
problema que la cuenta caduque, así que prácticamente lo único que faltaría sería añadir la
contraseña del usuario y algún comentario o identificación de la cuenta. Como añadir el
password o contraseña se estudiara en un momento y viendo las opciones con '-c' es posible
establecer el comentario, campo 5 de /etc/passwd:
#> useradd -c "Juan Perez Hernandez" juan

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Siempre el nombre del usuario es el último parámetro del comando. Así por ejemplo, si
queremos salirnos del default, podemos establecer algo como lo siguiente:

#> useradd -d /usr/juan -s /bin/csh -u 800 -c "Juan Perez Hernandez" juan

Con lo anterior estamos cambiando su directorio de inicio, su shell por defautl será csh y su UID
será el 800 en vez de que el sistema tome el siguiente número disponible.

Modificar usuarios con usermod

Como su nombre lo indica, usermod permite modificar o actualizar un usuario o cuenta ya


existente. Sus opciones más comunes o importantes son las siguientes:
 -c añade o modifica el comentario, campo 5 de /etc/passwd
 -d modifica el directorio de trabajo o home del usuario, campo 6 de /etc/passwd
 -e cambia o establece la fecha de expiración de la cuenta, formato AAAA-MM-DD,
campo 8 de /etc/shadow
 -g cambia el número de grupo principal del usuario (GID), campo 4 de /etc/passwd
 -G establece otros grupos a los que puede pertenecer el usuario, separados por comas.
 -l cambia el login o nombre del usuario, campo 1 de /etc/passwd y de /etc/shadow
 -L bloque la cuenta del usuario, no permitiéndole que ingrese al sistema. No borra ni
cambia nada del usuario, solo lo deshabilita.
 -s cambia el shell por defecto del usuario cuando ingrese al sistema.
 -u cambia el UID del usuario.
 -U desbloquea una cuenta previamente bloqueada con la opción -L.
Si quisiéramos cambiar el nombre de usuario de 'sergio' a 'sego':

#> usermod -l sego sergio

Casi seguro también cambiará el nombre del directorio de inicio o HOME en /home, pero si no
fuera así, entonces:

#> usermod -d /home/sego sego

Otros cambios o modificaciones en la misma cuenta:

#> usermod -c "supervisor de area" -s /bin/ksh -g 505 sego

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Lo anterior modifica el comentario de la cuenta, su shell por defecto que ahora será Korn shell y
su grupo principal de usuario quedó establecido al GID 505 y todo esto se aplicó al usuario
'sego' que como se observa debe ser el último argumento del comando.

El usuario 'sego' salió de vacaciones y nos aseguramos de que nadie use su cuenta:

#> usermod -L sego


Eliminar usuarios con userdel

Como su nombre lo indica, userdel elimina una cuenta del sistema, userdel puede ser invocado
de tres maneras:

#> userdel sergio

Sin opciones elimina la cuenta del usuario de /etc/passwd y de /etc/shadow, pero no elimina su
directorio de trabajo ni archivos contenidos en el mismo, esta es la mejor opción, ya que
elimina la cuenta pero no la información de la misma.

#> userdel -r sergio

Al igual que lo anterior elimina la cuenta totalmente, pero con la opción -r además elimina su
directorio de trabajo y archivos y directorios contenidos en el mismo, asi como su buzón de
correo, si es que estuvieran configuradas las opciones de correo. La cuenta no se podrá eliminar
si el usuario esta logueado o en el sistema al momento de ejecutar el comando.

#> userdel -f sergio

La opción -f es igual que la opción -r, elimina todo lo del usuario, cuenta, directorios y archivos
del usuario, pero además lo hace sin importar si el usuario está actualmente en el sistema
trabajando. Es una opción muy radical, además de que podría causar inestabilidad en el
sistema, así que hay que usarla solo en casos muy extremos.

Cambiar contraseñas con passwd

Crear al usuario con useradd es el primer paso, el segundo es asignarle una contraseña a ese
usuario. Esto se logra con el comando passwd que permitirá ingresar la contraseña y su
verificación:

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
#> passwd sergio
Changing password for user prueba.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
#>

El usuario root es el único que puede indicar el cambio o asignación de contraseñas de


cualquier usuario. Usuarios normales pueden cambiar su contraseña en cualquier momento con
tan solo invocar passwd sin argumentos, y podrá de esta manera cambiar la contraseña cuantas
veces lo requiera.

passwd tiene integrado validación de contraseñas comunes, cortas, de diccionario, etc. así que
si por ejemplo intento como usuario normal cambiar mi contraseña a 'qwerty' el sistema me
mostrará lo siguiente:

$> passwd
Changing password for user prueba.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
$>

Nótese que al ingresar 'qwerty' como contraseña se detectó que es una secuencia ya conocida
como contraseña y me manda la advertencia: "BAD PASSWORD: it is based on a dictionary
word", sin embargo me permite continuar, al ingresar la verificación. Es decir, passwd avisa de
malas o débiles contraseñas pero permite establecerlas si realmente se desea.

Resumiendo entonces, se podría decir que todo este tutorial se reduce a dos líneas de
comandos para crear y dejar listo para trabajar a un usuario en Linux:

#> useradd ana


#> passwd ana

Se crea el usuario 'ana', useradd hace todo el trabajo de establecer el shell, directorio de inicio,
copiar archivos iniciales de configuración de la cuenta, etc. y después passwd establece la
contraseña. Así de simple.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
passwd tiene varias opciones que permiten bloquear la cuenta '-l', desbloquearla '-u', y varias
opciones más que controlan la vigencia de la contraseña, es decir, es otro modo de establecer
los valores de la cuenta en/etc/shadow. Para más información consulta las páginas del manual:

$> man passwd

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo IV ADMINISTRANDO ARCHIVOS Y DIRECTORIOS (CMD)

Uso de los comandos de archivo


Cada uno de los comandos que se presentan en esta sección incluye un ejemplo de su uso.
Realice los ejemplos según vaya leyendo el texto. Esta práctica hará que los comandos y sus
respectivos conceptos sean más fáciles de entender y recordar.

Antes de comenzar
Antes de que empiece a experimentar con archivos, asegúrese de que está en su directorio de
usuario. Este es un directorio que le estableció su administra-dor de sistemas cuando creó su
autorización de acceso. Si ejecuta las tareas que se muestran en los siguientes ejemplos desde
su directorio de usuario, le será más difícil crear, copiar, mover o (lo peor de todo) eliminar
archivos de partes del sistema que otros usuarios esperan que permanezcan inalteradas.

Para cerciorarse de que se encuentra en su directorio de usuario, escriba sola-mente el


comando cd (abreviatura de change directory). Esto le llevará a su directorio de usuario
(predeterminado). Después escriba el comando pwd (print working directory) para mostrar su
posición actual dentro del sistema de archivos. El directorio que aparezca será su directorio de
usuario.

$ cd
$ pwd
/export/home/nombre_del_usuario

En este ejemplo, el directorio de usuario es /export/home/nombre_del_usua-rio, en


donde nombre_del_usuario es el nombre del usuario al que pertenece el directorio de usuario.

Crear un archivo de prueba


Utilice el comando touch para crear un archivo vacío. Si no existe un archivo con el nombre que
haya especificado, el comando touch creará un archivo vacío (si dicho archivo ya
existe, touch actualizará la hora del último acceso al archivo).

$ touch archivoprueba
$

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Listar archivos (ls)
Ahora liste el archivo con el comando ls para verificar que lo ha creado:

$ ls archivoprueba
tempfile

Si introduce el comando ls solamente, éste listará todos los archivos situados en su posición
actual. Si introduce el comando ls con un nombre de archivo determinado, listará sólo dicho
archivo, si es que existe.

Copiar archivos (cp)


Utilice el comando cp para copiar tempfile en un archivo llamado copyfi-le:

$ cp tempfile copyfile
$

Ahora intente listar ambos archivos. Observe que los dos nombres acaban con los caracteres
"file". Puede utilizar el carácter comodín (*), para sustituir a cualquier carácter o secuencia de
caracteres. Por lo tanto, el comando ls *file debe listar tanto tempfile como copyfile (y
cualquier archivo de ese directorio cuyo nombre termine en file):

$ ls *file
copyfile tempfile

Observe que copyfile se lista primero. Los archivos se listan por orden alfa-bético, (las letras
mayúsculas y los números preceden a las letras minúsculas).

Mover y renombrar archivos (mv)


Puede mover y renombrar archivos utilizando el mismo comando: mv (move). En este ejemplo,
use el comando mv para renombrar tempfile como emptyfile:

$ mv tempfile emptyfile
$

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Ahora liste de nuevo ambos archivos para verificar el cambio:

$ ls *file
copyfile emptyfile

Como ve, tempfile ha sido reemplazado por emptyfile.

Eliminar archivos (rm)


Finalmente, use el comando rm (remove) para eliminar copyfile y comprue-be el resultado con
el comando ls:

$ rm copyfile
$ ls *file
emptyfile

Atención- Una vez que elimine un archivo, éste desaparecerá para siempre. A no ser que exista una
copia de seguridad, no podrá restablecer el archivo. Tenga cuidado al usar el comando rm, y una especial
precaución si lo usa junto al carácter comodín (*). Los archivos eliminados con rm no podrán recuperar

Mostrar el contenido del archivo (more, cat)


Use el comando more para mostrar el contenido de un archivo. Escriba more seguido del
nombre del archivo que se va a mostrar. El contenido del archivo se desplazará hacia abajo en
la pantalla. Si el archivo es más largo que una pantalla, aparecerá el siguiente mensaje:

--More--(nn%) [Press space to continue, 'q' to quit.]

donde nn es el porcentaje de archivo ya mostrado.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
También puede usar el comando cat para mostrar el contenido de un archivo, pero éste
muestra de una vez el archivo completo sin pararse. El comando cat (concatenate) se usa más
frecuentemente para unir dos o más archivos y formar otro más grande, como se ve en el
ejemplo siguiente:

$ cat file1 file2 file3 > bigfile


$ ls *file
bigfile
file1
file2
file3
$

Mostrar el tipo de archivo (file)


Algunos archivos como los binarios o los ejecutables no se pueden imprimir ni mostrar en
pantalla. El comando file puede resultarle útil si no está seguro del tipo de archivo.

Use el comando file para mostrar el tipo de archivo:

$ file copyfile
copyfile: ascii text

Directorios y jerarquía
Hasta ahora ha aprendido a listar, copiar, renombrar y eliminar archivos. Sin embargo, se estará
preguntando acerca de aspectos más complicados, como por ejemplo ¿dónde están situados
dichos archivos? Esta sección explica la jerarquía del directorio. Lea con atención el siguiente
texto, y después realice los ejemplos de las secciones siguientes.

Jerarquía de directorio
Los archivos se agrupan en directorios, que a su vez se organizan en una jerarquía. En la cima de
la jerarquía está el directorio "raíz", representado por "/".

Como se muestra en el ejemplo, cada directorio del sistema de archivos puede incluir muchos
otros directorios. La convención consiste en distinguir niveles de directorio mediante el

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
carácter /. Teniendo esto en cuenta, observe que el directorio/ (raíz) contiene entre otros los
subdirectorios /usr, /bin, /home y /lib. El subdirectorio /home contiene user1, user2, y user3.

Los directorios (y los archivos que hay en su interior) se especifican incluyendo el nombre de los
directorios en los que están. A esto se le llama nombre de ruta. de acceso. Por ejemplo, el
nombre de la ruta de acceso del directorio user3 de la próxima ilustración es /home/user3.

Todos los subdirectorios y nombres de archivo que incluya un directorio deben ser únicos. Sin
embargo, los nombres pertenecientes a directorios diferentes pueden ser iguales. Por ejemplo,
el directorio /usr contiene el subdirectorio /usr/lib. No hay ningún conflicto
entre /usr/lib y /lib porque los nombres de ruta de acceso son diferentes.

Los nombres de ruta de acceso de los archivos trabajan exactamente igual que los nombres de
ruta de acceso de los directorios. El nombre de ruta de acceso de un archivo describe su
posición dentro de la jerarquía del sistema de archivos. Por ejemplo, si el
directorio /home/user2 contiene un archivo llamado report5, su nombre de ruta de acceso
será /home/user2/report5. Esto indica que el archivo report5 está dentro del directorio user2,
que a su vez está incluido en el directorio home, que se encuentra en el directorio raíz (/).

Los directorios pueden contener sólo directorios, sólo archivos, o ambos.

Imprimir el directorio en uso (pwd)


El comando pwd (print working directory) le indica donde se encuentra dentro de la jerarquía
del sistema de archivos:

$ pwd
/home/user1

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
El resultado que obtenga será algo diferente al del ejemplo, ya que la estructura de su
directorio es diferente. Recuerde que el directorio en uso es su posición actual dentro de la
jerarquía del sistema de archivos.

Su directorio de usuario
Cada usuario tiene un directorio de usuario. Cuando abre por primera vez la ventana de la
Herramienta de comandos o la Herramienta del shell en el entorno OpenWindows, su posición
inicial (directorio en uso) es su directorio de usuario. Dicho directorio lo estableció su
administrador de sistemas cuando creó su cuenta de acceso.

Cambiar el directorio en uso (cd)


El comando cd (change directory) le permite moverse dentro de la jerarquía del sistema de
archivos:

$ cd /usr/lib
$ pwd
/usr/lib

Si escribe el comando cd solamente, vuelve a su directorio de usuario. Por ejemplo, si su


directorio de usuario era /home/user1:

$ cd
$ pwd
/home/user1

En el shell C, el signo tilde (~) se usa como un método abreviado para especificar su directorio
de usuario. Por ejemplo, para cambiar el subdirectorio music debería escribir lo siguiente
dentro de su directorio de usuario

example% cd ~/music

También puede usar dicho método abreviado para especificar el directorio de usuario de otro
usuario. Por ejemplo:

example% cd ~nombre_del_usuario

Donde nombre_del_usuario es el nombre de entrada de otro usuario, y cambiaría al directorio


de usuario de dicho usuario.
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Nota - Si está utilizando el shell Bourne, el método abreviado ~ no funcionará.

Si está usando el shell Bourne, es posible que su administrador de sistemas lo haya configurado
para que Vd. pueda escribir $home para especificar su directorio de usuario. Si éste es el caso
escriba:

$ $home/music

Esto le trasladará al subdirectorio music de su directorio de usuario. Del mismo modo, si


escribe:

$ $homenombre_del_usuario

Se trasladará al directorio de usuario del usuario que haya especificado,


donde username representa el nombre de entrada del otro usuario.

El directorio situado justo "por encima" de un subdirectorio se denomina directorio maestro.


En el ejemplo anterior, /home es el directorio maestro de /ho-me/user1. El símbolo.. ("punto,
punto") representa el directorio maestro. Por lo tanto, el comando cd .. Cambia el directorio en
uso al directorio maestro, como muestra este ejemplo:

$ pwd
/home/user1
$ cd ..
$ pwd
/home

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Suponga que su directorio en uso actual es /home/user1 y desea trabajar con varios archivos
en /home/user2. El siguiente método abreviado podrá serle útil:

$ pwd
/home/user1
$ cd ../user2
$ pwd
/home/user2

../user2 ordena al sistema buscar user2 en el directorio maestro. Como puede observar, esto
resulta más sencillo que escribir el nombre de ruta de ac-ceso /home/user2 entero.

Crear un directorio (mkdir)


Crear un directorio nuevo es fácil. Escriba el comando mkdir seguido del nombre del nuevo
directorio:

$ mkdir veggies
$ cd veggies
$ mkdir broccoli
$ cd broccoli
$ pwd
/home/user2/veggies/broccoli

Nombres de ruta de acceso relativos


El nombre de ruta de acceso completo de un directorio o de un archivo comienza por un signo
(/) y describe toda la estructura del directorio comprendida entre dicho archivo (o directorio) y
el directorio raíz. Sin embargo, a menudo puede usar un nombre mucho más corto que define
el archivo o directorio en relación con el directorio actual en uso.

Cuando se encuentre en el directorio maestro, puede desplazarse a un subdirectorio utilizando


sólo el nombre del directorio y no el nombre de ruta de ac-ceso completo. En el ejemplo
anterior, el comando cd veggies usa el nombre de ruta de acceso relativo del directorio veggies.
Si el directorio en uso actual es /home/user2, el nombre de ruta de acceso completo de este
directorio es /home/user2/veggies.

Intente crear varios subdirectorios diferentes y después muévase por ellos dentro de la
estructura del directorio. Use los nombres de ruta de acceso completos y los nombres de ruta
de acceso relativos y confirme su posición con el coman-do pwd.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Mover y renombrar directorios
Un directorio se renombra moviéndolo a un nombre diferente. Use el comando mv para
renombrar archivos:

$ pwd
/home/user2/veggies
$ ls
broccoli
$ mv broccoli carrots
$ ls
carrots

También puede usar mv para mover un directorio a una posición de otro directorio:

$ pwd
/home/user2/veggies
$ ls
carrots
$ mv carrots ../veggies2
$ ls ../veggies2
carrots

En este ejemplo, el directorio carrots se mueve de veggies a veggies2 con el comando mv.

Copiar directorios
Use el comando cp -r para copiar directorios y los archivos que contengan:

$ cp -r veggies veggies3
$

Este comando copia todos los archivos y directorios dentro del directorio veggies en un nuevo
directorio veggies3. Esta es una copia recursiva, como de-signa la opción -r. Si intenta copiar un
directorio sin usar esta opción, aparecerá un mensaje de error.

Eliminar directorios (rmdir)


Para eliminar un directorio vacío utilice el comando rmdir como sigue:

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
$ rmdir veggies3
$

Si el directorio contiene todavía archivos o subdirectorios, el comando rmdir no lo eliminará.

Use rm -r (agregando la opción recursiva -r al comando rm) para eliminar un directorio y su


contenido, incluyendo cualquier subdirectorio y sus archivos, del modo siguiente:

$ rm -r veggies3
$

Atención- Los directorios eliminados con el comando rmdir no pueden reco-


brarse, igual que sucede con los directorios y su contenido eliminados con el
comando rm -r.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo V HERRAMIENTAS DE BUSQUEDAS (FIND GREP)

Buscar archivos (find)


El comando find busca archivos que cumplan las condiciones que Vd. especifique, comenzando
por el directorio que nombre. Por ejemplo, si quiere buscar nombres de archivos que
concuerden con determinado patrón o que hayan sido modificados durante un periodo de
tiempo determinado.

Al contrario que la mayoría de los comandos, las opciones de find tienen una longitud de varios
caracteres, y el nombre del directorio inicial debe ir antes que éstos en la línea de comando,
como se indica a continuación:

$ find directorio opciones

donde directorio es el nombre del directorio inicial y opciones representa las opciones del
comando find.

Cada opción describe un criterio de selección de archivos. Un archivo debe cumplir todos los
criterios para ser seleccionado. De este modo, cuántas más opciones aplique, más limitado será
el campo. La opción -print indica que Vd. desea que se muestre el resultado, (como se
describirá más adelante, puede utilizar find para ejecutar comandos; en ese caso, deberá
ordenarle a find que omita la visualización de los archivos seleccionados).

La opción -name nombre_de_archivo le indica a find que seleccione archivos que concuerden
con nombre_de_archivo. Aquí, nombre_de_archivo se considera como el componente situado
más a la derecha del nombre de ruta de acceso completo de un archivo. Por ejemplo, el
componente situado más a la derecha de /usr/lib/calendar sería calendar. A esta parte del
nombre de un ar-chivo se la denomina a menudo nombre base.

Por ejemplo, para ver que archivos del directorio en uso y sus subdirectorios terminan en s,
escriba:

$ find . -name '*s' -print


./programs
./programs/graphics
./programs/graphics/gks
./src/gks
$

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Otras opciones incluyen:

-name nombre_de_archivo

Selecciona archivos cuyo elemento situado más a la derecha concuerda


con nombre_de_archivo. Escriba nombre_de_archivo entre comillas si éste incluye patrones de
sustitución de nombre de archivo.

-user id_usuario

Selecciona archivos pertenecientes a id_usuario. id_usuario pude ser un nombre de entrada o


un número de identificación de usuario.

-group grupo

Selecciona archivos pertenecientes a group.

-m time n

Selecciona archivos que han sido modificados hace n días.

-newer checkfile

Selecciona archivos que han sido modificados más recientemente que checkfi-le.

Puede especificar un orden de preferencia, combinando opciones entre paréntesis (precedidos


por una barra inclinada), (por ejemplo,\(options\) ). Dentro de este tipo de paréntesis se puede
usar el indicador -o entre las opciones para indicar que find seleccione los archivos que
cumplan esta categoría, en vez de aquellos que cumplan ambas.:

$ find . \( -name AAA -o -name BBB \) -print


./AAA
./BBB

Puede invertir el sentido de una opción situando delante de ella un signo de admiración
precedido por una barra inclinada. Entonces, find seleccionará archivos a los que no afecte
dicha opción:

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
$ find . \!-name BBB -print
./AAA

También puede usar find para aplicar comandos a los archivos que éste seleccione con la
opción:

-exec command '{}' \;

Dicha opción termina con un punto y coma precedido por una barra inclinada (\;). Las llaves
entre comillas se reemplazan por los nombres de archivo que find selecciona.

Como ejemplo, puede usar find para eliminar automáticamente archivos de trabajo temporales.
Si nombra coherentemente sus archivos temporales, puede utilizar find para buscarlos y
destruirlos siempre que le estorben. Por ejemplo, si llama a sus archivos
temporales junk o dummy, el comando los encontrará y eliminará

$ find . \( -name junk -o -name dummy \) -exec rm '{}' \;

grep
El comando grep (Global Regular Expression and Print) permite buscar las líneas que contienen
una cadena de caracteres especificada mediante una expresión regular. Lee la entrada estándar
o una lista de archivos y muestra en la salida sólo aquellas líneas que contienen la expresión
indicada. La sintaxis es

grep patrón archivos

Donde el patrón a buscar es una expresión regular.

Crear un archivo con los días de la semana, uno por línea; llamarle días.

grep martes días

grep tes días

Muestra las líneas del archivo días que contienen la cadena "tes".

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
grep unix01 /etc/passwd

grep unix0[1-9] /etc/passwd

ls -l /usr | grep '^d'

Lista sólo los subdirectorios del directorio /usr (la línea empieza con "d").

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo VI ADMINISTRACION DE LOS PERMISOS EN ARCHIVOS Y DIRECTORIOS
Seguridad de archivos y directorios

Nota - Lea esta sección atentamente. Un buen entendimiento de los permisos de archivo es
siempre importante para el trabajo cotidiano.

Los permisos de archivo protegen a los archivos y los directorios para que no se puedan leer ni
escribir sin autorización. A menudo tendrá archivos que quiera que otras personas puedan leer
pero no cambiar. En otras ocasiones, deberá compartir archivos ejecutables (programas). Los
permisos de archivo le permiten controlar el acceso a sus archivos.

Estos son los tipos básicos de acceso de archivos y directorios:

 r - permiso de lectura. Un archivo debe poderse leer si se quiere examinar o copiar.


Un directorio debe poderse leer si se quiere listar su contenido.
 w - permiso de escritura. Un archivo debe poder escribirse si desea modificarlo,
eliminarlo o renombrarlo. Un directorio debe poder escribirse para agregar o
eliminar archivos en él.
 x - permiso de ejecución. Un archivo con permisos ejecutables es aquel que Vd.
puede procesar, como por ejemplo un programa. Un directorio debe ser ejecutable
si quiere tener acceso a cualquiera de sus subdirectorios.

Existen tres categorías de usuarios para los que puede establecer permisos:

 Uno mismo - El usuario

 Grupo - Otros usuarios pertenecientes al mismo grupo del usuario (por ejemplo,
todos los usuarios con cuenta de acceso). Los grupos los establece y mantiene su
administrador de sistemas.
 Otros - Todos los demás

Mostrar permisos y estado (ls -l)


Ya ha utilizado el comando ls para listar archivos. El comando ls dispone de muchas opciones.
Use la opción -l para mostrar una lista con formato largo. Los archivos y directorios se listan por
orden alfabético. La Ilustración 3-2 ejemplifica este método para mostrar archivos:

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Illustración 3-2Mostrar permisos y estado

El primer carácter de la línea indica el tipo de archivo. Un guión (-) es un archivo corriente;
una d indica un directorio, y otros caracteres pueden indicar ti-pos de archivos especiales.

Los nueve caracteres siguientes indican los permisos del archivo o el directorio. Dichos
caracteres están formados por tres grupos de tres elementos, que indican los permisos del
propietario del archivo, del grupo de dicho propietario y del mundo respectivamente. Los
permisos para emptyfile son rw-r--r--, que indican que el propietario del archivo puede leerlo y
escribir en él, que to-dos pueden leerlo y nadie puede ejecutarlo. Los permisos del
directorio veg-gies2 son rwxr-xr-x, que indican que todos tienen permiso para leerlo y
ejecutarlo, pero que sólo su dueño puede escribir en él.

Además de los permisos de archivo, la pantalla muestra la siguiente información:

 El número de enlaces con dicho archivo o directorio.


 El nombre del propietario (user2 en este caso).
 El número de bytes (caracteres) del archivo.
 Fecha y hora en la que el archivo o el directorio fue actualizado la última vez.
 Nombre del archivo o directorio.

Use el comando cd para desplazarse a su directorio de usuario y pruebe el co-mando ls -l. Por
supuesto, el resultado que obtenga será diferente al del ejemplo.
Ahora intente escribir un comando como este:

$ ls -l nombre_de_directorio

donde nombre_de_directorio es el nombre de un directorio existente en su sistema de


archivos. Cuando le pone nombre a un directorio, el comando ls -l imprime información relativa
a todos los archivos y directorios (si los hay) de dicho directorio.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Listar archivos "ocultos" (ls -a)
Hay algunos archivos que no son listados por el comando ls. Dichos archivos comienzan por el
carácter. (llamado "punto"), como por ejemplo.cshrc,.lo-gin o.profile. Use el comando ls -a para
listar los citados archivos punto:

$ ls -a
.
..
.cshrc
.login
.profile
emptyfile

Observe que los archivos que comienzan por. son listados antes que los de-más. Hay dos
archivos especiales en este listado: el archivo. es la referencia del directorio en uso, y el
archivo.. es la referencia del directorio maestro.

Hablando en general, los archivos que comienzan por. son usados por utilidades del sistema y el
usuario normalmente no los modifica. Existen algunas excepciones al respecto.

Cambiar permisos (chmod)


Use el comando chmod para cambiar los permisos de un archivo o un directo-rio. Vd. debe ser
el propietario del archivo o del directorio, o tener acceso al directorio raíz para cambiar sus
permisos. La forma general del comando chmod es:

chmod permisos nombre

donde permisos indica los permisos que se quieren cambiar y nombre es el nombre del archivo
o directorio afectado.

Los permisos pueden especificarse de varias formas. A continuación se cita uno de los métodos
más sencillos:

1. Usar una o más letras para indicar los usuarios implicados:

 u (para el usuario)
 g (para el grupo)
 o (para otros)
 a (all; para todas las categorías anteriores)

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
2. Indicar si los permisos se van a agregar (+) o eliminar (-).
3. Utilizar una o más letras para indicar los permisos:

 r (read; de lectura)
 w (write; de escritura)
 x (execute; de ejecución)

En el ejemplo siguiente, se agrega un permiso de lectura al directorio carrots para los usuarios
que pertenezcan al mismo grupo (de esta forma, permisos es g+w y nombre es carrots):

$ ls -l carrots
drwxr-xr-x 3 user2 1024 Feb 10 11:15 carrots
$ chmod g+w carrots
$ ls -l carrots
drwxrwxr-x 3 user2 1024 Feb 10 11:15 carrots
$

Como puede ver, el guión (-) del conjunto de caracteres de grupo se cambia por una w como
resultado del uso del comando.

Para que otros usuarios que no pertenezcan al grupo no puedan leer ni ejecutar este mismo
directorio (permisos es o-rx), tendría que escribir lo siguiente:

$ ls -l carrots
drwxrwxr-x 3 user2 1024 Feb 10 11:15 carrots
$ chmod o-rx carrots
$ ls -l carrots
drwxrwx--- 3 user2 1024 Feb 10 11:15 carrots
$

Ahora, la r (de read) y la x (de execute) del conjunto de caracteres correspondiente a otros
usuarios se cambian por guiones (-).

Cuando cree un archivo o un directorio nuevo, el sistema le asignará automáticamente


permisos.

En general, la configuración predeterminada para los archivos nuevos es:

-rw-r--r--

y para los directorios nuevos es:


Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
drwxr-xr-x

De forma que para hacer ejecutable un archivo nuevo como turnip, su propietario (user2),
debería introducir lo siguiente:

$ ls -l turnip
-rw-r--r-- 3 user2 1024 Feb 10 12:27 turnip
$ chmod u+x turnip
$ ls -l turnip
-rwxr--r-- 3 user2 1024 Feb 10 12:27 turnip
$

Si quiere afectar a las tres categorías de usuarios a la vez, use la opción a. Si quiere hacer que
un archivo nuevo como garlic sea ejecutable por todos, ten-dría que introducir lo siguiente:

$ ls -l garlic
-rw-r--r-- 3 user2 1024 Feb 10 11:31 garlic
$ chmod a+x garlic
$ ls -l garlic
-rwxr-xr-x 3 user2 1024 Feb 10 11:31 garlic
$

Como resultado de esto, el indicador x aparecerá en las tres categorías.

También puede cambiar los permisos de grupos de archivos o directorios utilizando carácter
comodín *. Por ejemplo, para cambiar los permisos de todos los archivos del directorio
actual veggies para que sólo Vd. pueda escribir en ellos, tendría que escribir lo siguiente:

$ pwd
/home/user2/veggies
$ ls -l
-rwxrwxrwx 3 user2 21032 Feb 12 10:31 beats
-rwxrwxrwx 2 user2 68 Feb 10 11:09 corn
-rwxrwxrwx 3 user2 12675 Feb 08 09:31 garlic
-rwxrwxrwx 1 user2 1024 Feb 14 16:38 onions
$ chmod go-w *
$ ls -l
-rwxr-xr-x 3 user2 21032 Feb 12 10:31 beats
-rwxr-xr-x 2 user2 68 Feb 10 11:09 corn
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
-rwxr-xr-x 3 user2 12675 Feb 08 09:31 garlic
-rwxr-xr-x 1 user2 1024 Feb 14 16:38 onions
$

En este ejemplo se incluye el comando pwd para mostrar que el directorio en el que realiza la
operación chmod debe ser el actual.

Establecer permisos absolutos


Hasta el momento, en esta presentación de los permisos sólo se ha incluido el
comando chmod para cambiar permisos relativos a su configuración actual. Si utiliza una forma
diferente del comando chmod, que aplica códigos numéricos para especificar permisos, puede
establecer el permiso de un archivo o un directorio de manera absoluta.

La sintaxis de este modode utilizar el comando chmod es:

chmod numcode name

donde numcode es el código numérico y name es el nombre del archivo o del directorio al que
está cambiando los permisos.

El código numérico completo consta de tres números. Se usa un número para cada una de las
tres categorías: usuario, grupo y otros. Por ejemplo, el siguiente comando establece permisos
absolutos de lectura, escritura y ejecución para el usuario y el grupo, y sólo permiso de
ejecución para otros usuarios:

$ chmod 771 garlic

La Tabla 3-1 ilustra cómo el código 771 representa los permisos asignados a garlic.

Table 3-1 Permisos de garlic

Permiso Usuario Grupo Otros

Lectura 4 4 0

Escritura 2 2 0

Ejecución 1 1 1

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Total 7 7 1

Cada columna de la Tabla 3-1 representa una de las categorías: usuario, grupo y otros. Para
establecer permisos de lectura se agrega un 4 en la columna apropiada, para establecer
permisos de escritura un 2 y para permisos de ejecución un 1. El total de las tres columnas, en
la última hilera de la tabla, es el código numérico completo.

A continuación se muestra otro ejemplo del uso de este método de establecer permisos
absolutos, incluyendo el comando ls -l para demostrar el resultado:

$ ls -l onion
-rw-r--r-- 3 user2 1024 Feb 10 11:46 onion
$ chmod 755 onion
$ ls -l onion
-rwxr-xr-x 3 user2 1024 Feb 10 11:48 onion
$

Se establecen los permisos del archivo onion para que el usuario pueda leerlo, escribir en él o
ejecutarlo; los miembros del grupo puedan leerlo y ejecutarlo y otros usuarios puedan también
leerlo y ejecutarlo. La Tabla 3-2 muestra el des-glose de los códigos numéricos utilizados para
establecer los permisos de onion.

Table 3-2 Permisos de onion

Permiso Usuario Grupo Otros

Lectura 4 4 4

Escritura 2 0 0

Ejecución 1 1 1

Total 7 5 5

Por supuesto, para conceder permisos de lectura, escritura y ejecución a Vd. mismo, a su grupo
o a otros usuarios respecto al archivo cabbage, escribiría lo siguiente:

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
$ ls -l cabbage
-rw-r--r-- 3 user2 1024 Feb 10 11:51 cabbage
$ chmod 777 cabbage
$ ls -l cabbage
-rwxrwxrwx 3 user2 1024 Feb 10 11:53 cabbage
$

La Tabla 3-3 muestra el desglose de este ejemplo.

Table 3-3 Permisos de cabbage

Permiso Usuario Grupo Otros

Lectura 4 4 4

Escritura 2 2 2

Ejecución 1 1 1

Total 7 7 7

El código numérico 777 representa el nivel de permisos máximo que puede conceder.

Se puede utilizar el carácter comodín * para establecer permisos absolutos para todos los
archivos del directorio, del mismo modo que se cambian los permisos relativos. Por ejemplo,
para establecer permisos absolutos de todos los archivos del directorio veggies de modo que
Vd. pueda leer, escribir y ejecutar dichos permisos, su grupo pueda leerlos y ejecutarlos, y los
demás usuarios puedan sólo ejecutarlos, tendría que escribir lo siguiente:

$ pwd
/home/user2/veggies
$ ls -l
-rwxrwxrwx 3 user2 21032 Feb 12 10:31 beats
-rwxrwxrwx 2 user2 68 Feb 10 11:09 corn
-rwxrwxrwx 3 user2 12675 Feb 08 09:31 garlic
-rwxrwxrwx 1 user2 1024 Feb 14 16:38 onions
$ chmod 751 *
$ ls -l

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
-rwxr-x--x 3 user2 21032 Feb 12 10:31 beats
-rwxr-x--x 2 user2 68 Feb 10 11:09 corn
-rwxr-x--x 3 user2 12675 Feb 08 09:31 garlic
-rwxr-x--x 1 user2 1024 Feb 14 16:38 onions
$

En este ejemplo se incluye el comando pwd para ilustrar que el directorio en el que realiza esta
operación debe ser el directorio actual. El comando ls -l se muestra sólo para ilustrar los
cambios que han sufrido los permisos. Cuando se establecen permisos absolutos no es
necesario saber qué permisos están en activo.

Si desea más información acerca del comando chmod, consulte man Pages(1): User
Commands.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo VII USANDO EL EDITOR DE (vi)

EDITOR VI

El editor vi es el editor por excelencia de UNIX. Es bastante potente y complicado de manejar a


pleno rendimiento, debido a la gran cantidad de opciones que tiene, pero es fácil dar los
primeros pasos e ir avanzando poco a poco. Es difícil de utilizar al principio, pero puede llegar a
convertirse en el más cómodo y rápido.

En UNIX existen otros editores más potentes, con entornos de trabajo más amigables, otros
más sencillos de manejar, pero el único editor que está en todas las versiones y se maneja igual
es el vi.

La sintaxis del comando vi es, al igual que la de cualquier comando UNIX:

vi [opciones] archivo

En vi existen 3 modos de trabajo:

 Modo comando: cada tecla tiene un significado, y se puede desplazar el cursor, copiar,
pegar, mover, borrar, etc. Hay que tener mucho cuidado, pues un comando en
minúsculas o en mayúsculas tienen efectos muy diferentes.
 Modo texto: se emplea para añadir o modificar el texto del documento.
 Modo ex: inserción de comandos del editor de líneas ex. Se emplea para cambios
masivos en el documento.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
MODO TEXTO

Acceso a modo texto

Insertar antes del cursor.


i

Insertar al principio de la línea.


I

Añadir después del cursor.


a

Añadir al final de la línea.


A

Abrir línea debajo de la actual.


o

Abrir línea encima de la actual.


O

Sobreescribir (cambiar) texto.


R

Sobreescribir el carácter sobre el que está el cursor.


r

Reemplaza caracteres.
c

Reemplaza palabras.
cw

Reemplaza hasta el fin de línea.


C o c$

Reemplaza desde el comienzo de línea.


c0

os comandos de reemplazo admiten multiplicadores que consisten en un número antecediendo


al comando. Al dar un comando de reemplazo el editor coloca un símbolo $ en donde termina
el pedido de reemplazo. El usuario sobrescribe normalmente hasta donde necesite, y sale con la
tecla ESC. Estos comandos admiten multiplicadores, por ejemplo 3cw abre un área de
reemplazo para 3 palabras.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Otros

Borrar carácter hacia la izquierda.


BS (Back Space)

Salir de Modo Texto y pasar a modo comando.


ESC

MODO COMANDO

lgunos de estos comandos admiten multiplicadores, que consisten en un número antecediendo


al comando.

Movimiento del cursor y Control de pantalla


Mover en distintas direcciones.
flechas

Una posición hacia la izquierda.


h ó BS (Back Space)

Una posición hacia la derecha.


l ó SP (Espacio)

Una línea hacia arriba.


kó-

Una línea hacia abajo.


jó+

Fin de línea.
$

Principio de línea.
0 (Cero)

Comienzo del archivo.


1G

Fin del archivo.


G

Línea número 18.


18G

Mostrar número de línea actual.


Ctrl-G

Comienzo de la palabra siguiente.


w

Fin de la palabra siguiente.


e

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Fin de la palabra siguiente antes de espacio.
E

Principio de la palabra anterior.


b

Primera palabra de la línea.


^

Hasta el paréntesis que aparea.


%

Parte superior de la pantalla.


H

Parte inferior de la pantalla.


L

Al medio de la pantalla.
M

Cursor a la columna 23.


23|

Una pantalla adelante.


Ctrl-f

Una pantalla atrás.


Ctrl-b

Refrescar la pantalla.
Ctrl-l

Media pantalla adelante.


Ctrl-d

Media pantalla atrás.


Ctrl-u

Búsqueda

Buscar hacia adelante cadena de caracteres 'str'.


/str

Buscar hacia atrás cadena de caracteres 'str'.


?str

Buscar siguiente (si se usó /) o anterior (si se usó ?).


n

Buscar anterior (si se usó /) o siguiente (si se usó ?).


N

Buscar el siguiente carácter 'c' en la línea.


fc

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Buscar el anterior carácter 'c' en la línea.
Fc

Ir al carácter anterior al siguiente 'c'.


tc

Ir al carácter posterior al precedente 'c'.


Tc

Repetir el último comando f, F, t, o T.


;

último comando f, F, t, o T en sentido inverso.


,

a cadena a buscar en / o ? puede ser una expresión regular.

a acción de f, F, t y T alcanza sólo a la línea actual; si el carácter buscado no está en esa línea el
cursor no se mueve.

Borrar, Copiar y Pegar

Borrar carácter bajo el cursor.


x

Borrar línea, queda guardada.


dd

Borrar desde cursor a fin de línea.


D

Borrar desde cursor a fin de palabra.


dw

Borrar desde cursor a fin de línea.


d$

Borrar desde cursor a principio de línea.


d0

Borra hasta el final del párrafo.


d)

Copiar línea.
Y o yy

Pegar antes del cursor.


P

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Pegar después del cursor.
p

Copiar palabra.
yw

Copiar de cursor a fin de línea.


y$

Copiar línea en buffer llamado 'a'.


"ayy o "aY

Copiar palabra en buffer llamado 'a'.


'a' "ayw

Pegar desde buffer 'a', a la derecha del cursor.


"ap

Pegar desde buffer 'a', a la izquierda del cursor.


"aP

Borrar línea y guardar en buffer 'b'.


"bdd

Borrar palabra y guardar en buffer 'b'.


"bdw

Unir la línea actual y la siguiente (suprimir el retorno de carro).


J

Otros

Grabar cambios si los hubo y salir.


ZZ

Deshacer última acción.


u

Deshacer todos los cambios en una línea desde que se posicionó el cursor
U en ella.

Repetir el último comando.


.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
MODO EX O ULTIMA LINEA

Generales

Salir si no hubo cambios.


:q

Salir sin guardar cambios.


:q!

Guardar cambios.
:w

Guardar cambios en archivo arch1.


:w arch1

Guardar cambios y salir.


:wq

Insertar un archivo.
:r arch2

Editar un nuevo archivo.


:e arch2

Idem sin salvar anterior.


:e! arch2

Insertar salida de comando.


:r! comando

Salir al shell (vuelve con exit).


:shell

Muestra el número de línea en que se halla en cursor.


:.=

Mover

Mueve a línea 1.
:1

Mueve a línea 15.


:15

Mueve a última línea.


:$

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Opciones, abreviaturas y macros

Cambio de opciones.
:set

Mostrar números de línea.


:set nu

No mostrar números de línea .


:set nonu

Mostrar modo actual de vi.


:set showmode

No mostrar modo actual de vi.


:set noshowmode

Cada vez que se teclee la cadena abr, ésta se expandirá escribiendo


:ab [abr] [cadena] cadena.

Muestra las abreviaturas creadas.


:ab

Elimina la abreviatura abr.


:una [abr]

Genera la macro c que ejecutará la acción indicada.


:map [c] [accion]

Muestra las macros definidas.


:map

Otros

Reemplaza todas la primera ocurrencia de la cadena [buscar], en


:[desde],[hasta] cada línea, por la cadena [reemplazar] entre las líneas [desde] y
s/[buscar]/[reemplazar]/ [hasta] del archivo.

Reemplaza todas las ocurrencias de la cadena [buscar] por la


:[desde],[hasta]
s/[buscar]/[reemplazar]/g cadena [reemplazar] entre las líneas [desde] y [hasta] del archivo.

Borra las líneas comprendidas entre las líneas [desde] y [hasta].


:[desde],[hasta] d

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Ejemplos:

Cambia Martes por martes en todo el archivo.


:1,$s/Martes/martes/g

Cambia ayuda por ayudando desde línea actual hasta


:.,5s/ayuda/&ndo/g la 5ª línea.

Elimina todas las líneas desde la línea actual al final


:.,$ d del archivo.

Cada vez que se teclee "pp " se expandirá en "Hola


:ab pp Hola Pepe Pepe".

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo VIII ARCHIVOS DE INICIALIZACIÓN

Archivos de Inicialización:

Los archivos de inicialización contienen comandos para que los ejecute el shell cuando empieza
a correr. De esta manera se optimiza el desempeño del shell y se adecua a las necesidades del
usuario.

A diferencia de lo que ocurre con las variables personales, que se eliminan al salir del sistema,
los archivos de inicialización permanecen en la configuración de entrada y salida del sistema.

Existen dos tipos de archivos de inicialización, los de acceso que se ejecutan cuando entramos
al sistema; este archivo puede llamarse .login o.profile, dependiendo del shell con el que se
trabaje.

El otro archivo es el de inicialización de shell, el cual contiene los comandos que se ejecutan
cuando se comienza el proceso de un nuevo shell.

Podemos reconocer a los archivos de inicialización porque generalmente, sus nombres, inician
con un punto, lo cual indica que son archivos ocultos y que no se mostrarán al ejecutar el
comando ls; para poder ver todos los archivos, incluyendo los ocultos, es necesario ejecutar el
comando ls -a.

Archivos para C shell

Archivo Contenido

.cshrc Contiene los comandos que se ejecutan cuando se empieza a correr un nuevo shell.

.login Contiene los comandos que se ejecutan al iniciar una sesión en el sistema.

.logout Comandos que se ejecutan al terminar una sesión en el sistema.

Archivos para Bourne shell

Archivo Contenido

.profile Contiene los comandos que se ejecutan al iniciar una sesión en el sistema.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
A diferencia del cshell, en el Bourne shell no existe un archivo que guarde los comandos que se
ejecutan al iniciar un subshell, esta información se guarda en las variables de ambiente.

Los ficheros de inicio de Bash

El intérprete de comandos /bin/bash (de aquí en adelante nos referiremos a él como "el
intérprete") usa una colección de ficheros de inicio para ayudar a crear un entorno en el que
ejecutarse. Cada fichero tiene un uso específico y puede afectar de manera diferente a
entornos interactivos y de conexión.

Un intérprete interactivo de conexión se ejecuta después de una entrada al sistema correcta,


mediante /bin/login, leyendo el fichero /etc/passwd. Un intérprete interactivo de no conexión
se ejecuta mediante la línea de comandos (por ejemplo, [prompt]$/bin/bash). Un intérprete no
interactivo está presente normalmente cuando se ejecuta un guión. Es no interactivo porque
está procesando un guión y no está esperando a que el usuario introduzca un comando.

Para más información, consulta info bash -- Nodos: Bash Startup Files e Interactive Shells
(Ficheros de inicio de Bash e Intérpretes Interactivos)

Se necesitan los siguientes ficheros para asegurarse que se lee el entorno correcto para cada
una de las formas en que el intérprete puede ser
invocado: /etc/profile, /etc/bashrc, ~/.bash_profile y ~/.bashrc. El fichero ~/.bash_logout no se
usa para la invocación del intérprete. Es leído por este cuando un usuario sale del sistema. Los
ficheros /etc/profile y ~/.bash_profile son leídos cuando se ejecuta un intérprete interactivo de
conexión. El fichero ~/.bashrc es leído cuando se ejecuta un intérprete interactivo de no
conexión.

Definir alias

Un alias es un nombre de una orden ficticia, que se sustituye por otra orden (en general, por
cualquier ristra que nosotros queramos). Uno de los usos más útiles es para ``soldar'' opciones
a un programa. Es decir, si hay un programa que siempre vamos a llamar con las mismas
opciones (por ejemplo, se supone que nos gusta el ls en color, y para ello tenemos que darle la
opción --color), es muy útil tener definido un alias para la propia orden, que sustituya la orden
por la orden más las opciones que queramos. En este caso, queremos que siempre que
escribamos ls al principio de una línea (o sea, cada vez que llamemos al programa ls), se cambie
la ristra ls porls --color (y que deje todo lo que fuera después intacto, por supuesto).

Para ello, nos basta con escribir (si lo queremos siempre, lo escribiremos en
nuestro .bash_profile o .bashrc; las comillas son importantes)

alias ls="ls --color"


Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
También, si estás acostumbrados a teclear win para entrar en el entorno de ventanas, y por
alguna razón patológica o política :-) no quieres acostumbrarte a escribir startx, puedes
definirte un alias tal que así (aquí no hacen falta las comillas porque startx no contiene
espacios):

alias win=startx

Alias útiles

Ahí va una lista de alias útiles para el novato, junto con una breve explicación:

alias ll='ls -l' # Si quieres conservar el ls original


alias ls='ls -lF --color' # Listado largo en color
alias mv='mv -i' # \ Pedir confirmación
alias cp='cp -i' # > antes de
alias rm='rm -i' # / sobreescribir

Variables de entorno

Las variables de entorno son unos valores, etiquetados con un nombre (para los que sepan
programar: variables de las de toda la vida; el nombre de de entorno es porque definen el
entorno de trabajo, no por otra cosa). Convencionalmente, los nombres de las variables se
ponen en mayúsculas.

Las variables de entorno tienen tres usos básicos:

1. Usarlos para escribir menos, o tener valores fijos. Si no entiendes esto, probablemente
no te sirva. Tampoco es que se utilicen mucho.
2. Variables que consulten otros programas. Esto es importante, y estas variables, para
que las vean otros programas, tenemos que exportarlas (lo explico luego).
3. Variables para consultar, que generalmente no se modifican. Por ejemplo, dan
información sobre el directorio raíz del usuario.

Algunas variables de entorno interesantes

 EDITOR. Análoga a la anterior, aunque se prefiere VISUAL.


 PATH. La variable que indica las rutas donde se buscan los ejecutables, si no se da una
ruta completa para llegar hasta ellos. Es una lista de rutas separada por ``:''. Si el
directorio actual no está incluido, al ejecutar un programa que esté en el directorio
actual el intérprete nos dirá que no lo encuentra, y tendremos que darle una ruta
absoluta, como ./programa, para poder ejecutarlo.
 HOME. Indica el directorio raíz del usuario. Si el usuario se llama pepe, lo más normal es
que HOME tenga el valor /home/pepe.
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Exportar variables de entorno

Para exportar variables de entorno, tenemos dos posibilidades:

1. Declararlas directamente como exportadas, escribiendo algo como:


2. export VISUAL=/bin/vi
3. Exportarlas después de haberlas declarado, escribiendo algo como:
4. VISUAL=/bin/vi # Aquí le damos un valor
5. # Más cosas
6. export VISUAL

Es importante saber que el export soporta más de una variable, o sea, podríamos poner
(por comodidad, las variables exportadas no hay que declararlas todas juntas):

VISUAL=/bin/vi
LANG=spanish
# Más órdenes
export VISUAL LANG

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Modulo IX MONITOREO DE LOS PROCESOS DEL SISTEMA

Tareas y procesos

En este punto tendremos que empezar a determinar que es un proceso y una tarea.
Anteriormente dijimos que un programa se transformaba en proceso en el momento en que
este se ejecutaba y estaba en memoria. Además del nombre que el proceso recibe, que es el
nombre del programa que esta corriendo, recibe también un número identificativo llamado PID
(process ID, o ID de proceso). Si ejecutamos el comando ps veremos los procesos que están
ejecutando en este momento con nuestro UID, es decir que estamos corriendo nosotros
mismos

[shrek@pantano:~]$ ps
PID TTY STAT TIME COMMAND
172 p0 S 0:00 -bash
184 p0 R 0:00 ps
[shrek@pantano:~]$

Se puede ver que están corriendo dos procesos, el bash (que es el intérprete de comandos) y el
proceso ps que es el que estamos usando en este momento en una terminal determinada.
Como se puede ver el primer número es el PID que el sistema le asigna al proceso y en la
columna COMMAND se puede ver el nombre del proceso. De ninguna manera estos son todos
los procesos que se están ejecutando en el sistema. Si se quisieran ver todos los procesos
tendrían que poner ps -ax con lo que obtendrían un listado con todos los procesos que se estén
ejecutando. Como se puede apreciar, están ambos procesos ejecutándose al mismo tiempo,
pero solo uno de ellos esta activo, el comando ps. Nos podemos dar cuenta de esto ya que en la
columna STAT aparece en la línea del bash la letra S de SLEEP, ya que en ese momento el
intérprete de comandos está esperando a que el proceso ps termine. Y es aquí donde está la
diferencia entre proceso y tarea. Aunque ambos son procesos, una tarea se refiere al proceso
que está corriendo. Este calificativo solo lo da el shell del sistema cuando se utilizan los
controles de tareas dado que no todos los intérpretes de comandos soportan este tipo de
control.

Primer y segundo plano

Cualquier proceso puede estar en primer o segundo plano. Lo único a tener en cuenta es que
solo un proceso estará en primer plano al mismo tiempo y es con el que estemos trabajando e
interactuando en ese momento. Un proceso que este en segundo plano no recibirá ninguna
señal de parte nuestra, es decir que no nos podemos comunicar con él a través, por ejemplo,
del teclado. La utilidad de enviar un programa a segundo plano está dada por el hecho de que
existen tareas que no requieren de nuestro control para que se ejecuten. Por ejemplo, bajar
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
algún archivo de Internet, compilar el kernel u otro programa. Estas son tareas que pueden ser
lanzadas tranquilamente en segundo plano. Para lanzar un proceso en segundo plano,
tendremos que poner a continuación del comando el símbolo &. Para ejemplificar esto
usaremos el comando find y dejaremos que busque todos los archivos que existen en el disco

[shrek@pantano:~]$ find / -name "*"

Esto nos mostraría una lista bastante larga de archivos por pantalla y nos quedaríamos sin el
control del intérprete de comandos mientras esta ejecutándose. Podríamos usar el
dispositivo null, que si recuerdan era como un agujero negro donde todo lo que se enviaba a él
desaparecía, para redirigir la salida y que no saliera por pantalla

[shrek@pantano~]$ find / -name "*" > /dev/null

Igualmente así no contaríamos con la atención de nuestro interprete de comandos hasta que
terminara el trabajo el comando find. La forma de tener la atención del shell inmediatamente
después de lanzar el proceso find es enviándolo en segundo plano

[shrek@pantano:~]$ find / -name "*" > /dev/null &


[1] 192
[shrek@pantano:~]$

Como se aprecia, regresó de inmediato al shell, pero antes envió un mensaje a la terminal. El [1]
representa a un número de trabajo que el shell asigna a cada uno de los procesos que pasa a
segundo plano. Inmediatamente después vemos el número de PID del proceso. Podremos
identificar al proceso por cualquiera de los dos números mientras se encuentre en segundo
plano. Para ver cuantos trabajos están ejecutándose en este momento podemos usar el
comando jobs.

[shrek@pantano:~]$ jobs
[1]+ Running find / -name "*" >/dev/null &
[shrek@pantano:~]$

Podremos eliminar un proceso que se está ejecutando con la ayuda del comando kill seguido
bien sea del número de trabajo precedido de un signo % o del número de PID. De esta forma
estamos matando al proceso pero puede darse el caso de que este tarde en desaparecer dado
que tiene que limpiar el entorno, por esto muchas veces parecerá que no nos a hecho caso. En
realidad el proceso está haciendo una limpieza del sistema evitando así el mal funcionamiento
del mismo y/o una inconsistencia en los datos con que trabajaba. Como ejemplo usaremos otro
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
comando muy típico, el comando yes. Este comando enviará a la salida estándar
continuamente la letra y. Sirve este comando para que en caso de que se requiera contestar
afirmativamente a las peticiones de un programa pudiéremos mediante una redirección
contestarle con un y a cada pregunta. Si lo ejecutáramos sin redirigir la salida a /dev/null, nos
llenaría la pantalla con una columna infinita de y. Por esto lo enviaremos a segundo plano
redirigiendo la salida y luego lo mataremos con el comando kill.

[shrek@pantano:~]$ yes > /dev/null &


[1] 201
[shrek@pantano:~]$ kill %1
[shrek@pantano:~]$ jobs
[1]+ Terminated yes > /dev/null &
[shrek@pantano:~]$

Como podrán ver, en el momento en que se mando el comando kill, no hubo ningún mensaje.
Solo después de ejecutar el comando jobs se nos informo que el trabajo número 1 había
finalizado (TERMINATED). Podemos también hacer lo mismo empleando el número de PID con
lo que obtendremos idénticos resultados.

[shrek@pantano:~]$ kill 201

Como parar y relanzar tareas

Los procesos pueden ser suspendidos temporalmente hasta que nosotros dispongamos, para
así relanzarlos y que continúen ejecutando donde se habían quedado. Esto es de gran utilidad.
Supongamos que se esta trabajando con el editor de texto Vi y no queremos trabajar en otra
consola, solo tenemos que enviar al programa Vi a dormir un rato y tendremos el intérprete de
comandos a nuestra disposición. En la mayoría de los programas, se envía una señal de
terminación utilizando las teclas Ctrl-C, para poder enviar un trabajo a dormir utilizaremos otra
combinación de teclas Ctrl-Z. Hay que tener en cuenta que no es lo mismo un trabajo en
segundo plano que uno que es enviado a dormir. Un trabajo en segundo plano sigue
ejecutándose, en cambio uno que se envía a dormir queda esperando en el lugar donde estaba
hasta que sea despertado. Para ejemplificar esto, enviaremos al comando yes a segundo plano
y luego lo pondremos a dormir.

[shrek@pantano:~]$ yes >/dev/null &


[shrek@pantano:~]$ yes >/dev/null

Ahora presionamos Ctrl-Z

[shrek@pantano:~]$ yes >/dev/null &

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
[shrek@pantano:~]$ yes >/dev/null
[2]+ Stopped yes >/dev/null
[shrek@pantano:~]$ jobs
[1]- Running yes >/dev/null &
[2]+ Stopped yes >/dev/null

Como pueden ver, el proceso que se envió a segundo plano todavía se está ejecutando
(Running), en cambio la que se mando dormir esta parada esperando que la relancemos
(Stopped). Para ponerlo en primer plano o despertarlo a cualquiera de los dos podemos usar el
signo "%"seguido del número del proceso o bien el comando fg.

[shrek@pantano:~]$ %1
yes >/dev/null &

Ahora presionamos Ctrl-Z

[shrek@pantano:~]$ fg %1
yes >/dev/null

Podremos enviar también un comando que está durmiendo a que ejecute en segundo plano a
través del comando bg

[shrek@pantano:~]$ jobs
[1]- Stopped yes >/dev/null
[shrek@pantano:~]$ bg %1
[1]+ yes >/dev/null &
[shrek@pantano:~]$ jobs
[1]+ Running yes >/dev/null &

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Cabe decir que tanto fg como bg son comandos internos del intérprete de comando. Esto es así
porque es el mismo intérprete quien hace el control de tareas. Puede darse el caso de que
existan intérpretes de comandos que no tengan soporte para control de tareas.

Programas de seguimiento (ps y top)

Los sistemas GNU/Linux cuentan varios programas para efectuar el seguimiento de los procesos
que se están ejecutando en el sistema. Entre los más usados en la interfase de texto están los
programas ps y top.

ps

Sin ninguna opción dará la lista de procesos que están corriendo desde la terminal donde se
ejecuto el ps

[shrek@pantano:~]$ ps
PID TTY TIME CMD
9648 tty2 00:00:02 bash
9659 tty2 00:00:00 ps
[shrek@pantano:~]$

Las columnas que nos quedan por explicar son TTY y TIME. TTY identifica la consola donde se
esta ejecutando el proceso. En este caso es una terminal local. La columna TIME nos indica la
cantidad de tiempo total que el proceso se ha estado ejecutando. Como se puede ver el tiempo
es de 2 segundos. Aunque este horas el sistema encendido, el bash pasa su mayor parte del
tiempo esperando que se le envíe algún comando para ejecutar, mientras tanto está esperando
dormido. Puede verse en la columna STAT en qué estado se encuentra el programa. Por
ejemplo, que vemos que el bash en el momento de ejecutarse el comando ps esta dormido (S)
y que el proceso ps esta activo (R). Si añadimos la opción l tendremos un listado largo del
comando ps. En algunas versiones se usa la opción –l

[shrek@pantano:~]$ ps l
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 100 9648 1 9 0 4368 1400 11b1d0 S tty2 0:01 -bash
4 100 9660 9648 17 0 2676 732 - R tty2 0:00 ps l

Dentro de esta información esta la columna del UID que identifica el dueño del proceso. El PID
del proceso y también el PPID que es el PID del proceso padre. Podemos apreciar que el padre
del comando ps l es el -bash. NI viene de nice y es un nivel que se otorga a un proceso para
requerir cierto privilegio. En este caso tiene uno muy bajo por ende un proceso que tenga un
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
valor mayor tendrá más tiempo de procesador para trabajar. SIZE es el tamaño que tiene el
proceso. RSS es la tamaño del proceso que se encuentra residente en la memoria. WCHAN es el
nombre de la función del kernel donde el proceso está durmiendo. Esta expresado en forma
hexadecimal.

Otra forma en la que podemos ver el padre de cada proceso es a través del modificador f.

[shrek@pantano:~]$ ps f
PID TTY STAT TIME COMMAND
9648 tty2 S 0:02 -bash
9660 tty2 R 0:00 \_ps f
[shrek@pantano~]$

Aquí se puede ver que el comando ps f depende del -bash.

top

Ahora bien, el comando ps nos muestra una radiografía de los procesos en el momento, pero
no nos muestra los cambios que se van teniendo. Para esto contamos con el comando top. El
mismo muestra en tiempo real la situación de los procesos que se están ejecutando en el
sistema, ordenados por defecto según el porcentaje la CPU que estén usando. Al ejecutarlo se
podrá ver otra información adicional, como la cantidad de usuarios que están en el sistema,
cuantos procesos están corriendo y de estos cuantos estas activos, cuantos durmiendo, cuantos
en proceso de terminar (ZOMBIE) y cuantos finalizados. Además se podrá ver la cantidad e
memoria física total, la cantidad usada y la cantidad libre; así como también se podrá obtener la
misma información de la memoria swap.

Lo más importante es que esta información de ira actualizando automáticamente cada tanto
tiempo, por defecto 5 segundos, y que podremos ir alterando lo que va mostrando. Por ejemplo
podemos hacer que ordene los procesos de acuerdo a la cantidad de memoria que esta usando
con solo presionar la tecla M. U ordenarlos de acuerdo al tiempo que llevan corriendo. Otra
utilidad es que podríamos matar algún proceso con solo presionar la tecla k y luego darle el
número de PID.

El listado que nos mostrará contendrá el número de PID, el usuario que lo está ejecutando, la
prioridad del proceso (PRI), el valor nice (NI), el tamaño del proceso (SIZE), el tamaño total del
proceso junto con los datos que maneja (RSS), el tamaño usado por el proceso en la memoria
(SHARE), el estado del proceso(STAT), el tamaño de las librerías del proceso (LIB), el porcentaje
de CPU ( %CPU) y de memoria (%MEM) así como también el tiempo de ejecución (TIME) y el
nombre del proceso (COMMAND).

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Programando tareas en Linux con cron y at

Cron es un servicio de Linux que permite planificar tareas o procesos para una ejecución
periódica. Con cron podremos planificar tareas como por ejemplo, borrar ficheros temporales
todas las noches, apagar la máquina a una hora determinada, realizar copias de seguridad cada
semana automáticamente, etc. La forma normal de programar una tarea es con el comando
crontab. La sintaxis de este comando es la siguiente:
 crontab -l: muestra las entradas programadas por el usuario.
 crontab -e: edita el fichero de configuración del usuario.
 crontab -r: elimina el fichero crontab del usuario.
 crontab -u usuario: aplica una de las opciones anteriores para un usuario determinado.
 crontab fich: instala el fichero fich como crontab del usuario.
Cada usuario tiene un fichero de configuración crontab que se encuentra en el directorio
/var/spool/cron/crontabs. Este fichero tiene una sintaxis específica y en él escribiremos una
línea para cada acción que queramos programar. Cada línea tiene un formato con los siguientes
campos:

minutos horas día-mes mes día-semana comando

El valor que puede tomar cada uno de los campos es el siguiente:

 minutos: 0-59
 horas: 0-23
 día-mes: 1-31
 mes: 1-12
 día-semana: 0-7 (el domingo se puede indicar con 0 o con 7)
Veamos a continuación algún ejemplo. Supongamos que el usuario alex quiere realizar una
copia de los documentos que tiene en el directorio /home/alex/documents/. El contenido de
todo ese directorio lo quiere copiar al directorio /home/alex/copiaseguridad/ el día 15 de cada
mes a las 22:30 horas. ¿Cómo se haría con cron? Pues en primer lugar debería editar su fichero
de configuración crontab escribiendo crontab -e en la consola
(Aplicaciones/Accesorios/Terminal).Cuando lo haga se abrirá su fichero de configuración con el
editor de textos predeterminado. El editor de textos utilizado es el definido en las variables
EDITOR o VISUAL. En ese fichero el usuario alex escribirá la siguiente línea:
30 22 15 * * cp -r /home/alex/documents/* /home/alex/copiaseguridad/

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
El símbolo ‘*’ en este caso indica que la tarea se ejecutará todos los meses caiga en el día de la
semana que caiga el día 15. Por eso ponemos ‘*’ en el campo mes y día-semana. Veamos otro
ejemplo. El usuario alex quiere programar una tarea para que se apague la máquina todos los
días a las 3:00. En este caso la línea en el fichero de configuración crontab quedará de la
siguiente manera:
3 0 * * * halt

En el fichero de configuración crontab se puede hacer uso de ciertos caracteres especiales


como el asterisco (*), la coma, el guión, o la barra (/). La coma sirve para especificar una lista.
En el siguiente ejemplo se realiza una copia del directorio documents los días 15, 16, 17 y 18 de
cada mes a las 22:30 horas.

30 22 15,16,17,18 * * cp -r /home/alex/documents/* /home/alex/copiaseguridad/

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
El guión permite especificar un rango. Otra forma de indicar lo mismo que el ejemplo anterior
empleando el guión sería:

30 22 15-18 * * cp -r /home/alex/documents/* /home/alex/copiaseguridad/

El carácter barra (/) permite especificar intervalos en los rangos. Por ejemplo, si hablamos de
horas, 8-16/2 significa que el comando se ejecutará a las 8, 10, 12, 14 y 16 horas. Si hablamos
de minutos, por ejemplo, */5 significa cada 5 minutos.

Se debe aclarar también que en el fichero de configuración se pueden indicar los días de la
semana y meses con abreviaturas en vez de números (sun, mon, jan, feb…)

También se pueden especificar los siguientes ’sinónimos’:

 @reboot: cada vez que el sistema arranque.


 @yearly: equivale a 0 0 1 1 *
 @monthly: equivale a 0 0 1 * *
 @weekly: equivale a 0 0 * * 0
 @daily: equivale a 0 0 * * *
 @hourly: equivale a 0 * * * *
Aparte del archivo crontab de cada usuario, que ya hemos comentado que se encuentra en el
directorio /var/spool/cron/crontabs/, hay un crontab general para todos los usuarios que se
encuentra en /etc/crontab. Este fichero sólo puede ser modificado por el administrador
(root).En este archivo cada línea tiene un campo adicional en el que se especificará el usuario
que ejecutará cada tarea:

minutos horas día-mes mes día-semana usuario comando

El comando at
El comando at permite ejecutar tareas a una determinada hora. El formato básico de este
comando es: at hora. Si queremos, por ejemplo, apagar la máquina a las 22:30, tendríamos que
abrir el terminal y escribir en la línea de comandos: at 22:30. A continuación aparecerá el
prompt de at en el que escribiremos el comando a ejecutar, en nuestro caso el comando halt.
Cuando lo hayamos hecho pulsaremos la combinación de teclas Control+D para salir de at.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
Para mostrar la lista de tareas programadas emplearemos el comando at con el parámetro -l: at
-l. Podemos hacer lo mismo con el comando atq. Si lo que queremos es eliminar una tarea
emplearemos el comando at con los parámetros -d num_tarea . Cada tarea tiene asociado un
número que podemos ver con at -l. También podemos eliminar una tarea con atrm num_tarea.

At permite especificar la hora de diferentes formas:

 now + intervalo, donde intervalo puede ser minutes, hours, days, weeks o months. Si,
por ejemplo, queremos ejecutar una tarea dentro de 3 horas, la manera correcta sería: at
now+3 hours.

 at hora día. Ejemplos: at 5am May 20, at 20:30 May, at 20:30 5/5/2008. El parámetro
día es opcional. También podemos usar noon (mediodía), teatime (4pm) o midnight
(00:00).

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
MODULO X TAREAS DE RESPALDO CON LA HERRAMIENTA (tar)

Este es un comando que nació cuando era práctica común el realizar respaldos en cinta, lo que
le proporcionó desde sus inicios a tar una serie de funcionalidades poco conocidas, siendo esto
el tema a desarrollar a continuación.

Fecha de publicación: 9 de julio de 2003 (1a. parte) y 16 de julio de 2003 (2a. parte).

tar es uno de los comandos más antiguos de Unix y en algunos casos, muy subutilizado. Linux
usa la versión GNU Tar, que puede ser localizada en http://www.gnu.org/software/tar/,
pudiéndose instalar en la mayoría de los sabores de Unix actuales y MS DOS.

Sirve para generar y administrar archivos que contengan otros archivos, muy utilizados para
realizar respaldos; de hecho, originalmente fue concebido para respaldos en cintas. A pesar de
la sencillez con que lo utilizamos, tar es uno de los más completos programas en su tipo, que
puede manejar otros formatos, agregar nuevos archivos a los paquetes ya creados y mucho
más. Generalmente los archivos generados tiene terminación .tar, pero esto no es un requisito
para su buen funcionamiento; en ocasiones se les denomina TARBALL o archivos TAR.

tar tiene dos clases de argumentos, los operadores y las opciones. De los primeros existen
ocho, por lo que tenemos ocho modos de operación. Este documento no es una visión
exahustiva de este comando, sino sólo una guía de referencia rápida, por lo que sólo se verán
las formas más usuales de utilizarlo.

Tenemos tres formas de llamar los argumentos, la forma larga, la corta y el estilo antiguo
(mantenido principalmente por compatibilidad con el tar de Unix), de lo que mostramos
algunos ejemplos que producen el mismo resultado:

# tar --create --verbose --file=archivador.tar carpeta1/

# tar -c -v -f archivador.tar carpeta1/

# tar -cvf archivador.tar carpeta1/

Los comandos más comunes, presentados en forma larga y corta, son:

--create, -c Generan un nuevo archivo tar.

--list, -t Listan los documentos en un archivo tar.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
--extract, -x Extraen el contenido de archivo tar.

--file, -f Determina el archivo tar.

--append, -r Agrega nuevos archivos a un tar existente.

--update, -r Actualiza los archivos más recientes a un tar existente.

--concatenate, --catenate, -A Concatena archivos a un tar existente.

--delete Elimina elementos de un tar existente.

--compare, --diff, -d Compara un tar con su contraparte en el sistema.

--verbose, -v Presenta en pantalla los archivos que tar está manipulando.

--help Presenta la pantalla de ayuda.

Su estructrura para invocarlo es:

# tar opción... [nombre]...


# tar letra... [argumento]... [opción]... [nombre]...

Para efectos de estos ejercicios, vamos a utilizar una carpeta temporal donde se incluyan estos
archivos:

[crowley@servidor temp]$ ls
archivo2.txt archivo3.txt archivo4.txt archivo.txt texto1.txt

Para crear un archivo tar, podemos usar dos formas, la primera implica declarar los archivos
uno a uno, dentro de la carpeta que los contiene o tecleando la ruta de los mismos.

# tar -cvf temporal.tar archivo.txt texto1.txt


archivo.txt
texto1.txt

Otra forma es declarando la carpeta completa que los contiene, lo que implica estar fuera de la
misma o declarar su ruta completa. Esta forma tiene la ventaja de respetar la estructura interna
de las subcarpetas.

# tar -cvf temporal.tar temp/


temp/
temp/texto1.txt
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
temp/archivo.txt
temp/archivo2.txt
temp/archivo3.txt
temp/archivo4.txt

Nota: El parámetro v es opcional, lo utilizamos en estos ejercicios para que nos muestre la
salida del sistema.

Una vez que ya tenemos un tar, podemos ver su contenido con -t o --list, como queramos
ejecutarlo.

# tar -t --file=temporal.tar
temp/
temp/texto1.txt
temp/archivo.txt
temp/archivo2.txt
temp/archivo3.txt
temp/archivo4.txt

En este caso, el uso de --file= es obligatorio. Si se utiliza esto con el parámetro -v, parecerá que
utilizamos ls -l en una carpeta.

# tar -vt --file=temporal.tar


drwxr-xr-x crowley/crowley 0 2003-07-09 13:56:41 temp/
-rw-rw-r-- crowley/crowley 1006 2003-05-14 10:17:08 temp/texto1.txt
-rw-rw-r-- crowley/crowley 82 2003-05-14 10:58:46 temp/archivo.txt
-rw-rw-r-- crowley/crowley 32 2003-05-28 17:55:48 temp/archivo2.txt
-rw-rw-r-- crowley/crowley 21 2003-05-28 18:17:57 temp/archivo3.txt
-rw-rw-r-- crowley/crowley 39 2003-05-28 18:34:13 temp/archivo4.txt

También es factible solicitar la información de un sólo archivo.

# tar -v --list --file=temporal.tar temp/archivo2.txt


-rw-rw-r-- crowley/crowley 32 2003-05-28 17:55:48 temp/archivo2.txt

Debido a la especificación de tar, al preservar la ruta de los archivos, es necesario especificarlos


manualmente cuando se listan uno a uno.

El siguiente proceso es extraer los archivos, acción que realizamos con --extract (--get, -x). Para
extraer todo el contenido, necesitamos hacerlo así:

# tar -xvf temporal.tar


temp/

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
temp/texto1.txt
temp/archivo.txt
temp/archivo2.txt
temp/archivo3.txt
temp/archivo4.txt

Este proceso sobreescribe la carpeta destino y los archivos existentes, en caso de encontrarlos.
Para extraer un sólo elemento, cambiamos un poco el comando:

# tar -xvf temporal.tar temp/texto1.txt


temp/texto1.txt

Al igual que --list, es necesario especificarle la ruta que incluye su nombre, en caso contrario
fallará.

Si necesitamos actualizar el contenido de nuestro tar, digamos que con más archivos o
carpetas, lo podemos hacer con --update (-u), para lo que necesitaremos cambiar un poco la
estructura de nuestra carpeta de ejercicios. Para ello, vamos a crear dos carpetas internas y le
copiaremos un archivo a cada una, de manera que tengan contenido.

# mkdir temp/acceso1

# mkdir temp/acceso2

# cp temp/archivo2.txt temp/acceso1

# cp temp/archivo3.txt temp/acceso2

Así, realizamos un nuevo respaldo de los archivos en la carpeta superior.

# tar -cf temporal.tar temp/*.txt

Podemos verificar su contenido para asegurarnos que sólo contiene los .txt del primer nivel.

# tar -vt --file=temporal.tar


-rw-rw-r-- crowley/crowley 32 2003-05-28 17:55:48 temp/archivo2.txt
-rw-rw-r-- crowley/crowley 21 2003-05-28 18:17:57 temp/archivo3.txt
-rw-rw-r-- crowley/crowley 39 2003-05-28 18:34:13 temp/archivo4.txt
-rw-rw-r-- crowley/crowley 82 2003-05-14 10:58:46 temp/archivo.txt
-rw-rw-r-- crowley/crowley 1006 2003-05-14 10:17:08 temp/texto1.txt

Y procedemos a ingresarle nuevos archivos.

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
# tar -uvf temporal.tar temp/acceso2 temp/acceso1
temp/acceso2/
temp/acceso2/archivo3.txt
temp/acceso1/
temp/acceso1/archivo2.txt

Y nuevamente verificamos su contenido.

# tar -vt --file=temporal.tar


-rw-rw-r-- crowley/crowley 32 2003-05-28 17:55:48 temp/archivo2.txt
-rw-rw-r-- crowley/crowley 21 2003-05-28 18:17:57 temp/archivo3.txt
-rw-rw-r-- crowley/crowley 39 2003-05-28 18:34:13 temp/archivo4.txt
-rw-rw-r-- crowley/crowley 82 2003-05-14 10:58:46 temp/archivo.txt
-rw-rw-r-- crowley/crowley 1006 2003-05-14 10:17:08 temp/texto1.txt
drwxrwxr-x crowley/crowley 0 2003-07-16 11:35:18 temp/acceso2/
-rw-rw-r-- crowley/crowley 21 2003-07-16 11:35:18 temp/acceso2/archivo3.txt
drwxrwxr-x crowley/crowley 0 2003-07-16 11:35:02 temp/acceso1/
-rw-rw-r-- crowley/crowley 32 2003-07-16 11:35:02 temp/acceso1/archivo2.txt

Ocasionalmente es conveniente realizar los respaldos con otros tar, para lo que usamos la
función --concatenate (--catenate, -A); primeramente vamos a crear respaldos de las
carpetas acceso1 yacceso2 .

# tar -cf acceso1.tar temp/acceso1

# tar -cf acceso2.tar temp/acceso2

Ahora, procedemos a generar un temporal.tar que sólo incluya los archivos .txt originales.

# tar -cf temporal.tar temp/*.txt

Con esto, podemos concatenar los otros dos en este último.

# tar --concatenate --file=temporal.tar acceso1.tar acceso2.tar

Y veamos su contenido.

# tar -vt --file=temporal.tar


-rw-rw-r-- crowley/crowley 32 2003-05-28 17:55:48 temp/archivo2.txt
-rw-rw-r-- crowley/crowley 21 2003-05-28 18:17:57 temp/archivo3.txt
-rw-rw-r-- crowley/crowley 39 2003-05-28 18:34:13 temp/archivo4.txt
-rw-rw-r-- crowley/crowley 82 2003-05-14 10:58:46 temp/archivo.txt
-rw-rw-r-- crowley/crowley 1006 2003-05-14 10:17:08 temp/texto1.txt
Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve
drwxrwxr-x crowley/crowley 0 2003-07-16 11:35:02 temp/acceso1/
-rw-rw-r-- crowley/crowley 32 2003-07-16 11:35:02 temp/acceso1/archivo2.txt
drwxrwxr-x crowley/crowley 0 2003-07-16 11:35:02 temp/acceso1/
-rw-rw-r-- crowley/crowley 32 2003-07-16 11:35:02 temp/acceso1/archivo2.txt

Para eliminar un elemento del conjunto, utilizamos --delete, que no tiene una forma corta.

# tar --delete --file=temporal.tar temp/archivo4.txt

También podemos realizar algunas operaciones especiales, como extraer archivos comprimidos
con GZIP mediante el comando --uncompress (-z).

# tar -zxvf temporal.tar.gz

# tar -zxvf temporal.tgz

Una operación que pocos saben, es poder comprimir archivos al vuelo con --compress (-z).

# tar -zcf temporal.tar temp/*.txt

Algo que poca gente utiliza es el comando --multi-volume (-M), muy útil cuando realizamos
respaldos de sistemas completos y que sobrepasan el límite del dispositivo de recepción, como
en los casos de unidades de cinta.

# tar --create --multi-volume --file=/dev/tape0 --file=/dev/tape1 archivos

Av. Libertador Calle Alameda Torre EXA Piso 2 Ofic. 213 El Rosal CHACAO Caracas-Venezuela Telf. 212 9535445-7222-3423
7502000-2001-2002 Web Site www.softrain.com.ve Emails info@softrain.com.ve contacto@softrain.com.ve

You might also like