![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Por ejemplo:
Código:
$ find *.sql -exec cp {} foo \; // Saludos |
#2
|
||||
|
||||
-excec?
Cita:
Me que da la duda de que es "-exec {}"
__________________
No puedo dormir con las lágrimas del mundo cayendo sobre mi... |
#3
|
||||
|
||||
¡A mi también!
![]() Pero, según entiendo, se refiere a cada uno de los elementos encontrados por find, es decir, ejecuta el sigiente comando en cada término encontrado. Par mayor información: Código:
$ man find |
#4
|
||||
|
||||
En *teoria* los comandos de unix comparten la idea de que la entrada de uno es la salida del otro, desafortunadamente ya que operan principalmente sobre texto sin estructura algunas cosas salen mas complejas que otras, y sin ejemplos concretos es dificil meterse en la cabeza como se supone que opera todo.
Aqui un ejemplo, con relacion a una noticia reciente, con la linea de *razonamiento* y los resultados: http://intrepidusgroup.com/insight/2...king-udid-src/ Y asi entiendes que con: Cita:
Cita:
![]() P.D: Por otro lado, prefiero usar python para resolver cosas como esas, me parece mas facil de operar -porque puedo usar estructuras de datos, en vez de a)texto sin estructura b) switches de comandos de dificil recordacion y no siempre estandares. Muchos otros usan perl o algo similar.
__________________
El malabarista. |
#5
|
||||
|
||||
Con la siguiente instrucción podemos ver los 10 comandos más utilizados y cuantas veces lo hemos usado.
Cita:
|
#6
|
||||
|
||||
Ciertamente puede usarse python, pero los administradores de servidores normalmente usarán directamente los comandos o scripts del shell. Python o Perl son para tareas más complejas.
// Saludos |
#7
|
||||
|
||||
Bueno, aquí estás usando el lenguaje AWK incrustado en el comando y ciertamente AWK es todo menos intuitivo. De todas formas, con práctica, el uso de comandos se torna intuitivo.
Veamos cómo obtener los diez comandos más usados: 1. El comando history nos da los últimos comandos ejecutados. La salida de history se ve similar a esto: Código:
460 find . 461 find . -exec rm 462 find . -exec rm {} 463 find . -exec rm {} \; 464 find *.sql -exec rm {} \; 465 ls 466 cd .. 467 cp *sql foo/ 468 ls 469 cp foo.bmp foo/ 470 cd foo 471 ls 472 find *.sql -exec rm {} \; 2. Lo primero es tener delimitadores bien definidos. Para ello podemos comprimir los espacios separadores en uno sólo con el comando tr (transalate) aplicado a la salida de history: Código:
history|tr -s ' ' Código:
460 find . 461 find . -exec rm 462 find . -exec rm {} 463 find . -exec rm {} \; 464 find *.sql -exec rm {} \; 465 ls 466 cd .. 467 cp *sql foo/ 468 ls 469 cp foo.bmp foo/ 470 cd foo 471 ls 472 find *.sql -exec rm {} \; 473 ls 474 touch asql 475 ls 476 find *.sql -exec rm {} \; 477 rm . 478 ls 479 rm * 480 ls 481 cd .. 482 find *.sql -exec cp {} foo\ \; 483 find *.sql -exec cp {} foo \; 484 cd foo Código:
history|tr -s ' '|cut -d ' ' -f3 Código:
find find find find find ls cd cp ls cp cd ls find ls touch ls find rm ls rm ls cd find find cd 4. O casi, porque podríamos tener concatenaciones anteriores: Código:
ls|grep sql Código:
history|tr -s ' '|cut -d ' ' -f3|cut -d '|' -f1 Código:
history|tr -s ' '|cut -d ' ' -f3|cut -d '|' -f1|sort|uniq -c Código:
4 cd 2 cp 9 find 7 ls 2 rm 1 touch Código:
history|tr -s ' '|cut -d ' ' -f3|cut -d '|' -f1|sort|uniq -c|sort Código:
history|tr -s ' '|cut -d ' ' -f3|cut -d '|' -f1|sort|uniq -c|sort|tail -10 history|tr -s ' '|cut -d ' ' -f3|cut -d '|' -f1|grep -v history|sort|uniq -c|sort|tail -10 Como se ve, cada comando se aplica naturalmente. Con práctica se vuelve intuitivo y muy potente para, por ejemplo, revisar bitácoras. // Saludos |
#8
|
||||
|
||||
![]() Sí, "más o menos" lo sabía, aunque no tan detalladamente. ¿Lo conoces tan bien como para no tener que consultar lo que hace cada comando? |
#9
|
||||
|
||||
A modo comparativo, lo mismo, con python
NOTA: Para hacer llamadas a lineas de comandos, se usa subprocess, o os.popen, pero dio la casualidad que "history" es un comando desactivado sino se esta en modo interactivo, osea, es dificil de hacerle programacion. Normalmente uno haria: Código PHP:
Asi que uno puede hacer: Código PHP:
1. Cargar el archivo, separado por lineas, en una estructura de lista: Código PHP:
http://effbot.org/zone/python-list.htm 2. Ahora le mochamos los numeros y dejamos los comandos. La solucion "simple" es partir cada linea y construir otra lista Le hago trim a cada linea, parto con split (por defecto parte por 1 espacio), y cojo el segundo resultado (split devuelve otra lista asi: ['1','comando']) Código PHP:
Código:
> print comandos[:5] >>> ['ls', 'chflags', 'ls', 'python', 'easy_install'] collections.Counter me devuelve un diccionario, con llave= comando, valor = cuantas veces se repite Código PHP:
Código PHP:
Código PHP:
Lo que me gusta de hacerlo con python, a pesar de que igual hay que aprender del lenguaje y las librerias (y que ciertas cosas obviamente sale mejor o mas rapido directamente por comandos establecidos) es que puedo interactuar con los datos. En cualquier momento, doy un print, saco los 10 primeros de la lista, le hago un for, etc... es mucho mas practico en muchos casos. La otra razon, es que python se puede resumir en: Maneja lista, maneja diccionario. Practicamente todo devuelve listas y diccionarios. Es mucho mas intuitivo que operar siempre con cadenas y switches, y mas facil de operar. Es algo que se vuelve obvio cuando se entra a linea de comandos interactivo de python y se hacen las llamadas a las funciones: listas, diccionarios, todo el tiempo. Es muy practico!
__________________
El malabarista. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Comandos en Terminal Server | Draker | Varios | 4 | 16-10-2008 19:35:10 |
Mezclar Php y JavaScript | lucasarts_18 | PHP | 9 | 13-03-2007 21:38:10 |
Mezclar Delphi5 y Visual Basic 6.0 | guiweb | Varios | 4 | 23-11-2006 14:50:36 |
es posible mezclar colores a los tform | ronimaxh | Varios | 5 | 01-02-2006 19:36:14 |
Mezclar videos | walito | Varios | 2 | 21-01-2006 01:21:38 |
![]() |
|