Sei sulla pagina 1di 10

Versin traducida de 10 good UNIX habits.

pdf
Pgina 1 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 1 de 9 24/04/2007 15:27 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX Mala suerte patrones de uso de UNIX Nivel: Intermedio Michael Stutz (stutz@dsl.org), autor, consultor 12 de diciembre 2006 10 Adoptar buenos hbitos que mejoren su comando de UNIX eficiencia de la lnea - y romper con malos los patrones de uso en el proceso. Este artculo le gua paso a paso a travs de varios buenos, pero a menudo tambin descuidados, las tcnicas para las operaciones de lnea de comandos. Aprenda acerca de los errores comunes y cmo superar a ellos, para que usted pueda aprender exactamente por qu estos hbitos UNIX vale la pena recoger. Introduccin Cuando se utiliza un sistema a menudo, se tiende a caer en los patrones de uso conjunto. A veces, no iniciar el hbito de hacer cosas de la mejor manera posible. A veces, incluso recoger las malas prcticas que conducen a la confusin y torpeza. Uno de los las mejores maneras para corregir esas deficiencias es tomar conciencia a los buenos hbitos que luchar contra ellos. En este artculo sugiere 10 UNIX de lnea de comandos hbitos vale la pena recoger - los buenos hbitos que le ayuden a romper muchos de uso comn debilidades y hacer ms productivo en la lnea de comandos en el proceso. Cada hbito se describe con ms detalle siguiente de la lista de los buenos hbitos. 10 Adoptar buenos hbitos Diez buenos hbitos a adoptar son las siguientes: Que los rboles de directorios en un solo golpe. 1. Cambiar la ruta, no se mueva el archivo. 2. Combine los comandos con los operadores de control. 3. Cita las variables con precaucin. 4. Use las secuencias de escape para la gestin de entrada en largo. 5. Grupo de los comandos juntos en una lista. 6. Xargs uso fuera de encontrar. 7. Saber cundo debe hacer el grep contar - y cundo debe hacerse a un lado. 8. Coinciden con ciertos campos de la produccin, no slo a las lneas. 9.

Dejar de gatos de la tubera. 10. Que los rboles de directorios en un solo golpe Listado 1 ilustra uno de los ms comunes los hbitos de UNIX mal en torno a: la definicin de los rboles de directorios uno a la vez. Listado 1. Ejemplo de mal hbito # 1: Definicin de los rboles de directorios de forma individual $ Tmp mkdir $ Cd tmp / Tmp $ mkdir una / Tmp $ cd uno / Tmp / a, b $ mkdir / Tmp / a, b $ cd / Tmp / a / b / c $ mkdir / Tmp / a / b / c $ cd / Tmp / a / b / c $ Es mucho ms rpido de usar la opcin-p de mkdir y hacer que todos los directorios de los padres junto con sus hijos en un Pgina 2 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 2 de 9 24/04/2007 15:27 solo comando. Pero incluso los administradores que saben acerca de esta opcin estn todava atrapados pasando a travs de la subdirectorios, ya que ellos hacen en la lnea de comandos. Vale la pena su tiempo para elegir a conciencia el buen hbito: Listado 2. Ejemplo de buen hbito # 1: Definicin de los rboles de directorios con un solo comando $ Tmp mkdir-p / a / b / c Puede utilizar esta opcin para que todo los rboles de directorios complejos, que son excelentes para usar secuencias de comandos en el interior, no slo simples jerarquas. Por ejemplo: Listado 3. Otro ejemplo de buen hbito # 1: Definicin de los rboles de directorios complejos con un solo comando $ Mkdir-p proyecto / {lib / ext, bin, src, doc / {html, info, pdf}, demo / stat / a} En el pasado, la nica excusa para definir los directorios de forma individual fue que su implementacin mkdir no apoyaron esta opcin, pero esto ya no es cierto en la mayora de los sistemas. IBM, AIX , mkdir, mkdir GNU, y otras que se ajustan a la Single Unix Specification ahora tienen esta opcin. Para los pocos sistemas que an carecen de la capacidad, utilice el script mkdirhier (ver Recursos), que es un contenedor para mkdir que hace la misma funcin: $ Mkdirhier proyecto / {lib / ext, bin, src, doc / {html, info, pdf}, demo / stat / a} Cambiar la ruta, no se mueva el archivo Otro patrn de mal uso se est moviendo un archivo. Archivo tar en un directorio determinado, ya que pasa a ser el directorio quiere extraer pulg Usted nunca tiene que hacer esto. Puedes descomprimir cualquier archivo tar en un directorio que te gusta -. Que es lo que la opcin-C es para el. Use la opcin-C, al desempaquetar un archivo para especificar el directorio para descomprimirlo en:

Listado 4. Ejemplo de buen hbito # 2: Uso de la opcin-C para descomprimir un archivo tar archivo. $ Tar xvf-C tmp / a / b / c newarc.tar.gz Hacer un hbito de usar-C es preferible a mover el archivo en donde desee que descomprimir, cambiar a la directorio, y slo entonces la extraccin de su contenido - especialmente si el archivo pertenece a otra parte. Combine los comandos con los operadores de control Usted probablemente ya sabe que en la mayora de los depsitos, se pueden combinar comandos en una sola lnea de comandos mediante la colocacin de un punto y coma (;) entre ellos. El punto y coma es un operador de control de concha, y si bien es til para encadenar varios comandos discretos en una sola lnea de comandos, no funciona para todo. Por ejemplo, suponga que utiliza un punto y coma para combinar dos comandos en el que la correcta ejecucin de la segunda orden depende enteramente la finalizacin con xito de la primera. Si el primer comando no sale como esperaba, el segundo mandato an funciona - y falla. En su lugar, utilice los operadores de control ms apropiado (algunas se describen en este artculo). Siempre y cuando su shell los apoya, que vale la pena entrar en el hbito de usarlas. Ejecutar un comando slo si otro comando devuelve un estado de salida cero Use el operador & & de control para combinar dos comandos para que el segundo slo se ejecuta si el primer comando devuelve un cero la salida de estado. En otras palabras, si el primer comando se ejecuta correctamente, el segundo comando se ejecuta. Si el primer comando Pgina 3 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 3 de 9 24/04/2007 15:27 falla, el segundo comando no funciona en absoluto. Por ejemplo: Listado 5. Ejemplo de buen hbito # 3: La combinacin de los comandos con los operadores de control $ Cd tmp / a / b / c & & tar xvf / archivo.tar En este ejemplo, el contenido de los archivos se extraen en el directorio / tmp / a / b / c del directorio a menos que el directorio no existe. Si el directorio no existe, el comando tar no funciona, as que nada se extrae. Ejecutar un comando slo si otro comando devuelve un cdigo de salida distinto de cero Del mismo modo, el operador | | de control que separa dos comandos y se ejecuta el segundo comando slo si el primer comando devuelve un estado de salida distinto de cero. En otras palabras, si el primer comando tiene xito, el segundo comando no se ejecuta. Si el primer comando falla, el segundo comando se ejecuta. Este operador se utiliza a menudo cuando las pruebas de si un determinado directorio existe y, si no, se crea un: Listado 6. Otro ejemplo de buen hbito # 3: La combinacin de los comandos con los operadores de control $ Cd tmp / a / b / c | | mkdir-p tmp / a / b / c Tambin se pueden combinar los operadores de control que se describe en esta seccin. Cada uno trabaja en la carrera el ltimo comando: Listado 7. Un ejemplo de combinacin de buen hbito # 3: La combinacin de los comandos con los operadores de control $ Cd tmp / a / b / c | | mkdir-p tmp / a / b / c & & tar xvf-C tmp / a / b / c / archivo.tar Variables de presupuesto con precaucin

