Sie sind auf Seite 1von 29

http://math.uprm.edu/~luis/courses/unix/leccion6.

html Historia de Unix Al final de la dcada de los 60 AT&T, General Electric y MIT comienzan unproyecto conjuntoi en respuesta a la necesidad de producir un sistema operativo que permitiera mltiples usuarios. El concepto requera un sistema donde se pudieran compartir archivos y recursos manteniendo la privacidad de cada usuario. Luego en AT&T Bell Laboratories, varios programadores comenzaron a desarrollar un sistema operatico como una herramienta de ayuda en sus labores, lo llamaro "UNICS", llamado luego UNIX. AT&T comenz a propagar UNIX por las universidades y pronto se convirti el favorito de la gente de ciencias de coputacin y de investigadores. Hoy da hay muchsimas variantes del sistema operativo y es uno de los ms utilizados en ambientes de trabajo de alto rendimiento. Variantes de Unix

SYSTEM V (AT&T) ULTRIX (DIGITAL, ahora COMPAQ) HP UX (Hewlett-Packard) AIX (IBM) SCO (Santa Cruz Operation) IRIX (Silicone Graphics) BSD (Universidad de Berkley) SOLARIS (SUN Microsystems) LINUX

Actualmente BSD y SYSTEM V se han convertido en los estandares ms utilizados en UNIX, todos los sitemas de alguna u otra forman utilizan uno de estos dos estandares. Entrando a UNIX, su jerarqua de directorios Para poder entrar a un sistema UNIX el usuario necesita tener un user name y un password, una vez usted logra acceso a un sistema UNIX, ste le lleva a un lugar llamado su "home directory" (entraremos en detalles ms adelante en el curso). La jerarqua de directorios en UNIX se muetsra en la siguiente grfica:

Este esquema puede variar enre las distintas variantes de UNIX pero en escencia todas mantienen una jerarqua similar. El directorio /home puede contener subfolders para organizar los distintos usuarios, de eso hablaremos ms adelante en el curso Ver contenido de directorio Para ver el contenido de un directorio, se utiliza el comando ls

Si desea ver detalles de sus archivos puede utilizar ls -al

La primera columna le indica los permisos y el tipo de archivo, la segunda columna se refiere a "link count", o sea cuantas veces otros arcivos apuntan a ese archivo (links), luego el dueo del archivo seguido del grupo al que pertenece; en Unix cada usuario tiene que pertenecer a un grupo. Los archivos en UNIX son "case sensitive", o sea que hace diferencia entre mayscula y mnscula, debe tener mucho cuidado al nombrar los archivos, para unix File.txt y file.txt son dos archivos diferentes. Cambiar de directorio Para cambiar de directorio se utiliza el comando cd, igual que DOS. Para cambiar al directorio dir1, escribo cd dir1; Para cambiar al directorio "padre", escribo cd .. Note que hay un espacio despues de cd. Si dese cambiarme al directorio dir2 que est dentro de dir1 y ambos a su vez en mi "home directory", escribo cd ./dir1/dir2. cd ~ me lleva a mi "home directory". En Unix tambin se pueden utilizar los "wildcards", digamos que solo deseo ver el contenido de todos los archivos que contienen la letra l: ls l*.*

Permisos
El formato de permisos de archivos en UNIX es muy sencillo y provee una manera muy eficiente de proveerle seguridad a los mismos. Como se muetsra en la ilustracin, los permisos constan de diez "banderas" que se dividen en 4 grupos: tipo de archivo, permisos del dueo del archivo, permisos del grupo al cual pertenece el dueo del archivo y los permisos que tiene toda persona que tenga acceso al sistema.

Permiso Read Write Execute

ID r w r

Valor octal 4 2 1

Efecto en archivo Leer Escribir Ejecutar

Efecto en directorio leer, mostrar informacin de archivos Crear y borrar archivos Buscar por el directorio

Asignar o quitar permisos

Hemos visto los detalles de los permisos en UNIX, ahora veremos como asignarle esos permisos a un atrchivo o directorio. Para eso se utiliza el comando chmod con el siguiente formato:

