Anda di halaman 1dari 40

Comando mail mail lee el correo recibido mail [nombre_usuario]Envia correo a nombre de usuario La utilera mail tiene comandos

que son diferentes de los comandos de shell. El primer mensaje ser desplegado seguido por el prompt de mail ? o &. Comandos de mail: note que mientras est en la utilera de mail, se puede ejecutar un comando del sistema UNIX colocandole el prefijo !. ? ayuda q salir x salir sin cambiar el buzn de mensajes recibidos. s[archivo] salva el mensaje en un archivo (por defecto es mbox) d borra el mensaje previo Enter despliega el siguiente mensaje + despliega el mensaje siguiente - despliega el mensaje previo !cmd despliega el comando del sistema UNIX desde adentro del mail Envio de Mensajes

[oracle@demo1 ~]$ mail oracle Subject: demo1 hola como te llamas soy gerardo Cc: Ctrl + d

[oracle@demo1 ~]$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/oracle": 2 messages 2 unread >U 1 oracle@demo1.itss.co Sat May 28 17:52 18/609 "aviso" U 2 oracle@demo1.itss.co Sat May 28 17:55 21/634 "aviso" & Held 2 messages in /var/spool/mail/oracle>>>>>>>>>>>>Ctrl + d [oracle@demo1 ~]$

+++++++++++++++++++++++++ Avanzadas del Shell +++++++++++++++++++++++++ Objetivos: +Usar las capacidades del Shell +Establecer y modificar variables +Transferir variables locales al ambiente ***************************************** Capacidades de Sustitucin del Shell ***************************************** Hay 3 tipos de sustitucin en el Shell: 1.Sustitucin de variables 2.Sustitucin de comandos

3.Sustitucin tilde Estableciendo Variables del Shell Sintaxis nombre=valor $color=lavanda Local $PSI=hi_there$ Ambiente $PATH=/usr/bin Ambiente Cuando un usuario crea una variable local, sta se almacena en el rea de datos local. Cuando se asigna un nuevo valor a una variable de ambiente, tal como PATH, el nuevo valor reemplaza al viejo Sustitucn de Variables del Shell Sintaxis $nombre de la variable >>>>>ordena al shell realizar una sustitucin de variable $echo $PATH [root@demo1 /]# echo $HOME /root $nombre_archivo=$HOME/archivo1 $more $nombre_archivo $echo $PATH Cuando un nombre de variable es precedido por un signo $, el Shel reemplaza el parmetro con el valor de la variable. El Shell sustituye las Variables antes de que se ejecute el comando. Por lo tanto, las variables pueden tambin representar un comando, argumentos de comando o una lnea de comando completa. Es un mecanismo para renombrar a trayectorias largas o cadenas de comandos frecuentemente usadas. El comando echo $nombre de la variable , despliega el valor actual de una variable. El uso de {},sirve para asignar un valor con las siguientes declaraciones Suponga que: variable archivo y variable archivo1 $archivo=esto $archivo1=eso $echo $archivoy$archivo1 >>>>>busca las variables de archivoy y archivo1 esto $echo ${archivo} y ${archivo1} >>>>>>busca el archivo, y archivo1, es decir Concatenar variables esto y eso $nombre_dir=tree/car.models/ford

$echo $nombre_dir tree/car.models/ford $ls -F $nombre_dir sedan/ sports/ $mi_ls= "la -aFC" $ $mi_ls ./ archivo.1 tree/ ..// archivo.2 $cd /tmp $nombre_dir=/users/josem/tree/dog.breeds/retriever $ $mi_ls $nombre_dir ./ ../ golden labrador mixed El uso de una trayectoria absoluta para el valor de una variable que hace referencia a un archivo o un directorio permite accesar al archivo o directorio en cualquier lugar de la jerarqua. $ cd $ORACLE_BASE $ls -F $ORACLE_HOME Sustitucn de Comandos Sintaxis $ (comando) o $ `comando` $pwd $dir_actual = $(pwd) ec$echo dir_actual $cd /tmp $cd $dir_actual $pwd La sustitucion de comandos es usada para reemplazar un comando con su salida dentro de la misma lnea de comando. Permite capturar la salida de un comando y usarla como un argumento a otro comando o asignarla a una variable. [root@demo1 /]# echo $(date) Sat May 28 10:52:19 CDT 2011 Normalmente date enva su salida a la pantalla. recuerda que todo esto lo hace el shell. Sustitucn Tilde Sintaxis [root@demo1 /]# echo $HOME /root [root@demo1 /]# echo ~ /root [root@demo1 /]# echo PWD

PWD [root@demo1 /]# echo $OLDPWD /root [root@demo1 /]# echo ~/bin /root/bin [root@demo1 /]# alias cdn= 'cd ~/bin'

Si una palabra comienza con una tilde (), la expansin tildes es realizada sobre esa palabra. Slo se coloca al principio de la palabra, esto es /~users/jose1. Reglas de la Expansin tilde: 1.Una tilde por si sola o al frente de una / es reemplazada por la Ruta establecida en la variable HOME 2.Una tilde seguida por un + es reemplazada por el valor de la variable PWD. PWD es establecida por cd con el nuevo, actual, directorio de trabajo. 3.Una tilde seguida por un - es reemplazada por el valor de la variable OLDPWD. OLDPWD es establecida por cd con el directorio de trabajo previo. 4.S una tilde es seguida por varios caracteres y despus una /, el shell checa s los caracteres igualan un nombre de usuario del sistema. S es as, entonces la secuencia ~caracteres es reemplazada por la trayectoria de login de ese usuario. 5.Las tildes pueden ser colocadas en alas. Almacenamiento de Variables del Shell Sintaxis [root@demo1 /]# env Internamente en el shell hay dos reas de memoria para usarse con variables shell: 1. el rea de datos local, 2. y el ambiente. Cuando se define una variable nueva se toma memoria del rea de datos local. Las variables en esta rea son privadas al Shell actual. Esto es, cualquier sub-proceso subsecuente no tendr acceso a estas variables. Pero, las variables que son movidas al ambiente pueden ser accesadas pro sub-procesos. Hay variables que son definidas por usted en el proceso de login.Las cuales generalmente son almacenadas en el ambiente. Variables locales tales como PS1 y PS2 pueden ser cambiadas para personalizar las caractersticas de su Sesin en su Terminal. El comando env puede ser usado para desplegar todas las variables que estn almacenadas en el ambiente, i.e.: [root@demo1 /]# env SSH_AGENT_PID=5191

HOSTNAME=demo1.itss.com SHELL=/bin/bash TERM=xterm HISTSIZE=1000 GTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc-1.2-gnome2 Desplegando Valores de Variables del Shell Sintaxis $echo $HOME $env $set $unset nombre_dir La sustitucin de variables $variable, puede ser usada para desplegar el valor de una variable individual, independientemente de si st en el rea de datos local o en el ambiente. El comando env puede ser usado para desplegar todas las variables que stan almacenadas en el ambiente. El comando set desplegar todas las variables definidas actualmente, locales o de ambiente y sus valores. Tanto set como unset son comandos internos del Shell. env es el comando de UNIX /bin/env Transfiriendo Variables Locales al Ambiente del Shell Sintaxis export variable export [oracle@demo1 ~]$ color=lavanda [oracle@demo1 ~]$ echo $color lavanda [oracle@demo1 ~]$ export color [oracle@demo1 ~]$ set color=lavanda Para que una variable sea disponible a otros procesos, sta debe existir en el Ambiente. Cuando se define una variable, sta se almacena en el rea de datos locales y debe ser exportada al Ambiente: con export variable. El comando export es similar al env, con lo cual despliega los nombres y valores de todas las variables exportadas. [oracle@demo1 ~]$ export declare -x DISPLAY=":0.0" declare -x G_BROKEN_FILENAMES="1" declare -x HISTSIZE="1000" declare -x HOME="/home/oracle"

declare declare declare declare declare

-x -x -x -x -x

HOSTNAME="demo1.itss.com" INPUTRC="/etc/inputrc" KDEDIR="/usr" LANG="en_US.UTF-8" LESSOPEN="|/usr