Siempre tenga cuidado con la expansin de la shell y los nombres de variable. Por lo general, una buena idea incluir las llamadas variables en dobles comillas, a menos que tenga una buena razn para no hacerlo. Del mismo modo, si usted es inmediatamente despus de un nombre de variable con texto alfanumrico, asegrese de incluir tambin el nombre de la variable de llaves ({}) para distinguirla de la texto que lo rodea. De lo contrario, el shell interpreta el texto final como parte de su nombre de la variable - y lo ms probable devuelve un valor nulo. Listado 8 proporciona ejemplos de la cita de diversos y no cotizacin de las variables y sus efectos. Listado 8. Ejemplo de buen hbito # 4: Citando a (y no citar) una variable $ Ls / tmp ab $ VAR = "tmp / *" $ Echo $ VAR tmp / a tmp / b $ Echo "$ VAR" tmp / * VARA $ echo $ $ Echo "$ vara" $ Echo "$ {VAR} una" tmp / * a $ Echo $ {VAR} una tmp / a $ Pgina 4 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 4 de 9 24/04/2007 15:27 Utilice secuencias de escape para la gestin de entrada en largo Usted probablemente ha visto ejemplos de cdigo en el que una barra invertida (\) sigue una larga lnea a la lnea siguiente, y Sabemos que la mayora de los proyectiles tratar lo que se escribe a travs de lneas sucesivas unidas por una barra invertida como una lnea larga. Sin embargo, no puede tomar ventaja de esta funcin en la lnea de comandos con la frecuencia que pueda. La barra invertida es especialmente til Si el terminal no se ocupa de varias lneas envolver adecuadamente o cuando la lnea de comandos es ms pequeo de lo habitual (por ejemplo, como cuando se tiene un largo camino en el sistema). La barra invertida es tambin til para dar sentido a las lneas de entrada siempre y cuando tipo de ellos, como en el ejemplo siguiente: Listado 9. Ejemplo de buen hbito # 5: El uso de una barra invertida para la entrada de largo $ Cd tmp / a / b / c | | \ > Mkdir-p tmp / a / b / c & & \ > Tar xvf-C tmp / a / b / c / archivo.tar Por otra parte, la siguiente configuracin tambin funciona: Listado 10. Ejemplo alternativo de buen hbito # 5: El uso de una barra invertida para la entrada de tiempo $ Tmp cd / a / b / c \

> ||\ > Mkdir-p tmp / a / b / \ c > &&\ > Tar xvf-C tmp / a / b / c / archivo.tar Sin embargo se divide una lnea de entrada en varias lneas, el shell siempre lo trata como una lnea continua, ya que siempre elimina todos los barras y espacios adicionales. Nota: En la mayora de los proyectiles, al pulsar la tecla de flecha arriba, todo el multi-lnea de entrada se vuelve a dibujar en una sola entrada, de largo la lnea. Grupo de los comandos juntos en una lista La mayora de conchas tienen maneras de agrupar un conjunto de comandos juntos en una lista para que usted pueda pasar su suma total de salida por un tubera u otro medio redirigir cualquiera de sus corrientes hacia el mismo lugar. En general, usted puede hacer esto mediante la ejecucin de una lista de comandos en un subshell o mediante la ejecucin de una lista de comandos en el shell actual. Ejecutar una lista de comandos en un subshell Use parntesis para escribir una lista de comandos en un solo grupo. Si lo hace, ejecuta los comandos en un subshell nuevo le permite redirigir o cualquier forma de recolectar la salida del conjunto, como en el ejemplo siguiente: Listado 11. Ejemplo de buen hbito # 6: Ejecucin de una lista de comandos en un subshell $ (Cd tmp / a / b / c / | | mkdir-p tmp / a / b / c & & \ > Var = $ PWD; cd; tar xvf-C $ VAR archivo.tar) \ > | Mailx admin-S "Archivo de contenidos" En este ejemplo, el contenido del archivo se extrae en el directorio / tmp a / b / c / directorio, mientras que la salida de los agrupados Pgina 5 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 5 de 9 24/04/2007 15:27 comandos, incluyendo una lista de los archivos extrados, es enviada a la direccin de correo. El uso de un subshell es preferible en los casos en que estn redefiniendo las variables de entorno en la lista de comandos y usted no quiere esas definiciones para aplicar a su shell actual. Ejecutar una lista de comandos en el shell actual Utilice llaves ({}) para incluir una lista de comandos para ejecutar en el shell actual. Asegrese de incluir espacios entre las llaves y los comandos reales, o el shell no puede interpretar correctamente las llaves. Adems, asegrese de que la final comando en la lista termina con un punto y coma, como en el ejemplo siguiente: Listado 12. Otro ejemplo de buen hbito # 6: Ejecucin de una lista de comandos en el shell actual $ {Cp $ {VAR} una. & & Chown-R guest.guest a & \ > Tar cvf newarchive.tar a;} | mailx admin-S "Nuevo archivo" Xargs uso fuera de encontrar Utilice la herramienta xargs como un filtro para hacer un buen uso de la produccin extradas de el comando find. El precepto general