chmod ugo-+permiso file name donde u se refiere al usuario, g al grupo y o a los otros usuarios del sistema. Para aadir un permiso se coloca el signo de + despues de indicar a quien se le va a asignar el permiso, para quitarle el permiso, se coloca el signo de -. En los ejemplos vamos a asumir que el dueo puede leer y escribir. Ejemplo:chmod g+w file1 ; le asigna permisos de escribir al grupo al cual pertenece el usuario al archivo file1. Equivalente en octal:chmod 640 file 1 (r=4,r=2 4+2=6, para el dueo) chmod uo+x file1; le asigna permisos de ejecucin al dueo del archivo y todos los usuarios del sistema. Equivalente en octal: chmod 101 file1 chmod ogw+wrx file1; le asigna todos los permisos a todos en el archivo 1, esto equivale tambin a chmod a+wrx file1, o sea que cuando se asigna un permiso a todos, se utiliza a (all). Equivalente en octal: chmod 777 file1 (la suma de read+write+execute=7; 4+2+1) Permisos especiales Hay unos permisos especiales en UNIX, ellos son setuid, setgid y sticky setuid: Si un archivo tiene el "flag" de setuid encendido, y el archivo es ejecutable (no aplica a shell script), cuando cualquier usuario lo ejecuta, se comporta como si fuera el dueo de esta forma, por ejemplo puede tener acceso a leer archivos que solo el dueo del archivo tiene acceso. Esto puede resultar peligroso y entrar en detalles en la leccin de seguridad. setgid: Se utiliza de igual manera a setuid pero esta vez se refiere al grupo y n al usuario. sticky: Los permisos "sticky" se demuestran con una t, Este permiso lo explicare con un ejemplo: digamos que el usuario pepe le desea dar permiso de escritura a los demas usuarios del sistema en el directorio /home/pepe/share. Por suspuesto, pepe no quiere que un usuario le borre el archivo a otro, como lo hace? Aqui entra en juego el "sticky" bit. Hacemos lo siguiente: chmod 1707 share, ahora si usted hace ls -la share, el resultado es: -rwx--rwt 1 root root 0 Apr 9 12:00 share, note la t al final. Copiar archivos de un folder a otro El comando cp le permite copiar un archivo de un directorio a otro o al mismo directorio si le asigna un nombre diferente.

Ejemplo: cp file1 file2: Hace una cpoia del archivo file1 en el archivo file2, manteniendo el archivo original. cp file1 ./dir2: Copia el archivo file1 en el subdirectorio dir2, el original se mantiene en el subdirectorio donde estaba. Ejemplo: cp file1 /temp: Copia el archivo file1 en el directorio /temp si es que tiene permiso para escribir en ese directorio Hint: Siempre que vaya a referirse a subdirectorios dentro de su cuenta, puede utiliza ./, eso fuerza a UNIX a ejecutar desde el directorio donde me encuentro. Mover archivos o de un lugar a otro (cambiarle el nombre) Si desea cambiarle el nombre a un archivo o moverlo a otro directorio, utiliza el comando mv Ejemplo:mv file1 file2: cambia el nombre del archivo file1 a file2; mv file1 ./dir2: mueve el archivo file1 al subdirectorio dir2. Borrar archivos/directorios Nota:UNIX borra permanentemente los arcivos del sistema, no hay marcha atrs, para restaurarlos debe hacerse desde un backup previo. Para borrar un archivo se utiliza el comando rm. Ejemplo:rm file1. Si es un directorio y desea borrarlo con todo su contenido, desde el directorio padre ejecuta rm -rf directorio (recursive). NUNCA EJECUTE ESTE COMANDO EN UN DIRECTORIO DEL SISTEMA A MENOS DE QUE ESTA SEGURO DE LO QUE VA A HACER, AUN ASI CERCIORESE DE LO QUE VA A HACER. Hint:Nunca elimine directorios del sistema cuando esta ocupado en otras tareas o esta conversando con alguien. Si usted desea que UNIX le confirme si desea eliminar un archivo, agregue el parmetro -i: rm -i file1 Devices Los devices en UNIX son archivos que representan la inerface con algn periferal de netrada o de salida de datos como keyboard, impresoras, etc. Hay dos clases de devices: block y character. Los devices de bloques se utilizan mayromente para accesar algn "hardware" que soporta acceso aleatorio, tales como los discos, tapes, cdroms; todos ellos transmiten los datos en bloques o grupos de caracteres. Los devices de caracteres se utilizan para accesar "hardware" como impresoras, mouse, keyboard. Todos los devices en UNIX estn localizados en el directorio /dev. A continuacin se muestra el listado de devices de mi servidor pegasus:

Este listado muestra parte del directorio /dev de pegasus, note que el primer flag de los permisos aparece como b o c,inidcando que es un device de bloques o de caracteres, en este caso el nico device de caracteres es ftape que como indica el nombre se refiere una unidad de tape. Los otros devices de bloque se refieren a discos floppy (fd..) o discos duros (hd..). En UNIX todos los devices se accesan a travs de uno de estos archivos. Links En la figura anterior hay un archivo (ftape) que el "flag" de tipo es una l, esto indica que es un "link" a otro archivo en el sistema, estos mayormente se conocen como "simbolic links". Para crear un "link" en UNIX se utiliza el comando ln (ln -s path del archivo que deseo hacer el link nombre del link) Ejemplo:ln -s /opt/browsers/netscape/bin/netscape netscape: Esto crea un "simbolic link" llamado netscape que apunta al