Pasando Variables a una Aplicacin Sintaxis $vi Cada programa en el sistema tiene un archivo asociado almacenado en disco. Muchos de los programas UNIX estndar, se encuentran bajo los directorios /bin y /usr/bin Cuando se solicita correr un comando, el archivo de programa debe ser localizado, cargar su cdigo y ejecutarse. El programa que est corriendo se conoce como un Proceso del Sistema UNIX. Cuando entra en el sistema UNIX, el Shell ser cargado, se ejecuta un proceso shell. Cuando escribe un comando en el prompt de shell, se crea un proceso hijo y ejecutado por medio de: 1. Un fork, el cual duplica su proceso de shell, incluyendo el cdigo del programa, el espacio de datos del ambiente y el espacio de datos locales. 2.Un exec, el cual reemplaza el cdigo y espacio de datos locales del proceso hijo con el cdigo y espacio de datos lcoales del programa solicitado. 3.El exec concluir ejecutando el proceso solicitado. Mientras el proceso hijo se hijo termine. Una vez que su proceso y despierta al solicitud de comando. Su shell. est ejecutando el shell (padre) dormir, esperando que el el hijo termina la ejecucin, libera memoria asociada con proceso padre, quin ahora est listo para aceptar otra proceso hijo ha concluido cuando regresa el prompt de

Variables Locales Versus Variables de Ambiente Cuando una variable nueva se define, sta ser almacenada en el rea de datos lcoales asociada con el proceso. Si un proceso hijo requiere accesar esta variable sta debera ser transferida al ambiente usando export. Una vez que una variable est en el Ambiente, ser disponible a todos los procesos hijo posteriores, ya que el ambiente se propaga a cada proceso hijo. Cuando se usa el comando vi, el Shell realiza un fork y un exec; esto permite Monitoreando Procesos $ps -f $ksh >>>>>>>prompt del Korn Posix Shell $exec ps -f

A cada proceso iniciado en el sistema se le asigna un nmero de identificacin nico, conocido como Identificador del Proceso (PID-process id). El comando ps despliega la informacin acerca de los procesos que actualmente estn corriendo o durmiendo en el sistema, incluyendo el PID de cad proceso, y el PID del padre de cada proceso que est corriendo en el sistema. Por medio de los nmeros PID y PPID, se puede seguir el linaje de cada proceso que se esta corriendo en su sistema. El comando ps reportar tambin quien es propietario de cada proceso y en cul terminal se esta ejecutando cada proceso, ms informacin adicional util. [oracle@demo1 PID TTY 6717 pts/1 11374 pts/1 ~]$ ps TIME CMD 00:00:00 bash >>>>>>>>comando shell corriendo 00:00:00 ps >>>>>>>comando ps corriendo

[oracle@demo1 ~]$ ps -fea |grep pmon oracle 11164 1 0 11:50 ? 00:00:00 ora_pmon_demo1 oracle 11446 6717 0 11:58 pts/1 00:00:00 grep pmon [oracle@demo1 ~]$ ps -f UID PID PPID C STIME TTY TIME CMD oracle 6717 6716 0 09:33 pts/1 00:00:00 -bash oracle 11415 6717 0 11:57 pts/1 00:00:00 ps -f >>>>corre como un proceso hijo del Shell (proceso padre). Recuerde que un shell es un programa justo como cualquier otro comando UNIX. Si usamos el comando ksh en nuestro prompt actual del Posix Shell, tendrn lugar un fork y un exec y ser creado un proceso hijo del Korh Shell y se empezar a ejecutar. Cuando despus ejecutemos otro ps -f, lo vemos, como se espera, ksh corre un proceso hijo del shel original, sh, y el nuevo comando ps corre como un hijo del Korn shell. El comando exec est disponible como un comando interno del Shell. Si en lugar de correr ps -f de la manera usual, corremos exec ps -f, el cdigo del programa para ps sobre-escribir el cdigo del programa para el proceso actual (ksh). Esto es evidente, ya que el PID del proceso ps -f es el mismo nmero que el del ksh usado. Cuando ps -f termina, nos encontramos de regreso en nuestro prompt original del Posix Shell. [root@demo1 /]# ps -f UID PID PPID C STIME TTY TIME CMD root 11827 5889 0 12:11 pts/1 00:00:00 bash root 11873 11827 0 12:12 pts/1 00:00:00 ps -f [root@demo1 /]# ksh # ps -f UID PID PPID C STIME TTY TIME CMD root 11827 5889 0 12:11 pts/1 00:00:00 bash

root 11874 11827 0 12:12 pts/1 00:00:00 ksh root 11875 11874 0 12:12 pts/1 00:00:00 ps -f # exec ps -f UID PID PPID C STIME TTY TIME CMD root 11827 5889 0 12:11 pts/1 00:00:00 bash root 11874 11827 0 12:12 pts/1 00:00:00 ps -f [root@demo1 /]# Procesos Hijo y el Ambiente [root@demo1 /]# export color=lavanda [root@demo1 /]# ksh >>>>>>>>comando ksh es invocado y crea un proceso hijo Korh Shell # ps -f UID PID PPID C STIME TTY TIME CMD root 11827 5889 0 12:11 pts/1 00:00:00 bash root 11915 11827 0 12:13 pts/1 00:00:00 ksh root 11916 11915 0 12:13 pts/1 00:00:00 ps -f # echo color color # echo $color lavanda # colors =rojo >>>>>>el proceso hijo no permite alterar el ambiente del proceso padre ksh: color: not found # color = rojo ksh: color: not found # exit [root@demo1 /]# ps -f UID PID PPID C STIME TTY TIME CMD root 11827 5889 0 12:11 pts/1 00:00:00 bash root 11930 11827 0 12:14 pts/1 00:00:00 ps -f [root@demo1 /]# echo $color lavanda La lamina ilustra que los procesos hijo no pueden alterar el ambiente de su proceso padre Si un comando inicial ps -f fue ejecutado, ste revelara que slo nuestro shell de login, sh (y ps por supuesto) est corriendo.

Generacin de Nombres de Archivos Objetivos 1.Usar caracteres de generacin de nombres de archivos para generar nombres de archivos en la lnea de comando. 2. Ahorrar escritura usando metacaracteres para generar nombres de archivos 3. Nombrar archivos tal que los metacaracteres sean ms tiles.

Esto es para ahorrar tiempo al momento de escribir nombres de archivos.Se usan expansiones de nombres de archivos para accesar solo a los archivos que cumplen un Patrn. Por ejemplo, los programas de cdigo fuente C convencionalmente terminan con c, y los procesadores de palabras pueden usar .doc como una extensin para los archivos de documentos. Caracteres para Generar Nombres de Archivos ? Acopla cualquier caracter excepto un punto al principio [] Define una clase de caracteres - Usado para definir un rango de inclusin ! Usado para negar la clase definida * Acopla de cero o ms caracteres excepto un punto al principio. Generar Nombres de Archivos y Archivos Punto +Los caracteres para la generacin de nombres de archivos nunca generan un nombre de archivo que tenga un punto al principio +El punto al principio en archivos punto se debe suministrar explicitamente. Los archivos punto, son archivos cuyos nombres comienzan con el caracter punto (.), tal como .profile, .kshrc, y .exrc. Estos archivos normalmentes estn ocultos, y se debe usar el comando ls -a para desplegarlos. [root@demo1 /]# ls -a . .autofsck bin dev home initrd lost+found misc opt root selinux sys tmp usr .. .automount boot etc inicio lib media mnt proc sbin srv tftpboot u01 var S quisiera desplegar los nombres de archivos que comiencen con un punto, necesitara proporcionar el punto al principio como parte del patrn de nombre de archivo. [oracle@demo1 ~]$ echo ?sqlplus isqlplus [oracle@demo1 ~]$ echo ???plus sqlplus

[oracle@demo1 ~]$ echo .bas??? .bashrc Todos los nombres de archivos resultantes son pasados como argumentos al comando echo. Sin no hay acoplamiento entonces el patrn mismo se pasa como el argumento. Las caracteristicas de Generacin de Nombres de Archivos se usa ms para los comandos de manipulacin de archivos tales como ls, more, cp, etc.

El comando echo es til para confirmar cmo expandio el Shell el patrn solicitado, especialmente cuando se usan comandos destructivos tales como rm. Recuerde: una vez qeu es removido un archivo, se ha ido.

[] Define una clase de caracteres - Usado para definir un rango de inclusin ! Usado para negar la clase definida Las llaves cuadradas o brackets se usan para especificar una clase de caracter. Una clase de caracter acopla cualquier caracter de la lista encerrada. Un signo de admiracin invertido (!) como el primer elemento de la llave niega la clase, esto es, tla clase representa a todos los caracteres no listados dentro de las llaves. S se coloca un guin (- ) entre dos caracteres dentro de las llaves, la clase de caracter ser todos los caracteres en la secuencia ASCII -ver ascci(5) desde el primer caracter inclusive. Por lo tanto, las clases [!123456789] y [!1-9] se refieren ambas a cualquier caracter excepto los dgitos del 1 al 9. Un punto al principio no puede acoplarse con una clase de ccaracter. [oracle@demo1 [abc] em [oracle@demo1 [sqlplus] em [oracle@demo1 [1-9] [A-Z] [oracle@demo1 [1-9] [!A-Z] ~]$ echo [abc] ?? ~]$ echo [sqlplus] ?? ~]$ echo [1-9] [A-Z] ~]$ echo [1-9] [!A-Z]