una carrera que encontrar una lista de archivos que coinciden con algunos criterios. Esta lista se pasa a xargs, que luego ejecuta algunos otro comando til con la lista de archivos como argumentos, como en el ejemplo siguiente: Listado 13. Ejemplo del uso clsico de la herramienta xargs $ Find algunos archivos de los criterios de algunos-file-path |\ > Xargs algunos-grande-de comandos que las necesidades de nombre de archivo, los argumentos Sin embargo, no creo que de xargs slo como una ayuda para encontrar, es una de esas herramientas subutilizadas que, cuando llegue en el hbito de su uso, quiere probar en todo, incluyendo los siguientes usos. Pasar una lista delimitada por espacios En su forma ms simple invocacin, xargs es como un filtro que toma como entrada una lista (con todos los miembros en una sola lnea). La herramienta pone a los miembros en un solo espacio delimitado por la lnea: Listado 14. Ejemplo de salida de la herramienta de xargs $ Xargs un b c Control-D abc $ Usted puede enviar la salida de cualquier herramienta que las salidas de los nombres de archivos a travs de xargs para obtener una lista de argumentos a favor de algn otro herramienta que tiene los nombres de archivo como argumento, como en el ejemplo siguiente: Listado 15. Ejemplo del uso de la herramienta xargs / Tmp $ ls -1 | xargs December_Report.pdf README un mkdirhier.sh archivo.tar Pgina 6 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 6 de 9 24/04/2007 15:27 / Tmp $ ls -1 | xargs archivo December_Report.pdf: Documento PDF, versin 1.3 README: texto ASCII a: directorio archivo.tar: POSIX tar archive mkdirhier.sh: Bourne shell script ejecutable de texto / Tmp $ El comando xargs es til para ms que pasar los nombres de archivo. Utilcelo cada vez que necesite para filtrar el texto en una sola lnea: Listado 16. Ejemplo de buen hbito # 7: Uso de la herramienta xargs para filtrar el texto en una sola lnea / Tmp $ ls-l | xargs -Rw-r - r - 7 joe joe 12043 27 de enero 20:36 December_Report.pdf-rw-r - r - 1 \ root root 238 03 de diciembre 08:19 README drwxr-xr-x 38 joe joe 354082 02 de noviembre \