archivo /opt/browsers/netscape/bin/netscape. Son similares a los "shortcuts" de Windows 95/98/NT. File System Un file system determina las propiedades de como el sistema operativo va a trabajar con los archivos. En UNIX hay varios file system y en las versiones gratis usted puede utilizar el file system que desee. Para determinar el tipo de file system que usted desea, tiene que hacer FORMAT del disco o particin, para ello UNIX provee el comando format que contrario a Windows o DOS, lo que le aparece es un men donde usted escoge que es lo que desea hacer con el disco, incluyendo definir particiones. Particionar un disco EL proceso de particionar un disco no es otra cosa que dividir el disco en diferentes secciones. En UNIX, mencionamos en la leccin 1 como es la jerarqua del disco, varios de estos directorios son en realidad particiones del disco, como por ejemplo la de usuarios /home. Las particiones bsicas en un sistema UNIX son:
Particin / Descripicn Particin de root Propsito Se crea para albergar el sistema operativo, depender del tamao de la versin de UNIX que tenga En esta particin, por lo general se guardan los archivos de correo electrnico de los usuarios, los archivos de lo que pasa constantemente en el sistema (logs), colas de impresoras y todo aquel archivo que de alguna u otra forma est cambiando. Aqu por lo general se graban los programas que vienen con la distribucin de su sistema operativo, as como la mayora de las libreras de UNIX y los programas de X windows. En este lugar por lo general se instalan los programas que el administrador del sistema instala despus de haber isntalado el sistema operativo Esta particin se utiliza para guardar todos los archivos de configuracin de UNIX y los "scripts" de inicializacin del sistema.

/var

Alberga los archivos que varan constantemente

/usr

Programas del sistema

/opt

Programas instalados

/etc

Archivos de configuracin/scripts

swap

Memoria Virtual

Esta particin UNIX la utiliza como memoria virtual, o sea como espacio en disco para almacenar temporeramente programas que est ejecutando en memoria. Su tamao se recomienda que sea el doble de la memoria aunque no debe mayor de 300Mb. Aqu es donde UNIX asigna el home directory de cada usuario. Debe ser la ms grande del sistema

/home

Particin d elos usuarios

Estructura del file system Aunque la estructura interna del file system de UNIX depende de la versin que se halla instalado, la mayora sigue el siguiente formato:(recuerde que cda particin definida constituye un file system)

Super Block Lista de inodes Lista de data blocks

Siempre hay un super bloque (y varias copias para efectos de seguridad) que contiene lo siguiente:

El tamao del file system El nmero de bloques libres Una lista de los bloques libres Un ndice al prximo bloque libre EL tamao de la lista de inodes El nmero de inodes libres Una lista de los inodes libres Un ndice al prximo inode libre Un flag (llamado "dirty") que indica si el file system mecesita mantenimiento

Inodes Los inodes son ndices en un file system. Cada inode contiene:

El dueo del archivo El grupo al que pertenece el dueo del archivo EL tipo de archivo Los permisos Fecha y hota de la ltima modificacin El tamao del archivo

Los data block iniciales Direccin en el disco

Montar y desmontar un file system En UNIX, los file system pueden desmontarse y montarse en cualquier momento (aplican restricciones). Para oder utilizar un file system, tiene que estar montado. Para poder montar un file system, tiene que existir lo que se llama el "mount point" o sea, el directorio donde se va a montar un file system. Los file system se encuentran el el directorio de devices. En Linux, por ejemplo todos los devices con cnombfre hd.. se refieren a particiones de discos duros, los que comienzan con fd.. se refieren a flppy disk, si los discos son SCSCI, sus aprticiones se refieren como sd1, sd2... Para montar un file system se utiliza el comando mount file system mount point. Hint:Solo root puede montar y desmontar file systems Ejemplo:Para montar la particin /dev/hda3 en /usr - mount /dev/hda3 /usr. Si la particin ya est montada, UNIX se lo indica, al igual que si no existe el " mount point". Para desmontarla, utiliza el comando umount file system. Hint:Asegrese que usted no est dentro del file system, pue UNIX no lodeja desmontarla Ejemplo:umount /usr. Note que para desmontaral puede referirse al mount point. Usted puede montar los file system manualmente o puede indicarle a UNIX que lo haga automticamente cuando arranca el sistema. En este caso existe un archivo lamado fstab (vsftab en Solaris)localizado en /etc. Este archivo contiene todos los detalles de como se va amontar el file syetem. Para saber cuales file systems estn montados, puede verificar el archivo /etc/mntab. Corregir un file system Hay ocasiones, mayormente cuando no se da shutdown al sistema, que se corrompen los file systems, en ese caso, UNIX le da la oportunidad de arrglarlo mientras trata de montarlo, una vez "logueado" como root, puede ejecutar el comado fsck file system con problemas, el programa es interactivo y a medida que encuentra problemas le pregunta si desea resolverlos. Para evitar problemas mayores, implemente backups a menudo. Backup