[oracle@demo1 ~]$ echo ??????? sqlplus [oracle@demo1 ~]$ echo ?????* demo1.env isqlplus sqlnet.log sqlplus

* Acopla de cero o ms caracteres excepto un punto al principio [oracle@demo1 ~]$ echo ?* demo1.env em isqlplus sqlnet.log sqlplus [oracle@demo1 ~]$ echo .* . .. .bash_history .bash_logout .bash_profile .bashrc .canna .emacs .gconf .gconfd .gnome Cmo listara los nombres de archivos que: 1.Contienen solo 5 caracteres [oracle@demo1 ~]$ echo ????? ????? 2.Contienen al menos 5 caracteres [oracle@demo1 ~]$ echo ?????*

demo1.env isqlplus sqlnet.log sqlplus 3.Comienzan con una a o una A [oracle@demo1 ~]$ echo [ei]* em isqlplus 4.Tienen al menos 4 caracteres y comienzan con una e o una i [oracle@demo1 ~]$ echo [ei]???* isqlplus 5.Terminan con la secuencia s, un nmero y una f [oracle@demo1 ~]$ echo *s isqlplus sqlplus 6.Comienzan con un punto [oracle@demo1 ~]$ echo .* . .. .bash_history .bash_logout .bash_profile .bashrc .canna .emacs .gconf .gconfd .gnome .gnome2 .gnome2_private .gtkrc .kde .mozilla .viminfo .xemacs .zshrc 7.Comienzan con un punto, excepto el archivo echo [!?*] .* 8.Comienzan con un punto, excepto los archivos . y .. [oracle@demo1 ~]$ echo [!em]* demo1.env isqlplus sqlnet.log sqlplus [oracle@demo1 ~]$ echo .* [!is]* . .. .bash_history .bash_logout .bash_profile .bashrc .canna .emacs .gconf .gconfd .gnome .gnome2 .gnome2_private .gtkrc .kde .mozilla .viminfo .xemacs .zshrc demo1.env em [oracle@demo1 ~]$ echo .[!..]* .bash_history .bash_logout .bash_profile .bashrc .canna .emacs .gconf .gconfd .gnome .gnome2 .gnome2_private .gtkrc .kde .mozilla .viminfo .xemacs .zshrc Modulo 10 Entrecomillado .Usar los mecanismos de entrecomillado para cancelar el significado de caracteres especiales en la lnea de comando. Introduccin al Entrecomillado * Muchos caracteres tienen significado especial para el Shell: -espacio en blanco -carro de retorno -$ -# -* -<> *El entrecomillado, remueve el significado de los caracteres especiales. Hay muchos caracteres en el sistema UNIX que tienen significado especial para el Shell.

Por lo cual existen situaciones donde no se desea que el Shell interprete el significado especial asociado con estos caracteres. Usted solo requiere el caracter literal. Por lo tanto, el sistema UNIX debe proporcionar un mecanismo para escapar o remover el significado especial de un caracter indicado. Este mecanismo se denomina Entrecomillado o quoting. Caracteres del Entrecomillado Diagonal invertida\>>> remueve el significado inmediatamente a la diagonal invertida.

del caracter especial que sigue

Sintaxis [oracle@demo1 ~]$ echo la \\ escapa el siguiente caracter la \ escapa el siguiente caracter [oracle@demo1 ~]$ color=rojo\ blanco\ y\ azul\ negro [oracle@demo1 ~]$ echo $color rojo blanco y azul negro [oracle@demo1 ~]$ echo el valor de \$color es $color el valor de $color es rojo blanco y azul negro [oracle@demo1 ~]$ echo uno dos \ > tres cuatro uno dos tres cuatro Nota: en la diagonal inversa nunca hay excepciones.

Comillas sencillas `>>igual que la anterior. las comillas simples no son lo mismo que el acento grave. Remueve el significado especial de todos los caracteres encerrados entre comillas simples

[oracle@demo1 ~]$ color='rojo blanco azul y amarillo' [oracle@demo1 ~]$ echo $color rojo blanco azul y amarillo [oracle@demo1 ~]$ echo 'el valor de \$color es $color' el valor de \$color es $color [oracle@demo1 ~]$ echo 'el valor de $color es' $color el valor de $color es rojo blanco azul y amarillo [oracle@demo1 ~]$ echo 'this doesn't work' > Ctrl + C [oracle@demo1 ~]$ echo '*****************' *****************

Las comillas simples removeran el significado especial de todos los caracteres especiales encerrados por stas.

Comillas dobles">>>> son menos comprensivas,la mayora de los caracteres especiales encerrados con comillas dobles son escapados.Las excepciones son el smbolo $ (cuando se usa para sustitucin de variable o comando), la diagonal invertida, el acento grave y la comilla doble la cual se requiere para cerrar la cadena marcada. Se puede usar la diagonal invertida inversa dentro de las comillas dobles para cancelar el significado de $ o ". [oracle@demo1 ~]$ color="rojo blanco y azul" [oracle@demo1 ~]$ echo $color rojo blanco y azul [oracle@demo1 ~]$ echo "el valor de \$color es $color" el valor de $color es rojo blanco y azul [oracle@demo1 ~]$ echo "aqui estan todos, \\, ', \" " aqui estan todos, \, ', " Las excepciones permiten a usted realizar sustitucin de variables, $variable y sustitucin de comandos $(comando) Note que el Bourne Shell usa acentos graves para realizar la sustitucin de comandos, como en 'pwd', el cual produce el mismo resultado que el $(pwd) del Posix Shell (la forma del acento grave tambin es vlida en el Posix Shell).Los acentos graves mantienen su significado especial dentro de las comillas dobles. Todos los mecanismos de entrecomillado pueden ser usados en una sola lnea de comando. Resumen: \ escapa el siguiente caracter ' escapan todos los caracteres dentro de ' '. " escapan todos los caracteres dentro de " ", excepto \, $, {nombre_de_variable} y ' acento grave. Redireccionamiento de Entrada y Salida +Cambiar el destino de la salida de comandos del sistema UNIX. +Cambiar el destino de mensajes de error generados por comandos del sistema UNIX. +Cambiar la fuente de entrada de comandos del sistema UNIX. +Definir un filtro +Usar algunos filtros elementales como sort, grep y wc Introduccin al Redireccionamiento de Entrada y Salida Hasta ahora la salidas han sido directamente sobre una Terminal, los ejemplos incluyen date, banner, ls, who, etc. Otros comandos obtienen su entrada de teclado como mail, write, cat. En el sistema UNIX todo es un archivo, incluyendo su terminal y teclado.

El Redireccionamiento de Entrada le permite obtener la entrada para un comando de un archivo en lugar de un teclado. Este redireccionamiento, le permite usar un editor para crear un archivo, y a continuacin enviar este archivo al comando, en lugar de escribir la entrada interactivamente sin capacidades de edicin (recuerda el comando mail?). El Redireccionamiento de Salida le permite enviar la salida de un comando a algn archivo que no sea su terminal. Esto es til para capturar la salida de un comando para propositos de registro de eventos o archivos de bitacora (logs), o incluso para un procesamiento posterior. stdin, stdout y sterr Archivo Dispositivo Descriptor de Archivo stdin >>>>>> Teclado 0 stdout >>>>>> Monitor/Terminal 1 stderr >>>>>> Monitor/Terminal 2 Notas: Cada vez que se inicia un Shell, se abren automaticamente tres archivos para su uso. Estos archivos son: stdin, stdout y stderr. El archivo stdin es el archivo desde el cual el Shell lee su entrada. Es llamado usualmente entrada estndar (standard input).Este archivo se abre con el descriptor de archivo del lenguaje C, 0, y usualmente es asociado a su teclado. Por lo tanto, cuando el Shell necesita la entrada, debe introducirse en el teclado. Los comandos que obtienen su entrada estandar incluyen mail, write y cat; y se caracterizan porque se escribe el comando y argumentos y un Enter, y a continuacin el comando espera que usted proporcione la entrada que ste procesar. La entrada termina presionando Enter o Ctrl + d. El archivo stdout es el archivo al cual el Shell escribe su salida. Es llamado usualmente salida estndar (standard output).Este archivo se abre con el descriptor de archivo del lenguaje C, 1, y se asocia a su Terminal. Por lo tanto, cuando el Shell produce una salida, sta se despliega en la pantalla. La mayora de los comandos del sistema UNIX generan una salida estndar, por ejemplo, date, banner, ls, cat, who, etc. El archivo stderr es el archivo al cual el Shell escribe sus mensajes de error. Es llamado usualmente errror estndar (standard error ).Este archivo se abre con el descriptor de archivo del lenguaje C, 2, y se asocia a su Terminal. El archivo stderr ser puede redireccionar independientemente del archivo stdout. La mayora de los comandos del sistema UNIX generan una mensaje de error cuando el comando se halla invocado inapropiadamente, por ejemplo, cp Enter [oracle@demo1 ~]$ cp cp: missing file argument Try `cp --help' for more information.