16:07 A-rw-r - r - 3 joe joe 14 de diciembre 5096 14:26 archivo.tar-rwxr-xr-x 1 \ joe joe 30 de septiembre 3239 12:40 mkdirhier.sh / Tmp $ Sea cauteloso con xargs Tcnicamente, una situacin rara que ocurre en la que podra meterse en problemas con xargs. De manera predeterminada, la cadena de fin de archivo Es un guin bajo (_), y si ese carcter se enva como un argumento de entrada nica, despus de todo lo que se ignora. Como medida de precaucin en contra de ello, utilice el e-bandera, que, sin argumentos, se apaga la cadena de fin de archivo completo. Saber cundo debe hacer el grep contar - y cundo debe hacerse a un lado Evitar una tubera a grep wc-l con el fin de contar el nmero de lneas de produccin. La opcin-c para grep da un recuento de las lneas que coincidan con el patrn especificado y es generalmente ms rpido que una pipa de aseo, como en el ejemplo siguiente: Listado 17. Ejemplo de buen hbito # 8: Contar con lneas y sin grep $ Grep tiempo y / tmp a / longfile.txt | wc-l 2811 0m0.097s reales 0m0.006s usuario sistema 0m0.032s $ Grep-c el tiempo y / tmp a / longfile.txt 2811 0m0.013s reales 0m0.006s usuario sistema 0m0.005s $ Una adicin al factor de la velocidad, la opcin-c es tambin una forma mejor de hacer el recuento. Con mltiples archivos, con grep la opcin-c devuelve una cuenta independiente para cada archivo, uno en cada lnea, mientras que un tubo de wc da un recuento total de todos los archivos combinados. Sin embargo, independientemente de las consideraciones de velocidad, este ejemplo muestra otro error comn a evitar. Estos contar mtodos slo dan cuenta del nmero de lneas que contienen los patrones encontrados - y, si eso es lo que busca que es grande. Sin embargo, en los casos en que las lneas pueden tener varias instancias de un patrn particular, estos mtodos no le dan una verdadera cuenta de la cantidad real de casos encontrados. Para contar el nmero de casos, uso de wc para contar, despus de todo. Pgina 7 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 7 de 9 24/04/2007 15:27 En primer lugar, ejecute un comando grep con la opcin-o, si la versin que soporta. Esta opcin slo salidas el conjunto combinado de patrn, uno en cada lnea, y no la propia lnea. Pero no se puede utilizar en combinacin con la opcin-c, por lo que el uso wc -L para contar las lneas, como en el ejemplo siguiente: Listado 18. Ejemplo de buen hbito # 8: Contar con instancias patrn grep

$ Grep-o y / tmp a / longfile.txt | wc-l 3402 $ En este caso, una llamada al wc es ligeramente ms rpido que una segunda llamada a grep con un modelo simulado para poner en juego y contar cada lnea (tales como grep-c). Coinciden con ciertos campos de la produccin, no slo las lneas Una herramienta como awk es preferible a grep cuando se desea para que coincida con el patrn en slo un campo especfico en las lneas de produccin y no slo en cualquier parte de las lneas. El siguiente ejemplo simplificado muestra cmo enumerar slo los archivos modificados en diciembre: Listado 19. Ejemplo de mal hbito # 9: El uso de grep para buscar patrones en campos especficos / Tmp $ ls-l / tmp / a / b / c | grep diciembre -Rw-r - r - 7 joe joe 12043 27 de enero 20:36 December_Report.pdf -Rw-r - r - 1 root root 238 03 de diciembre 08:19 README -Rw-r - r - 3 joe joe 14 de diciembre 5096 14:26 archivo.tar / Tmp $ En este ejemplo, grep filtros de las lneas, la salida de todos los archivos con su modificacin en diciembre las fechas, as como en sus nombres. Por lo tanto, un archivo, como December_Report.pdf es igual, incluso si no ha sido modificado desde enero. Este Probablemente no es lo que quieres. Para que coincida con un patrn en un campo determinado, es mejor usar awk, donde un relacionales operador coincide con el campo exacto, como en el ejemplo siguiente: Listado 20. Ejemplo de buen hbito # 9: El uso de awk para encontrar patrones en campos especficos / Tmp $ ls-l | awk '$ 6 == "diciembre"' -Rw-r - r - 3 joe joe 14 de diciembre 5096 14:26 archivo.tar -Rw-r - r - 1 root root 238 03 de diciembre 08:19 README / Tmp $ Vea la seccin Recursos para obtener ms detalles acerca de cmo usar awk. Dejar de gatos de tuberas Un error grep uso bsico, pero comn consiste en tuberas de la salida de cat a grep para buscar el contenido de una sola archivo. Esto es absolutamente innecesaria y una prdida de tiempo, ya que las herramientas como grep tomar los nombres de archivo como argumentos. Usted simplemente no es necesario utilizar gatos en esta situacin, en absoluto, como en el ejemplo siguiente: Listado 21. Ejemplo de hbito bueno y lo malo # 10: El uso de grep con y sin gato Pgina 8 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 8 de 9 24/04/2007 15:27 Compartir esto ... Digg esta historia Publicar en del.icio.us Slashdot es! $ Tmp tiempo cat / a / longfile.txt | grep y 2811 0m0.015s reales 0m0.003s usuario