En cualquier sistema de computadoras es de suma importancia mantener copia de todo lo que se hace y se tiene en el sistema. A este proceso le llamamos backup. Hay varias estrategias de backup (refirase a un libro de UNIX), uan vez usted halla determinado la que prefiere, debe proceder a ejecutarla constantemente para mantener sus datos ms seguros. UNIX provee varias tres maneras de hacer backups a sus archivos, aqu discutir solo dos comandos:tar, dump. tar El comando tar es uno de los ms utilizados para hacer backup de un sistema UNIX. Este comando aglomera todos los archivos (incluyendo directorios) bajo un mismo archivo .tar. En las verisones modernas, se le puede aadir el parmetro z y comprime de una vez. Su formato es el siguiente:tar parmetros bloques device file system. Ejemplo:Para hacer backup de /usr en bloques de 1024 en un tape backup drive:tar cvbf 1024 /dev/rmt0 /usr Parmetros de tar
Parmetro c v b f x p Create a backup Verbose list (listar los archivos amedida que hace backup) Gurdalo en bloques Escribe el archivo eb cloques indicados Extraer de backup file Preserva los permisos y dueo del archivo
Significado

Para extraer del tape el file system /usr: tar xvpf 1024 /dev/rmt0. tar tambin puede usarse para backup de archivos. dump/restore dump le permite hacer backups completos o incrementales, o sea, de los archivos que cambiaron desde el ltimo dump. Ejemplo:dump 0bdfu 50 54000 /dev/rmt/0hbn /export/home. En este ejemplo se hace un backup completo (0) den bloques de 50 en un tape de densidad (d) 54,000 bits per pulgada en el device (f) /dev/rmt/0hbn (Solaris), haciendo un "log" (u) de los archivos que va guardando del file system /export/home en /etc/dumpdates. Para restaurar del tape el file system:

ufsresotre rvf /dev/rmt/0hbn Este comando restaura todo el contenido del tape (r),del device ohbn (f). Usted puede entrar a ufsrestore de manera interactiva con el parmetro i (ufsresore ivf /dev/rmt/0hbn). Shell Un shell es un interpretador de comandos en UNIX, similar al command.com de DOS. Todos los comandos que ested escribe, son interpretados en un shell, adems son un lenguaje de programacin interpretado. Hay distintos shells, por default, el administrador de sistema le asigna uno cuando crea la cuenta, entre los ms usados estn

C shell (csh) Bourne shell (sh) Korn shell (ksh) bash shell (bsh) z shell (zsh)

Cada uno tiene sus variantes mejoradas. Para efectos de este curso enfatizaremos C shell y Borne shell o bash. En todos ellos se puede programar y tienen sus prpias reglas y variables. Procesos Un proceso es uno programa que se est ejecutando. UNIX tiene muchos procesos ejecutndose al mismo tiempo. para poder ver que procesos se estan ejecutando se utiliza el comando ps... A este comando se le pueden aadir parmetros para que le detalle los procesos que se estn ejecutando. Veamos el siguiente ejemplo: ps -ef.

Las columnas significan lo siguiente:


UID PID PPID C Quin est ejecutando el proceso Nmero de identificacin del proceso Nmero de identificacin del "padre" del proceso Obsoleto (uso del procesador) Desde donde se est ejecutando Cuanto tiempo lleva ejecutndose programa que se est ejecutando

STIME A qu hora comenz el TTY TIME CMD