Redireccionamiento de Entrada < Cualquier comando que lee su entrada desde stdin puede tener su entrada redireccionada proveniente de otro archivo. Podemos usar un editor para crear un archivo que contenga algn texto que deseamos enviar por correo, y a continuacin podemos redireccionar la entrada de mail de tal forma que ste use el texto del archivo. Esto es til si usted tiene un mensaje de correo muy grande, o desea salvar el mensaje de correo para referencia futura. Los comandos que reciben entradas de la entrada estandar se caracterizan porque se escribe el comando despus de un Enter, y el comando esperar que el usuario proporcione la entrada desde el teclado. La entrada termina con Enter Ctrl+ d. Muchos comandos que aceptan entrada estndar tambin aceptan nombres de archivos como argumentos. El comando cat es un buen ejemplo, ya que desplega texto que se escribe directamente desde el teclado. [oracle@demo1 ~]$ cat + Enter hola Entrada hola Salida hola como te llamas Entrada hola como te llamas Salida [oracle@demo1 ~]$ [oracle@demo1 ~]$ cat demo1.env ORACLE_SID=demo1 ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1 # User specific environment and startup programs PATH=$ORACLE_HOME/bin:$PATH PATH=$HOME/bin:$PATH export PATH export ORACLE_SID export ORACLE_BASE export ORACLE_HOME [oracle@demo1 ~]$ cat < demo1.env ORACLE_SID=demo1 ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1 # User specific environment and startup programs PATH=$ORACLE_HOME/bin:$PATH PATH=$HOME/bin:$PATH export PATH export ORACLE_SID export ORACLE_BASE export ORACLE_HOME El Redireccionamiento de Entrada (<) no causa cambios archivo de entrada. Redireccionamiento de Salida > y >> al contenido del

Cualquier comando que produce redireccionada a otro archivo.

salida

stdout

puede

tener

su

salida

Crear/Sobreescribir con > oracle@demo1 ~]$ date > date.out [oracle@demo1 ~]$ date > who.log [oracle@demo1 ~]$ cat > cat.out HOLA ESTOY HACIENDO UNA PRUEBA DE REDIRECCIONAMIENTO DE SALIDA. Crear/Agregar con >> [oracle@demo1 ~]$ ls >> ls.out [oracle@demo1 ~]$ who >> who.log [oracle@demo1 ~]$ ls >> who.log [oracle@demo1 ~]$ more ls.out cat.out date.out dead.letter demo1.env em geras isqlplus ls.out mbox sqlnet.log sqlplus who.log [oracle@demo1 ~]$ more who.log Sat May 28 18:44:01 CDT 2011 root :0 May 28 09:02 root pts/1 May 28 12:11 (:0.0) root pts/2 May 28 09:55 (:0.0) root pts/3 May 28 12:36 (:0.0) cat.out date.out dead.letter demo1.env em geras isqlplus ls.out mbox sqlnet.log sqlplus who.log El Redireccionamiento de salida permite capturar la salida y guardarla en un archivo de texto. [oracle@demo1 ~]$ more demo1 Sat May 28 18:53:53 CDT 2011 [oracle@demo1 ~]$ ls >> demo1 [oracle@demo1 ~]$ more demo1 Sat May 28 18:53:53 CDT 2011

cat.out date.out dead.letter demo1 demo1.env em geras isqlplus ls.out mbox sqlnet.log sqlplus who.log Advertencia: No se puede usar un archivo como argumento para un comando, y como el archivo de salida. Se pierde el contenido del archivo original, y el redireccionamiento de salida tambin fallar. El archivo de salida terminar con un contenido de cero.Ejemplo: [oracle@demo1 ~]$ more f1 hola estoy hacjdjdjdjjjjjjjjjjjjjjjjj [oracle@demo1 ~]$ more f2 hola estoy hacidjdjdj [oracle@demo1 ~]$ cat f1 f2 >f1 ----esto hace que se pierda el contenido de f1 cat: f1: input file is output file [oracle@demo1 ~]$ more f2 hola estoy hacidjdjdj [oracle@demo1 ~]$ more f1 hola estoy hacidjdjdj Redireccionamiento del Error 2> y 2>> Cualquier comando que produce mensajes de error a stderr puede tener esos mensajes redireccionados a otro archivo. Si se escribe un comando incorrectamente tal que el Shell no pueda intepretarlo propiamente, muchas veces se genera un mensaje de error. Los mensajes de error se transmiten al flujo de datos de error, conocido como stderr, el cul est asociado con el descriptor de archivo 2. Por lo tanto, cuando se especfica redireccionamiento de salida de error, usted debe indicar que necesita capturar los mensajes que se estn transfiriendo del flujo de datos 2. Para redireccionar stderr use 2>. No debe haber espacios en blanco entre el 2 y el caracter>. Similar al redireccionamiento de salida, esto crear un archivo si es necesario, o sobreescribira el archivo si ste existe.