sistema 0m0.013s $ Grep tiempo y / tmp a / longfile.txt 2811 0m0.010s reales 0m0.006s usuario sistema 0m0.004s $ Este error se aplica a muchas herramientas. Porque la mayora de las herramientas de tomar la entrada estndar como un argumento con un guin (-), aunque la argumento para usar cat para intercalar varios archivos con la entrada estndar a menudo no es vlida. En realidad, slo es necesario para concatenar antes de una tubera cuando se utiliza gato con una de sus varias opciones de filtrado. Conclusin: El abrazo de buenos hbitos Es bueno examinar sus hbitos de lnea de comandos para cualquier patrn de mal uso. Los malos hbitos que conducen ms despacio y con frecuencia a errores inesperados. Este artculo presenta 10 nuevos hbitos que pueden ayudarle a romper con muchos de los ms comunes errores de uso. Recogiendo estos buenos hbitos es un paso positivo hacia la agudizacin de UNIX de lnea de comandos habilidades. Recursos Aprender "El uso del software libre dentro de UNIX comerciales" (developerWorks, febrero de 2006) es un breve introduccin sobre el uso de la gran cantidad de software de cdigo abierto en un comercial, implementacin propietario UNIX. "Trabajar en el shell bash" (developerWorks, Mayo 2006) ofrece un tutorial introductorio sobre el Bash populares shell. "Comience con AWK" (developerWorks, septiembre de 2006) muestra cmo manipular texto con la AWK idioma. "Pon a punto tus regexp la construccin de habilidades de patrones" (developerWorks, Julio 2006) describe las formas ms tiles para el uso grep. Visite la zona developerWorks AIX y UNIX para obtener los recursos que necesita para mejorar sus habilidades. Nuevo para AIX y UNIX? Visite la nueva pgina de AIX y UNIX para obtener ms informacin. Navegar por la librera de tecnologa para libros sobre estos y otros temas tcnicos. Obtener los productos y tecnologas Para obtener una copia de mkdirhier, puede descargar una versin del compilador de Haskell. Discutir Pgina 9 UNIX consejos: Aprende 10 buenos hbitos de uso de UNIX http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html 9 de 9 24/04/2007 15:27 Podcasts: Sintoniza y ponerse al da con los expertos tcnico de IBM. Echa un vistazo a los blogs de developerWorks y participe en la comunidad developerWorks. Acerca del autor Michael Stutz es autor de El libro de cocina de Linux , que, por cierto, l dise y componer utilizando slo software de cdigo abierto. Sus intereses de investigacin incluyen la publicacin digital y el futuro del libro. Se ha

utilizan diferentes sistemas operativos UNIX hace 20 aos. Se puede llegar a Michael en stutz@dsl.org. IBM y AIX son marcas registradas de IBM Corporation en los Estados Unidos, otros pases o ambos. UNIX es una marca registrada marca registrada de The Open Group en los Estados Unidos y otros pases. Linux es una marca registrada de Linus Torvalds en los Estados Unidos, otros pases o ambos. Otros nombres de compaas, productos o servicios pueden ser marcas comerciales o de servicios marcas de terceros. Otros nombres de compaas, productos o servicios pueden ser marcas comerciales o marcas de servicio de los dems.

Potrebbero piacerti anche