Comandos/Programas UNIX est compuesto de pequeos programas (as fue su filosofa desde el principio). Contrario a DOS, la mayor parte de los que usualmente conocemos como comandos, en realidad en el mundo de UNIX son pequeos programas que realizan una tarea en especfico, ya hemos visto algunos como ls,cp,tar. Hay comandos intrnsecos del shell que se est usando pero la mayora son programas usualmente localizados en los directorios /sbin,/bin,/usr/sbin o /usr/bin. A continuacin algunos de los pequeos programas que constantemente un usuario de UNIX necesita. Para efectos de esta explicacin, cuando mencione comando, recuerde que mayormente se refiere al programa que lleva ese nombre more Este comando sirve para ver el contenido en pantalla de un archivo ASCHII, detiene la pantalla cuando llega al mximo de lneas y escribe en la parte de abajo la plabra --more--, usted puede continuar oprimiendo cualquier tecla (vea grfica de la leccin anterior. Este comando se puede combinar con otros en UNIX para detener la pantalla de manera que se pueda ver todos los resultados obtenidos de un comando. Irnicamente, existe otro programa que hace lo mismo, pero con mayor versatilidad ya que le permite hacer "scrolling" de pantallas anteriores, entre otras cosas; se llama less. pipes Antes de continuar con la explicacin de comandos en UNIX, es necesario mencionar que UNIX permite combinar comandos, a este proceso se le llama pipes. Los pipes utilizan la salida de un programa como la entrada (input) de otro. Por ahora veremos ejemplos sencillos de como utilizar pipes, el pipe est representado por el smbolo | y tiene que utilizar | cada vez que quiera combinar comandos.. Digamos que queremos ver el contenido de un folder con el comando ls, si son muchos archivos, UNIX contina mostrando archivos sin detener la pantalla, podemos combinar el comando ls con el comando more: ls -la | more. Ahora le muestra en pantalla sus archivos, pero al llenarse la misma se detiene hasta que usted oprima cualquier tecla. grep Hay ocasiones en las cuales se desea obtener cierto "string" de un archivo o salida de un programa. Esto se puede observar mejor con un ejemplo; digamos que deseamos ver los procesos que estn ejecutndose bajo mi user name. Utilizamos el comando ps -ef | grep luis. En este caso solo me

muestran aquellos procesos que contengan el "string" luis en alguna salida. Si la lista de procesos es muy larga, podemos tambin combinarlo con more para que detenga la pantalla:ps -ef | grep luis | more, s, se pueden anidar pipes. Este comando (grep) es muy til en UNIX y provee una gran ventaja para combinar comandos redireccin <,> Redireccin se refiere a extraer la entrada de un comando de un archivo o a dirigir la salida de un comando a un archivo. Digamos que deseo que la salida del listado de archivos la guarde en el archivo myfiles, el comando es:ls la > myfiles. Para redirigir salidas utilizo >, para redirigir entrada, utilizo < cat No, este comando no tiene nada que ver con gatos! Una de sus funciones, al igual que more, es mostrar el contenido de un archivo, pero cat es mucho ms que eso, sirve tambin para crear archivos como si fuera un editor(algo rstico). Para efectos de este curso, moyormente se utilizar para "ver" el contenido de un archivo ASCHII.. sort sort se utiliza para ordenar los archivos, puede aceptar como input un archivoy tambin puede redirigir la salida a otro. Por ejemplo, para ordenar el archivio file1 que contiene los nmeros [ 0 8 2 3 4] a file2, utiulizamos sort < file1 > file2. Procesos en background UNIX es un sistema operativo "multitasking", o sea que puede ejecutar ms de un programa a la vez y repartir los recursos de memoria y procesador entre sus procesos. Muchos programas en UNIX se ejecutan en background, o sea que permanecen corriendo aunque usted no los vea, y si los ve, no le "congelan" la sesin de login o la ventana de terminal, de manera que la puede utilizar para otras cosas. Para lograr ejecutar un programa en background, se le aade el smbolo & despus de escribir el nombre del programa (hay que dejar espacio entre el programa y &). Ejemplo:sort < file1 > file2 &. Si file1 fuera un archivo con muchos datos, tardara mucho y le congela la sesin de trabajo ahsta que termina de ejecutarse, con & al final, UNIX lo ejecuta en backgroound, liberando la pantalla para que usted pueda seguir trabajando. Matar procesos

Hay ocasiones en las cuales se nos congela algn programa o la pantalla completa. Si esto pasa se puede resolver matando el proceso que se est ejecutando y est causando el problema. Por ejemplo, digamos que se le congela netscape y no puede cerrar la ventana, para matar el proceso necesita saber que nmero tiene, as que utiliza el comando ps (combnelo con more y/o grep para un mejor resultado). Una vez halla identificado el nmero del proceso (PID), utiliza el comando kill -9 PID (donde PID se refiere al nmero que tiene el proceso). Si se congela netscape, puedo hacer lo siguiente: ps -ef | grep netscape, esto solo me mostrar aquellos procesos que contienen el "string" netscape (incluyendo grep netscape), si por ejemplo el PID es 234, para matarlo, escribo kill -9 234. Si quiero matar todos los procesos de un usuario, puedo utilizar (una vez logueado como ese usuario) kill -1 -1. Hay ocasiones en las cuales sse necesita matar un proceso y volverlo a comenzar, para ello, puede utilizar el comando kill -HUP (BSD UNIX) process name, note que en este caso se utiliza el nombre del proceso en lugar del nmero. nohup Este programa se utiliza mayormente para dejar un programa corriendo an despus de dar logout a la cuenta. Asignar prioridades a procesos (nice) UNIX provee el programa nice para asignar prioridades de ejecucn a los procesos; en un ambiente multitasking, el tiempo del procesador se reparte entre los programas que se estn ejecutando, los que corren en background siempre tienen menor prioridad. Las prioridades se miden de -20 a 19, siendo los nmeros ms pequeos los de ms alta prioridad. Buscar archivos:find En muchas ocasiones hay que encontar algn archivo que no se sabe donde se encuentra. UNIX provee dos comandos para encontrar archivos, uno solo busca por el PATH definido en el profile del usuario y otro por donde le indique el usuario, ellos son whereis y find respectivamente. whereis filename solo bsuca por el PATH que usted tenga definido en su archivo de configuracin de su shell (.cshrc,.login,.bashrc...). find busca por el camino que usted le indique. El formato de find es:find PATH options filename. Digamos que se quiere encontar el comando netscape que usted sabe que est en algn lugar en el directorio /usr: find /usr -name netscape print. En este ejemplo, find comienza a buscar desde /usr en adelante el archivo (-name) e imprime todo su recorrido por el disco en pantalla (print). Find puede consumir mucha memoria y tiempo de CPU si tiene que hacer mucho recorrido por el disco, se recomeinda correerlo en

background. Tambin puede invocar otros comandos de UNIX desde find, con el parmetro -exec comando {} \;, hay variaciones entre algunos shells. Un buen ejemplo de find es buscar dentro del directorio cache que crea netscape (.netscape en su cuenta) para eliminarlo, ya que este directorio guarda todas las imgenes de las pginas que suted ha visitado con su browser, ocupando su valioso espacio en la cuenta, veamos el ejemplo: find ./netscape -name *.gif -exec {} rm \; find partir desde .netscape en su home directory todos los nombres de archivos con extensin .gif y los eliminar. hint"tenga cuidado cuando combina find para eliminar archivos, siempre utilice el parmetro -name para asegurarse de que acepte el input del archivo que desea borrar, vea un ejemplo donde puedo eliminar TODOS los archivos de /home: find /export/home cache -exec rm -rf {} \; En este caso quera eliminar todos los directorios cache .del file system de los usuarios, pero no especifiqu -name, elimin el home directory de TODOS los usuarios (historia real!).

who,whoami,finger El comando who le provee informacin acerca de los usuarios acyivos en el sistema en ese momento;whoami se utiliza mayormente desde un programa para averiguar informacin de quin es el usuario en ese momento;finger se utiliza para averiguar informacin de un usuario en particular.

Note toda la informacin que se puede obtener de un usuario. En este caso me mostr tods los usuarios en los cuales aparecin el "string" luis. Ya puede ver lo conveniente que es usar pipes. Puedo combinar el comando grep para extraer solo el string que deseo. Finger es un comando que puede comprometer la seguridad de un sistema UNIX, por esta razn se elimina su uso externo como servicio, math, por ejemplo, no permite finger desde otra computadora, en la leccin de seguridad veremos coo eliminar o restringir este servicio. date date se utiliza para cambiar la fecha y hora en UNIX, usted tiene que ser root para poder cambiarla. El formato es el siguiente:date mesdiahoraminutoyear.segundos. date sin argumentos le da la fecha y hora del sistema:

mes - 01-12

dia - 01-31 hora - 00-23 minutos - 00-59 year segundos - 00-59

Ejemplo:date 08291745 : Esto me cambia la fecha del 29 de agosto del corriente ao y la hora 5:45pm Editores Cuando se cre UNIX, los editores que haba en ese momento eran editores de lnea (como edlin de DOS). Haba que editar cada lnea por su nmero y a ciegas adivinar el nmero de lnea que quera editar, de hecho, todava existe uno en UNIX, ed, si se quiere divertir puede editar una archivo como sendmail.cf utilizando ed. En ese momento, a un programador cansado de pasar tanto trabajo cre vi, que quiere decir "visual editor" (aunque usted no lo crea). Hoy da utilizar vi es un dolor de cabeza, pues hay otros editores tanto grficos como no grficos que son mucho mejores que vi. Es mi deber como su instructor de UNIX tratar de ensearle las cosas bsicas de vi y crame, se utiliza mucho por los administradores de sistema, aunque se que a usted no le agradar. Para invocar vi, escribe vi desde su "prompt" y oprime enter, le aparece esta ventana

Obviamente sin la parte de ventanas. Es ms fcil invocar a vi con el nombre del archivo a editar o a crear. Una vez dentro del editor se utilizan comando para poder trabajar con el archivo.
ESC I ESC ESC : wq ESC : q! dd x / flechas Para comenzar a insertar caracteres Para salir del modo de editar Para guardar y salir Salir sin guardar los cambios Eliminar una lnea Eliminar el cursor que le precede al cursor (si no est en modo de editar, debe oprimir ESC para salir del modo de editar. para bsucar un string en el texto moverse dentro del texto

emacs

Este es uno de los mejores editores de texto que existe en UNIX, hay una versin para X windows que se llama xemacs. emacs es ms simple para usar que vi (aunque cualquier editor moderno es mucho mejor que vi). pico pico es un editor muy sencillo de utilizar, de hecho viene de los creadores de pine, uno de los programas para leer mail en UNIX. Lo recmiendo siempre y cuando el archivo a editar no contenga lneas muy largas. Shell/Script Como mencionamos enlecciones anteriores, un shell es un interpretador de comandos pero tambin es un lenguaje de programacin. A los programas hechos con un shell se les llama scripts. Para efectos de este curso, trabajaremos scripts mayormente en bash shell (/usr/bin/sh). Veamos un ejemplo sencillo de un script, utilice el editor de su preferencia para crear su archivo.
#!/usr/bin/sh # Este script imprime en pantalla hello world! echo hello world

Los smbolos de # significan comentarios, excepto cuando est seguido del carecter !, que indica el path del shell que interpretar el script. La primera lnea siempre es sta, calro, va a variar de acuerdo al shell que usted desee que interprete su script. Haciendo un script ejecutable Mencionamos anteriormente que para que un archivo se ejecutable, tiene que tener el permiso x, y lo podr ejecutar, obviamente si el programa est diseado para eso. Para ahcer este script ejecutable, digamos que se llama script1, utilizamos el comando chmod, en este caso yo quiero que tanto el grupo como el resto de usuarios lo puedan ejecutar: chmod 755 script1. Si usted desea identificar sus scripts con el shell que los va a interpretar le puede aadir la extensin del nombre del script, en este caso .sh, recuerde que esta extensin es un mero label, no hace diferencia ni asocia ese archivo con un shell en particular. Para ejecutarlo, sencillamente escribe ./script1, si no lo hace ejecutable, para poder ejecutarlo, tiene que invocar el nombre del shell: sh script1. Variables Usted puede utilizar variables en un script de manera similar a como las utiliza en un lenguaje como c++. Para efectos del curso me basar en Bourne

shell. En sh, las variables se denominan con$; $myfile, $i. Para imprimir el valor o contenido de una variable, se usa echo $variable name Input variables En la mayor parte de las ocasiones utilizamos variables para leer datos de la pantalla del usuario de manera interactiva, para ello se utiliza el comando read variable name, no se asigna el $ cuando se est leyendo la variable, veamos un ejemplo:
#!/usr/bin/sh # script para leer la edad echo "Entre su edad:" read edad echo Su ead es $edad

Variables de ambiente Una variable de ambiente se denomina como aquella que afecta el comportamiento de su sesin de trabajo (Luis definition). A continuacin algunas de las ms utilizadas, note que todas se escriben con letra mayscula:
HOME PATH PS1 DISPLAY EDITOR Contiene el home directory del usuario Contiene el path para la bsqueda de comandos, si desea muchos path, los separa con : Define el prompt. Contiene la definicin del DISPLAY en un ambiente grfico Define cual ser su "default" editor

Como cambiar una variable de ambiente (Bourne shell, C shell) Bourne shell En sh se hace as:set nombre de variable=valor. Ejemplo:set PATH=/usr/local/bin:$PATH. Este ejemplo aade a su path actual /usr/local/bin. Si no se coloca $PATH (note que se separa con :), le cambia su path a /usr/local/bin y su path anterior deja de existir, as que es importante indicarle que mantenga su path actual. En sh, luego de cambiarle el valor a una variable de ambiente, hay que "exportarla" para que los dems "subshells" la puedan ver, de manera que debe escribir el comando export nombre de variable. Si no la exporta no se reflejarn sus cambios. C shell En C shell se hace un poco diferente, se utiliza el comando setenv nombre de variable valor. Ejemplo, para cambiarle el default editor a xemacs:setenv

EDITOR /usr/local/bin/xemacs. Note que en el valor debe especificar el path completo. Condiciones; if;then;else;fi Como todo lenguaje de programacin, las condiciones o if's no pueden faltar. El formato en sh para un if es:
if condicion [ condicion en algunos casos ](espacio entre la expresin y los [] then codigo else codigo fi

Cada vez que necesite hacer una comparacin condicionada, tiene que utilizar este formato, el else es opcional si no lo requiere su expresin. File operators Los "file operators", como el nombre lo indica se refiere a atributos de archivos, son los siguientes:
-f -r -x -d -s El archivo existe El archivo es para leer El archivo es ejecutable o es un directorio por el cual puedo navegar El archivo es un directorio El archivo existe y no est vaco

Hay dos formas de verificar si un archivo existe, una es con el operador -f y expresin entre [], y la otra utilizando el comando test, sin los []: if [ -f testfile ] o if test -f testfile Operadores aritmticos y lgicos
Expresin exp1 gt exp2 exp1 ge exp2 exp1 lt exp2 exp1 le exp2 ! != -a -o Equivalente exp1 > exp2 exp1 >= exp2 exp1 < exp2 exp1 <= exp2 Significado Expresin1 es mayor que expresin2 Expresin1 es mayor o igual que expresin2 Expresin1 es menor que expresin2 Expresin1 es menor o igual que expresin2 negacion distinto de AND OR

Ejemplo: #!/bin/sh #script1.sh # Este script verifica si existe resolv.conf y si est vaco indica que no hay domain ni DNS definido if [ -f /etc/resolv.conf -a ! -s /etc/resolv.conf ] then echo "No hay dominio ni primary DNS en /etc/resolv.conf" fi Iteraciones (loops) Hay dos maneras de hacer iteraciones en los shells, con for y con while. for loop El formato de un for loop es :
for variable de control in valores do expresiones done

. Ejemplo: #!/bin/sh #script para ejecutar todos lo programas en c


for i in *.c do cc -c $i echo "Compiling $i done

while loop El formato del while es:


while condicion do codigo done

Cuando se requiera terminar la ejecucin de un while, se utiliza el comando break. Veamos un ejemplo completo:El cdigo esta bajo script1.sh

#!/bin/sh
# This script will ask the user to enter an alias for UNIX command stop="n" while true do echo "Enter the UNIX command that you want to alias:" read unix_command echo "Enter the alias that you want for $unix_command:" read unix_alias my_new_alias="alias $unix_alias=$unix_command" # Display the alias echo "The new alias to be added to .profile is:$my_new_alias" # Add to .profile the new alias echo $my_new_alias >>.profile echo "Do you want another alias?: (y/n)" read stop if [ "$stop" != "y" ] then break fi done

Operadores lgicos, Shortcut Los operadores lgicos AND (-a) y OR (-o) pueden sustituirse con && y || respectivamente, de manera que para comparar si un archivo existe y es un directrorio, escribimos if [-f myfile && -d myfile ]. CASE Hay ocasiones en las cuales los if's no nos resuelven el problema o sencillamente no es prctico programar con ellos, como por ejemplo, cuando hay muchas opciones para escoger. En este caso elcase nos resuelve ese problema. Su sintaxis en Bourne Shell es:
case variable in opcion1) ejecucion;; opcion2) ejecucion;; esac

El case coteja contra cada opcin y cuando encuentra la que necesita, segn la respuesta, ejecuta lo que indica esa opcin. Si el usuario no escoge ninguna de las opciones, se indica con opcin *). Veamos un ejemplo: script3.sh