Se puede agregar un archivo existente usando el smbolo 2>>. Usted puede capturar facilmente los mensajes de error, y mantener un archivo bitacora (log) que registre los problemas que encontr su programa. [oracle@demo1 ~]$ cp 2> cp1.err -------Crea/Sobreescribe [oracle@demo1 ~]$ cp 2>> cp1.err-------Crea/Adiciona [oracle@demo1 ~]$ more cp1.err cp: missing file argument Try `cp --help' for more information. cp: missing file argument Try `cp --help' for more information. vi cp1.err---------------ver el contenido del cp1.err cp: missing file argument Try `cp --help' for more information. cp: missing file argument Try `cp --help' for more information. Qu es un Filtro +Lee entrada estandar y produce salida estndar +Filtra el contenido del flujo de datos de entrada o un archivo. +Enva resultados a pantalla, nunca modifica el flujo de datos de entrada o el archivo. +Procesa la salida de otros comandos, cuando se usan en conjunto con Redireccionamiento de Salida. Ejemplos, cat, grep, sort, wc Algunos comandos aceptan entrada de la entrada estandar y generan salida a la salida estandar y error estandar. Estos comandos se conocen como Filtros (aceptan entrada estandar y generan salida estandar). Los Filtros nunca modifican el contenido de un archivos que se esta procesando, y los resultados se transmiten usualmente en la Terminal. Los Filtros son tiles para procesar el contenido de un archivo, tal como: 1.contar el nmero de lneas wc 2. realizar el ordenamiento alfabetico sort 3. buscar lneas que contengan un patrn grep Los Filtros pueden ser usados para procesar poderosamente cualquier comando, ya que los operan sobre archivos, y la salida de comandos puede redireccionarse a un archivo, las dos operaciones se pueden combinar para realizar un procesamiento simple y poderoso de la salida de cualquier comando. wc Cuenta Palabras Sintaxis wc -lwc archivo ----- Cuenta lneas, palabras y caracteres en un archivo.

[oracle@demo1 ~]$ wc demo1.env -desplega el nmero de lneas,palabras y caracteres 11 20 256 demo1.env [oracle@demo1 ~]$ wc -l demo1.env ---desplega el nmero de lneas del archivo 11demo1.env [oracle@demo1 ~]$ wc -w demo1.env ---desplega el nmero de palabras del archivo 20demo1.env [oracle@demo1 ~]$ wc -c demo1.env ---desplega el nmero de caracteres del archivo 256demo1.env [oracle@demo1 ~]$ wc ---cuenta la entrada suministrada por medio de la entrada estandar 1 0 Ctrl + d 1

[oracle@demo1 ~]$ wc < demo1 ---entrada estndar reemplazada por el archivo demo1 14 19 131 [oracle@demo1 ~]$ wc -w demo1 ---nmero de palabraas del archivo demo1 19 demo1

******************************************** sort Ordena Alfabticamente y Numricamente ******************************************** Sintaxis sort -ndtX -k no_campo archivo... -d diccionario (ignora los caracteres que no son letras, nmeros o espacios en blano) -n numrico [oracle@demo1 ~]$ sort demo1 sort -ndtX demo1 cat.out date.out dead.letter demo1 demo1.env em geras isqlplus ls.out mbox Sat May 28 18:53:53 CDT 2011 sqlnet.log sqlplus who.log

[oracle@demo1 ~]$ sort -ndtX demo1.env export ORACLE_BASE export ORACLE_HOME export ORACLE_SID export PATH ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1 ORACLE_SID=demo1 PATH=$HOME/bin:$PATH PATH=$ORACLE_HOME/bin:$PATH # User specific environment and startup programs El comando sort es poderoso y flexible.Se puede usar para ordenar las lneas de archivos en orden numrico o alfabetico. Se puede seleccionar tambin un campo especfico de una lnea sobre el cual basar el ordenamiento . Sorttambin es un filtro de tal forma que aceptar entrada de la entrada estndar, pero tambin ordenar el contenido de los archivos que se especifican como argumentos de la lnea de comando. El delimitador por defecto entre campos es tabulador. Se puede especificar tambien un delimitador con la opcin -tX, donde X representa el caracter delimitador. Ya que el dos puntos (:), no tienen significado especial para el shell, stos son una seleccin comn para un delimitador de campos en un archivo. Despus se puede informar al comando sort sobre que campo basar el ordenamiento usando la opcin -k n, donde n representa el nmero de campo sobre el que debe ordenarse. El comando sort asume que la numeracin de campo comienza con uno. El comando sort soporta varias opciones para realizar operaciones de ordenamiento ms complejas Man sort (1) ******************************************** grep Acoplamiento de Patrn ******************************************** Sintaxis grep -inv patrn archivo ----Busca en archivos el patrn -i le dice a grep que trate por igual a las mayusculas y minusculas -n antepone nmeros de lnea a cada lnea desplegada -v despliega las lneas que no contienen el patrn Toma un patrn (usualmente entrecomillado) como su primer argumento, y toma cualquier nmero de nombres de archivos como sus argumentos restantes. El comando grep despliega entonces las lneas que contienen el patrn. Como todos los filtros, grep lee de la entrada estndar si no se especfica archivo y enva su salida a la salida estndar.

El comando grep puede hacer bsquedas ms complejas. Usted puede dar un patrn del texto que desea buscar. Tal patrn es llamado expresin regular. A continuacin se presenta una lista de algunos caracteres especiales para las euu.`;;ppok, [plp[okkjk,l,lk;' ;',ll;j/';/<J'\';l;,l,AMMAJAZAHNN';AS';;xpresiones regulares (para ver ms detalles ver regexprer (5)). ^ acopla el principio de la lnea [oracle@demo1 ~]$ grep -in ^exp demo1.env 7:export PATH 8:export ORACLE_SID 9:export ORACLE_BASE 10:export ORACLE_HOME $ acopla el final de la lnea [oracle@demo1 ~]$ grep -in $ demo1.env 1:ORACLE_SID=demo1 2:ORACLE_BASE=/u01/app/oracle 3:ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1 4:# User specific environment and startup programs 5:PATH=$ORACLE_HOME/bin:$PATH 6:PATH=$HOME/bin:$PATH 7:export PATH 8:export ORACLE_SID 9:export ORACLE_BASE 10:export ORACLE_HOME 11: . acopla cualquier caracter [oracle@demo1 ~]$ grep -in .xp demo1.env 7:export PATH 8:export ORACLE_SID 9:export ORACLE_BASE 10:export ORACLE_HOME * cero o ms caracteres del que le precede [oracle@demo1 ~]$ grep -i export* demo1.env export PATH export ORACLE_SID export ORACLE_BASE export ORACLE_HOME [] clase de caracter, especfica un conjunto de caracteres

[-] los caracteres guin especfican un rango de caracteres

^ invierte el proceso de seleccin [oracle@demo1 ~]$ grep -i [^ora]$ demo1.env ORACLE_SID=demo1 ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1 # User specific environment and startup programs PATH=$ORACLE_HOME/bin:$PATH PATH=$HOME/bin:$PATH export PATH export ORACLE_SID export ORACLE_BASE export ORACLE_HOME

Para evitar problemas con la intepretacin de los caracteres especiales por medio del Shell, es mejor encerrar la expresin regular con comillas. [oracle@demo1 ~]$ grep -i demo1* /home/oracle demo1.env:ORACLE_SID=demo1 [oracle@demo1 ~]$ grep -i exp demo1.env export PATH export ORACLE_SID export ORACLE_BASE export ORACLE_HOME [oracle@demo1 ~]$ grep -in exp demo1.env 7:export PATH 8:export ORACLE_SID 9:export ORACLE_BASE 10:export ORACLE_HOME [oracle@demo1 ~]$ grep -inv exp demo1.env 1:ORACLE_SID=demo1 2:ORACLE_BASE=/u01/app/oracle 3:ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1 4:# User specific environment and startup programs 5:PATH=$ORACLE_HOME/bin:$PATH 6:PATH=$HOME/bin:$PATH 11: ******************************************** Modulo 12 Entubamientos ('Pipes') ******************************************** +Construir un entubamiento (pipeline) para tomar la salida de un comando y hacerla entrar en otro. +Usar los Filtros tee, cut, tr, more y pr. El Shell tiene la capacidad de ligar comandos por medio de Entubamientos('Pipelines'), demostrando la capacidad para filtrar el contenido de archivos. Con los Entubamientos se puede Filtrar la Salida de un Comando. Se usa Redireccionamiento de E/S para un filtrado extenso de la salida de comandos, donde se captura la salida de un comando hacia un Archivo Temporal, y filtrando el contenido del Archivo Temporal, el cual despus se tiene que vaciar o borrar.

Por lo tanto, los Entubamientos permiten transferir la Salida de un Comando a la Entrada de otro, sin tener que crear un Archivo Temporal. Es decir, se puede encadenar comando tras comando en una sola lnea de comando. Simbolo | Pipe para ligar, encadenar comandos Ejemplo: $ps -fea | more | sort -r $ls | more $ls| sort -r | more La stdout del comando ps -fe, ser usada como la stdin para el comando more. y s se utiliza un tercer que este en medio, tendra tanto stdin como stout.

Los comandos wc, sort, grep pueden aparecer en medio de un pipe $ps -fea | grep smon [oracle@demo1 ~]$ ps -fea | grep smon oracle 6943 1 0 08:43 ? 00:00:03 ora_smon_demo1 oracle 16743 6142 0 11:10 pts/2 00:00:00 grep smon El Comando more, es usado para desplegar el contenido de un archivo una pantalla a la vez. ste es capaz de leer stdin, por lo cual puede aparecer a la derecha de un pipe para generar una salida de cualquier comando que genere salida a la salida estandar. Entubamientos Versus Redireccionamiento de Entrada y Salida **El Redireccionamiento de Entrada y Salida siempre ser entre un Comando y un Archivo cmd_ent < archivo cmd_sal > archivo **Los entubamientos siempre sern usados para unir dos comandos. cmd_sal | cmd_emt $who > who.out $sort > who.out Redireccionamiento en un Entubamiento 3 FLujos de datos para cada Comando $grep ivega /etc/passwd | sort > sort.out Reglas: 1. Cualquier comando a la izquierda de un smbolo pipe, puede redireccionar Entrada y Errores, ya que su salida se pasa al siguiente comando en el entubamiento. 2. Cualquier comando a la derecha de un smbolo pipe, puede redireccionar Salida y Errores, ya que su Entrada viene del comando anterior.

3. Cualquier comando entre dos smbolos pipe, puede redireccionar Errores, ya que su Entrada viene del comando anterior y su Salida va al siguiente comando en el Entubamiento. Redireccionar la Salida al $grep oracle /etc/passwd $grep oracle /etc/passwd $grep oracle /etc/passwd Final del Entubamiento: | sort > sorted.users 2> grep.err | sort > sorted.users 2> sort.err | sort 2>sort.err | wc -l > wc.out 2> wc.err

Algunos Filtros cut ......Corta las columnas o campos especficados y despliega a stdout tr........Convierte caracteres tee......Pasa la salida a un archivo y a stdout pr.......Imprime y formatea la salida a stdout Estos comandos aceptan Entrada Estandar, de tal forma que pueden aparecer en el lado derecho como izquierdo de un Entubamiento.

Comando cut cut -clista [archivo ] Corta columnas de archivos o stdin cut -flista [-dcaracter] [-s][archivo] Corta campos (fields) de archivos stidn [oracle@demo1 ~]$ date | cut -c1-3 Sun tail -l /etc/passwd mailman:x:41:41:GNU Mailing List Manager:/usr/lib/mailman:/sbin/nologin mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash amanda:x:33:6:Amanda user:/var/lib/amanda:/bin/bash radiusd:x:95:95:radiusd user:/:/bin/false ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false radvd:x:75:75:radvd user:/:/sbin/nologin postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash fax:x:78:78:mgetty fax spool user:/var/spool/fax:/sbin/nologin gera:x:500:500:gerardo:/home/gera:/bin/bash oracle:x:501:200::/home/oracle:/bin/bash [oracle@demo1 ~]$ date | cut -c1-3 Sun [oracle@demo1 ~]$ cut -f1,6 -d: /etc/passwd root:/root bin:/bin daemon:/sbin adm:/var/adm lp:/var/spool/lpd sync:/sbin shutdown:/sbin halt:/sbin mail:/var/spool/mail uucp:/var/spool/uucp operator:/root

games:/usr/games gopher:/var/gopher nobody:/ dbus:/ vcsa:/dev rpm:/var/lib/rpm haldaemon:/ ident:/home/ident netdump:/var/crash nscd:/ sshd:/var/empty/sshd rpc:/ rpcuser:/var/lib/nfs nfsnobody:/var/lib/nfs mailnull:/var/spool/mqueue smmsp:/var/spool/mqueue pcap:/var/arpwatch apache:/var/www squid:/var/spool/squid webalizer:/var/www/usage xfs:/etc/X11/fs [oracle@demo1 ~]$ cut -f1,6 -d: /etc/passwd | sort adm:/var/adm amanda:/var/lib/amanda apache:/var/www bin:/bin canna:/var/lib/canna cyrus:/var/lib/imap daemon:/sbin dbus:/ dovecot:/usr/libexec/dovecot exim:/var/spool/exim fax:/var/spool/fax games:/usr/games gdm:/var/gdm gera:/home/gera gopher:/var/gopher haldaemon:/ La opcin -c es para cortar columnas y -f es para cortas campos. El comando cut puede aceptar su entrada de la Entrada Estandar o de un Archivo. Ya que ste acepta entrada estandar, puede aparecer en el lado derecho de un Pipe. Una lista es una secuencia de nmeros usada para decirle a cut cuales campos o columnas se desean. Es similar al comando sort, hay varios formatos permisibles para especificar la lista de campos o columnas: A-B Campos o columnas A al Binclusive. A- Campo o columna A hasta el final de la lnea -B Comienzo de la lnea hasta el campo o columna B

A,B Campos o columnas A y B Ejemplo: [oracle@demo1 ~]$ cut -f1, 3, 5-7 -d: /etc/passwd cut: 3,: No such file or directory cut: 5-7: No such file or directory root bin daemon adm lp sync shutdown halt mail news uucp operator games gopher ftp nobody dbus vcsa rpm haldaemon ident netdump nscd sshd rpc rpcuser nfsnobody mailnull smmsp pcap apache squid webalizer xfs ntp gdm pegasus htt named pvm canna wnn quagga cyrus dovecot exim postfix mailman

mysql El delimitador por defecto entre campos se especfica como el caracter Tab. S se necesita otro delimitador se puede hacer con -dcaracter, donde caracter es el caracter que separa los campos en su entrada. (Esta es muy similar a la opcin -tX del comando sort). Los dos puntos son un delimitador comn, ya que no tienen significado especial para el shell. As tambin, la opcion -s cuando se cortan campos, ingnorar las lneas que no tengan el delimitador, Usualmente, estas lneas no se les hace cambios. Ejemplos: [oracle@demo1 ~]$ cut -c1-3 12345 123 [oracle@demo1 ~]$ cut -c1-3 12345 123 abcdefgh abc 123 123 abc abc [oracle@demo1 ~]$ echo $(date) | cut -c1-3 Sun [oracle@demo1 ~]$ El Comando tr tr [-cs] [cadena1] [cadena2] Convierte caracteres Ejemplos: $who | tr -s " " $ $date | cut -c1-3 | tr "[[:lower]]" "[[:upper]]" El comando tee tee [-a] archivo [archivo...] Extrae del entubamiento Ejemplo: root@demo1 /]# who | sort root :0 Jul 3 16:30 root pts/1 Jul 3 16:32 (:0.0) [root@demo1 /]# who | tee desordenado | sort root :0 Jul 3 16:30 root pts/1 Jul 3 16:32 (:0.0) [root@demo1 /]# who | tee desordenado | sort | tee ordenado root :0 Jul 3 16:30 root pts/1 Jul 3 16:32 (:0.0) [root@demo1 /]# who | wc -l

2 [root@demo1 /]# who | wc -l 2 [root@demo1 /]# who | tee whoson | wc -l 2 Se usa para extraer de un Entubamiento. tee lee de la Entrada y escribe su salida a la Salida Estndar y al archivo especficado. Si se usa la opcin -a, entonces tee agrega su Salida al Archivo en lugar de Sobre-escribirlo. El comando tee se usa predominantemente bajo dos circunstancias: 1.Almacenar la Salida Intermedia en un Entubamiento: Cuando usted coloca un tee en medio de un entubamiento, usted puede capturar el procesamiento intermedio, sin embargo, la salida pasa al siguiente comando en el entubamiento. 2.Enviar la Salida Final de un comando a la pantalla y a un archivo Esto es til para llevar bitacoras. El comando pr pr [-opcion] [archivo...] Formatea stdin y produce stdout Ejemplos: [root@demo1 /]# pr -n3 funfile pr: funfile: No such file or directory [root@demo1 /]# pr -n3 funfile | more pr: funfile: No such file or directory [root@demo1 /]# ls | pr -3

2011-07-03 16:44

Page 1

bin boot demo demo2 desordenado desordenado1 dev etc home inicio

initrd lib lost+found media misc mnt opt ordenado proc root

sbin selinux srv sys tftpboot tmp u01 usr var

[root@demo1 /]# grep oracle /etc/passwd | pr -h "Cuentas de Usuario"

2011-07-03 16:46

Cuentas de Usuario

Page 1

oracle:x:501:200::/home/oracle:/bin/bash

prsignifica Imprime a Salida Estndar: es usado para formatear el flujo de datos de la Entrada Estndar o el contenido de archivos especficados. El comando pr es til para imprimir archivos grandes, ya que se insertar un Encabezado en la parte Superior de cada Pgina nueva que incluye el nombre del archivo (o encabezado especificado con la opcin -h) y el nmero de la pgina. El comando pr soporta varias opciones: Por ejemplo: -k Produce una Salida de k-columnas (por defecto es 1) -a Produce una salida multi-columna; usada con -k -t Remueve el encabezado y el final -d Salidda a doble espacio -wN Fija el ancho de una lnea a N caracteres -1N Fija la longitud de una Pgina a N lneas -nCK Produce una numeracin de lneas de K-digitos, separada de la lnea por el caracter C. Por defecto C es Tab. -oN Desplaza la salida N columnas desde el margen izquierdo. -p Hace pausa y espera Enter antes de cada pgina. -h Usa la cadena siguiente como el texto del encabezado. Imprimiendo desde un Entubamiento ...| lp Ubicado al final de un Entubamiento; envial la salida a la Impresora.

[root@demo1 /]# pr -158 inicio | lp pr: page width too narrow lp: error - no default destination available. [root@demo1 /]# pr -158 inicio | lp pr: page width too narrow lp: error - no default destination available. [root@demo1 /]# grep oracle /etc/passwd | pr -h "Cuentas De Usuarios"

2011-07-03 17:00

Cuentas De Usuarios

Page 1

oracle:x:501:200::/home/oracle:/bin/bash

El comando pr es usado para encolar un trabajo para la impresora. Usted enva un trabajo especificando un nombre de archivo como un argumento para lp. El comando lp tamben acepta entrada estandar, as usted puede entubar el comando lp tambin. Esto permite que la salida de cualquier comando que genere salida estndar, sea impresa. Entubamientos -Resumen Entubamiento cmd_sal | cmd_ent cmd_sal | cmd_ent_sal | cmd_ent cut Corta columnas o campos a la salida estndar

tee Enva entrada a la Salida Estandar y a un archivo especficado pr Formatea la impresin en pantalla, usado comunmente con lp tr Convierte caracteres.??? Modulo 13 -Control de Procesos ---------------------------------*Usar el comando ps *Iniciar un Proceso que corra en Segundo Plano (background) *Monitorear los procesos que estn corriendo con el comando ps *Iniciar un proceso en segundo plano que inmune a la seal colgar (log off) *Traer un proceso del Segundo Plano al primer plano (foreground) *Suspender un proceso *Detener procesos que estn corriendo envindoles seales. Sintaxis ps [-efl] Reporta el estado del proceso Cada proceso iniciado en el sistema se le asigna un nmero de identificacin nico, conocido como un Identificador de Proceso PID-process id. El comando ps despliega la informacin de los procesos que estn corriendo o durmiendo en el sistema, incluyendo el PID de cada proceso y el PID del padre de cada proceso PPID. Por medio de los nmeros PID y PPID, usted puede seguir el linaje de cada proceso que est corriendo. El comando ps reportar quin es el propietario de cada proceso y en cul Terminal se est ejecutando cada proceso. El comando ps se invoca comunmente sin opciones, lo cual da un reporte corto de los procesos asociados con su Terminal. [root@demo1 /]# ps PID TTY TIME CMD 6684 pts/1 00:00:00 bash 7956 pts/1 00:00:00 ps ps -eReporta cada proceso que est corriendo en su sistema no slo los suyos [root@demo1 /]# ps -e PID TTY TIME CMD 1? 00:00:00 init 2? 00:00:00 migration/0 3? 00:00:00 ksoftirqd/0 4? 00:00:00 events/0 5? 00:00:00 khelper 6? 00:00:00 kacpid 87 ? 00:00:00 kblockd/0 88 ? 00:00:00 khubd 105 ? 00:00:00 pdflush 106 ? 00:00:00 pdflush 108 ? 00:00:00 aio/0 107 ? 00:00:00 kswapd0 254 ? 00:00:00 kseriod 374 ? 00:00:00 scsi_eh_0 390 ? 00:00:00 kjournald 1821 ? 00:00:00 udevd

2782 2849 2854 2875 3298 3302 3325 3345 3374 3445 3591 3751 3782 3841 3856 3875 3883 3894 3925 3926 3951 3964 4002 4021 4040 4053 4064 4074 4075 4076 4165 4226 4273 4316 4446 4469 5889 5908 5951 5954 5955 5959 5962 5964 5966 5972 6018 6022 6024 6026 6028 6030 6032 6034 6037

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tty1 tty2 tty3 tty4 tty5 tty6 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

00:00:00 kauditd 00:00:00 kmpathd/0 00:00:00 kmirrord 00:00:00 vmhgfs 00:00:00 syslogd 00:00:00 klogd 00:00:00 portmap 00:00:00 rpc.statd 00:00:00 rpc.idmapd 00:00:00 vmmemctl 00:00:02 vmware-guestd 00:00:00 acpid 00:00:00 cupsd 00:00:00 sshd 00:00:00 xinetd 00:00:00 sendmail 00:00:00 sendmail 00:00:00 gpm 00:00:00 htt 00:00:00 htt_server 00:00:00 cannaserver 00:00:00 crond 00:00:00 xfs 00:00:00 atd 00:00:00 dbus-daemon-1 00:00:00 cups-config-dae 00:00:04 hald 00:00:00 mingetty 00:00:00 mingetty 00:00:00 mingetty 00:00:00 mingetty 00:00:00 mingetty 00:00:00 mingetty 00:00:00 gdm-binary 00:00:00 gdm-binary 00:00:59 X 00:00:00 gnome-session 00:00:00 Xsession <defunct> 00:00:00 ssh-agent 00:00:00 dbus-launch 00:00:00 dbus-daemon-1 00:00:01 gconfd-2 00:00:00 gnome-keyring-d 00:00:00 bonobo-activati 00:00:00 gnome-settings00:00:00 gam_server 00:00:00 metacity 00:00:05 vmware-user 00:00:01 gnome-panel 00:00:01 nautilus 00:00:00 gnome-volume-ma 00:00:00 eggcups 00:00:00 pam-panel-icon 00:00:20 rhn-applet-gui 00:00:00 pam_timestamp_c

6048 6215 6638 6640 6642 6644 6672 6683 6684 7970

? ? ? ? ? ? ? ? pts/1 pts/1

00:00:00 gnome-vfs-daemo 00:00:00 mapping-daemon 00:00:00 wnck-applet 00:00:00 clock-applet 00:00:00 mixer_applet2 00:00:00 notification-ar 00:00:06 gnome-terminal 00:00:00 gnome-pty-helpe 00:00:00 bash 00:00:00 ps

ps -flReportan listados full y long que incluyen detalles adicionales li Procesamiento en el Segundo Plano (Background) lnea de comando > cmd.sal & *Programa la lnea de comando para que corra una tarea en el Segundo Plano (Background) *El prompt regresa tan pronto como la tarea se inicia *Redirecciona la salida del comando programado, de tal forma que la salida del comando no interfiera con comandos interactivos, con lo cual se tiene que obtener la Entrada de un Archivo. *El salir de la mquina (logout) terminar los procesos que estn corriendo en el Segundo Plano. Algunos comandos toman un tiempo muy grande para terminar con lo cual hay que correrlos en Segundo Plano, UNIX permite la ejecucin del programa. Para solicitar que un comando corra en segundo plano, termine la lnea de comando con un Ampersand. Cuando un comando es puesto en segundo plano, el shel reportar el nmero de tarea y PID de segundo plano, s se activa la opcin monitor con set (set -o monitor). La opcin monitor causar tambin que se despliegue un mensaje cuando termine el proceso del Segundo Plano: [1]+Done grep user * >> grep.out Ya que un comando que est corriendo en el Segundo Plano est desconectado del teclado, usted puede detener el comando con la tecla de interrupcin Ctrl + c. Los comandos del Segundo Plano pueden terminarse con el comando kill o saliendo del sistema (log out). Nota: Un proceso en Segundo Plano debe tener todas sus Entradas y Salidas redireccionadas explicitamente.

Colocado de Tareas en el Segundo/Primer Plano jobs Despliega las tareas corriendo actualmente Ctrl + z Suspende una tarea corriendo en el primer plano stty susp ^Z

fg %numero Trae la tarea nmero al primer plano plano ('foreground') bg %numero Transfiere la tarea nmero al segundo plano plano ('background') Elcaracter de suspensin se indica comunmente al entrar al sistema por medio del archivo .profile

Ejemplo: $jobs $fg %nmero $bg %nmero Comando nohup nohup lnea de comando & Impide que el comando termine automticamente al salirse del Servidor/Sistema Unix(logout- 'nohangup') Ejemplo: $nohup cat* > archivogrande & [1] 972 $Ctrl + d Enter login: ivega Password: . . . $ps -fea grep cat PID PPID COMMAND 972 1 cat * > bigfile... Nohup, hace que los comandos sean inmunes a suspenderse despus de desloguearse del sistema (es un comando prefijo). Cuando un comando del 2 Plano se hace inmune a suspender con nohup, usted puede salir y el sistema UNIX completar la ejecucin de su proceso an cuando el shell padre del programa ya no este corriendo. El proceso es adoptado por el proceso 1 (init), donde el usuario normalmente redirecciona el resultado a un archivo de salida.Nohup redireccionar automticamente la salida a un archivo llamado nohup.out en el directorio actual o en el directorio $HOME. Acumula tanto stdout como stderr. Comando nice nice [-N] lnea_de_comandoCorre un proceso con una paridad menor. N es un nmero entre 1 y 19. El increment por defecto es 10. Un proceso con valor nice alto tendr una prioridad del sistema relativamente baja. Ejemplo: $nice -10 cc miprog.c -o miprog $nice -5 sort * > sort.out

El comando nice, es otro comando prefijo q le permite ejecutar un programa con una prioridad menor. Esto es til cuando se usan comandos cuya terminacin no ser requiere immediatamente, tal como formatear todas las pginas del manual. Se puede ver la prioridad de procesos con el comandops -l.Las prioridades se despliegan bajo la columna con el encabezado PRI.Las de valor mayor tendrn un valor de Prioridad Menor. El valor del nice se despliega bajo la columna con el encabezado NI. ps FS 0S 4S 0R -l UID PID PPID C PRI 501 21363 24313 0 501 26234 26233 0 501 27308 26234 0

NI 76 75 78

ADDR SZ WCHAN TTY TIME CMD 0 - 1552 wait pts/3 00:00:04 bas 0 - 1336 wait pts/3 00:00:00 bas 0 - 884 pts/3 00:00:00 ps

Comando kill kill [-s nombre_seal/] PID [PID...] Envia una seal a procesos especificados. Ejemplo: $cat /usr/man/man1/* > bigfile1 & [1]995 $cat /usr/man/man2/* > bigfile2 & [2]996 $kill 995 [1] -Terminated cat /usr/man/man1/* > bigfile1 $kill -s INT %2 [2] + Interrupt cat /usr/man/man1/* > bigfile2 $kill -s KILL 0 El comando kill puede ser usado para terminar cualquier comando incluyendo comandos nohup y de segundo plano. El emisor del comando kill debe ser el propietario de los comandos destino; kill no puede ser usado para cancelar comandos de otro usuario a menos que el kill sea enviado por el Superusuario. Lo ms cercano a una cancelacin segura que proporciona UNIX es la seal KILL -9 Para cancelar un proceso, se especfica el identificador del proceso o el nmero de tarea. Cuando se especfica el nmero de tarea, ste debe tener el caracter % como prefijo. Si el proceso especificado es 0, entonces kill termina todos los procesos asociados con el shell actual, incluyendo el shell actual. El comando kill -l, escribir todos los valores de nombre_seal soportados por el shell. NULL HUP Seal nula. Seal de colgar.

INT Interrupcin QUIT Salir ILL Instruccin ilegal (no rescatable cuando es tomada) TRAP Trampa de seguimiento (no restablece cuando es tomada) ABRT Seal para abortar el proceso. EMT Instrucci EMT FPE Excepcin de punto de flotante. KILL Cancelar (no se le puede colocar una trampa o ser ignorada) BUS Error de bus SEGV Violacin de Segmento SYS Argumento mal para la llamada al sistema PIPE Escritura en un entubamiento que nadie lee ALRM Relog de alarma TERM Seal de terminacin por software desde kill USR1 Seal 1 definida por el usuario USR2 Seal 2 definida por el usuario CHLD Proceso hijo terminado o detenido PWR Indicacin del estado de la alimentacin VTALRM Alarma de temporizador virtual PROF Alarma de temporizador de profile POLL Para la seal de hpstreams de HP-UX WINCH Seal de cambio tamao de ventana STOP Seal para detener(no se le puede colocar una trampa o ser ignorada) TSTP Seal interactiva para detener CONT Continua si es detenido TTIN Lectura de la terminal de control intentada por un miembro de un grupo de procesos del segundo plano. CONT Continua si es detenido TTOU Escritura a la terminal de control intentada por un miembro de un grupo de procesos del segundo plano URG Condicin de urgente en canal de E/S LOST Candado remoto perdido(NFS) Comando hostname hostname Reporta el nombre de su computador en la Red [root@demo1 /]# hostname demo1.itss.com [root@demo1 /]# more /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.220 demo1.itss.com demo1 Su computadora tiene un nombre (hostname). Este es el nombre que identifica a su sistema en la LAN. Si ustede desea comunicarse con otra computadora de la LAN debe conocer su hostname. Usted puede hacer esto solo preguntando al administrador de la otra computadora cul es su hostname. Comando telnet

telnet hostname ---Servicio de ARPA para entrar remotamente a otra computadora.

*El comando telnet, es la facilidad para un login remoto de los Servicios ARPA. *Se requiere el Nombre de Usuario y Password. *Puede correr comandos de shell o programas, incluso usar la impresora de la computadora remota. *Todo el trabajo que se hace es en la computadora remota (es ms lento). *La computador Local solo est pasando la informacin "x" de su Terminal por medio de la LAN. *Para cerrar una conexin de telnet, simplemente salgase (lgoout) de la computadora remota usando Ctrl+d y Enter o el comando Exit. Comando ftp ftp hostname Servicio de ARPA para copiar archivos de/hacia una computadora remota. Comandos de ftp: get: Trae un archivo de la computadora remota. put: Enva un archivo local a la computadora remota. ls: Lista los archivos de la computadora remota ?: Lista todos los comandos ftp. quit: Sale de ftp 1 2 3 4 Se debe especficar el nombre de usuario y password en el sistema remoto. Ser conectado al hostname Aparece el prompt ftp> Ingresar cualquiera de los siguientes comandos get rararchivo larchivo Trae un archivo de la computadora remota (origen) a la local(destino). Usar trayectorias completas como nombres de archivos. put rararchivo larchivo Enva un archivo local(origen) a la computadora remota (destino). ls: Lista los archivos de la computadora remota ?: Lista todos los comandos ftp. help comando Despliega una breve (muy breve) mensaje de ayuda. quit: Sale o Desconecta su computadora Local de la Computadora Remota y termina ftp Lo primero que se observa es que ftp es muy informativo. Tiene una respuesta para cada comando que usted escriba ********************************************************* * Modulo 14 ---Introduccin a la Programacin en Shell * ********************************************************* 1.Escribir programas bsicos en shell 2.Pasar argumentos a programas en shell a travs de variables de ambiente 3.Pasar argumentos a programas en shell a travs de los parmetros posicionales. 4.Usar las variables especiales de shell, *, y # 5.Usar los comando shift y read Panorama de la Programacin en Shell

*Un programa en un Shell o un Shell Script , es un archivo regular que contiene comandos del sistema UNIX. *Los permisos de archivos deben ser al menos de Lectura y Ejecucin. *Para ejecutarlo, escriba el nombre el prompt del shell. *Los datos se pueden pasar a un programa en shell por medio de: -Variables de ambiente -Argumentos de la lnea de comando -Entrada del usuario El shell es un interprete de comandos, y proporciona la capacidad de almacenar estos comandos en un archivo y ejecutar este archivo como cualquier otro programa proporcionado con su sistema UNIX. Para que el shell pueda encontrar el programa, se debe introducir la trayectoria completa del programa, o el programa debe residir en uno de los directorios indicados en su variable PATH. Varios usuarios crearan un directorio bin bajo su directorio HOME para almacenar sus scripts de shell $HOME/bin, e incluirlo en su variable PATH. Ejemplo: $cat miprog #este es el programa miprog date ls -F $miprog Para crear y correr un programa en shell, considere lo siguiente: [oracle@itss ~]$ vi miprog.sh date cal ls -F :wq [oracle@itss ~]$ chmod 777 miprog.sh [oracle@itss ~]$ ll miprog.sh -rwxrwxrwx 1 oracle oinstall 43 Jul 31 10:30 miprog.sh [oracle@itss ~]$ ./miprog.sh Sun Jul 31 10:36:59 CDT 2011 July 2011 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 bigfile1 dead.letter Desktop/ itss.env miprog.sh* nohup.out [oracle@itss ~]$ ./miprog Sun Jul 31 10:37:47 CDT 2011 July 2011 Su Mo Tu We Th Fr Sa

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 bigfile1 dead.letter Desktop/ itss.env miprog* nohup.out Cuando es ejecutado el programa en shell miprog, es creado un proceso shell hijo. Se recomienda incluir comentarios en el Shell Script que identifiquen y clarifiquen el contenido de su programa. Nunca debe llamar un programa shell test, porque es un comando interno de shell. Pasando Datos a un Programa en Shell $color=lavanda $cat color1 echo You are now running program: color1 echo the value of the variable color is: $color $chmod +x color1 $color1 You are now running program: color1 the value of the variable color is: $export color $color1 You are now running program: color1 the value of the variable color is: lavanda Una forma de pasar datos a un programa en shell es a travs del ambiente. En el ejemplo de la lamina, a la variable local color se le asigna el valor lavanda. Despus de que el programa en shell color1 es creados; sus permisos son cambiados para incluir permiso de ejecucin; entonces este es ejecutado color1 intenta hacer eco de la variable color. Sin embargo, ya que color es una variable local que es privada al shell padre, el shell hijo corriendo color1 no reconoce la variable, y por lo tanto no puede imprimir su valor. Cuando color es exportada al ambiente, entonces es accesible a los caomandos del programa en shell corriendo en el shell hijo. As tambin, ya que un proceso hijo no puede cambiar el ambiente de su proceso padre, re-asignar el valor de una variable de ambiente en un shell hijo no afectar el valor de esa variable en el ambiente del padre. Considere el siguiente shell script, color2, el cual se encuentra en su directorio HOME: [oracle@itss ~]$ vi color2 [oracle@itss ~]$ cat color2 echo The original value of the variable color is $color echo This program will set the value of color to amber

color=amber echo The value of color is now $color echo When your program concludes, display value of the color variable [oracle@itss ~]$ export color=lavanda [oracle@itss ~]$ echo $color lavanda [oracle@itss ~]$ chmod 777 color2 [oracle@itss ~]$ ./color2 The original value of the variable color is lavanda This program will set the value of color to amber The value of color is now amber When your program concludes, display value of the color variable [oracle@itss ~]$ echo $color lavanda Encontrar un Archivo desde root / $find . -name name_archive -print 2>/dev/null Configurar el . Profile vi . profile metes variables para asegurar seteas tu variable. Comprime un archivo gzip nombre_archivo --genera un *zip. Formato set echo on set time on set timi on !date Ejecutar scripts de SQL @gera.sql

Apuntar hacia la BD echo $ORACLE_SID Consultar el Listener de la(s) BD ps -fea |grep tns Iniciar/Parar/Status del Listener lsnrctl start/stop/status LISTENER Iniciar/Parar/Status del Enterprise Manager emctl start/stop/status dbconsole Conectarse a SQL*PLUS

sqlplus "/as sysdba" sqlplus / as sysdba sqlplus system/oracle@ITSS

Anda mungkin juga menyukai