#!/bin/sh # Este script presenta un menu para escoger opciones de comandos echo "--------Menu-------" echo "1)Listar archivos" echo "2)Copiar archivo" echo "3)Aclarar pantalla" echo -n "Escoja opcion:" read opcion case "$opcion" in 1) ls -la;; 2) echo -n "Entre el path y nombre de archivo a copiar:" read file1 echo -n "Donde desea copiarlo?:" read destino cp $file1 $destino;; 3) clear;; *) echo "opcion incorrecta" esac

Parmetros Hemos visto muchos comandos que pueden llevar parmetros denominados por el signo de - , seguido de una letra (ej:rm -r, ls -l...). Usted puede pasar sus propios parmetros a su script. Hay variables que identifican los parmetros ellas son:
$0 Devuelve el nombre del script que se est ejecutando Cuntos parmetros hay disponibles Lista todos los parmetros (en un solo string) Identifica el proceso del shell que se est ejecutando. Este es nico mientras el shell se est ejecutando, por eso se puede usar para generar archivos temporeros Devuelve el valor del ltimo comando ejecutado, o indica que la ejecucin fue exitosa. Identificador del proceso del ltimo proceso ejecutado en background.

$1,$2,$3,... Parmetros $# $*

$$

$? $!

Cuando usted especifica parmetros en un script, quiere decir que al invocar el script usted le va a pasar los parmetros indicados. Veamos un ejemplo:

#!/bin/sh # Ejemplo de script con parametros # Anade un usuario al passwd echo Este script se llama $0 #Parametro para pedir el user name,group id,user id,nombre,home dir, shell echo "User name is: $1" echo "Group is: $2" echo "User id is: $3" echo "User identification is: $4" echo "Home directory is: $5" echo "Shell is: $6" echo "Hay un total de $# parametros, ellos son:" echo "$1 $2 $3 $4 $5 $6" if [ -f passwd] then echo $1 $2 $3 $4 $5 $6 >> passwd else echo "passwd no existe" fi

LEER NTFS

This is experimental, and known to be unstable, use at your own risk. I am sure many of you heard that Snow Leopard was supposed to have native read/write for NTFS partitions. Apple supported NTFS R/W in older SL builds but I guess decided to not to go with it for some reason, however support is still present. For this, you need to modify your /etc/fstab file to mount NTFS partitions for read and write. First, uninstall NTFS-3G/Paragon if installed. Open Terminal.app (/Applications/Utilities/Terminal) Type "diskutil info /Volumes/volume_name" and copy the Volume UUID (bunch of numbers). Backup /etc/fstab if you have it, shouldn't be there in a default install. Type "sudo nano /etc/fstab". Type in "UUID=paste_the_uuid_here none ntfs rw" or "LABEL=volume_name none ntfs rw" (if you don't have UUID for the disk). Repeat for other NTFS partitions. Save the file (ctrl-x then y) and restart your system. After reboot, NTFS partitions should natively have read and write support. This works in both 32 and 64-bit kernels. Support is quite good and fast, it even recognizes file attributes such as hidden files.

Alternative Method by iBlacky: Rename the original /sbin/mount_ntfs tool: sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig Create a script like this: #!/bin/sh /sbin/mount_ntfs.orig -o rw "$@ save the script to /sbin/mount_ntfs sudo chown root:wheel /sbin/mount_ntfs sudo chmod 755 /sbin/mount_ntfs Enjoy R/W access to NTFS volumes... In case you don't like it sudo mv /sbin/mount_ntfs.orig /sbin/mount_ntfs and everything is back to R/O.

Das könnte Ihnen auch gefallen