![]() |
Como mezclar comandos unix en al terminal
Me explico un poco mas.
Me gustaría poder hacer en la terminal una mezcla de comandos, pongo algunos ejemplos. -Hacer una búsqueda de archivos y copiar todos esos archivos a un directorio -Borrar archivo que se encuentren en una búsqueda de directorios extraida de textos de un archivo. Vaya, ya se imaginarán la amplia gama que se puede abarcar combinando comandos, pero no sé como hacerlo. Solo conozco el hacer algún comando y usar después GREP.:rolleyes: Les agradezco de antemano... |
1. find
2. grep pipe // Saludos |
Que respuesta tan escueta
Cita:
|
Bueno, la pregunta es demasiado genérica. Comprenderás que no puedes juntar de la misma manera cualesquiera comandos que se te ocurran. Ahora (aunque la sintaxis completa no la recuerdo) en cuanto a los dos ejempos que pones:
1. El comando find tiene una opción que te permite ejecutar un otro comando sobre cada uno de los resultados. 2. El operador | (pipe) te permite enviar la salida de un comando a la entrada de otro comando. grep podría servirte para buscar en el texto de los archivos y concatenar su salida con un comando para borrarlos. // Saludos |
Otro ejemplo
Cita:
|
Por ejemplo:
Código:
$ find *.sql -exec cp {} foo \; // Saludos |
-excec?
Cita:
Me que da la duda de que es "-exec {}" |
¡A mi también! :D
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 |
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. |
Con la siguiente instrucción podemos ver los 10 comandos más utilizados y cuantas veces lo hemos usado.
Cita:
|
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 |
Cita:
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 . 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 . Código:
history|tr -s ' '|cut -d ' ' -f3 Código:
find 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 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 |
#:-)#
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? |
Ja, ja, no :o
Cuando digo que con la práctica se vuelve intuitivo no me refiero a mi sino a gente que he visto trabajar así. Pero el desglose (ese sí es mío) deja ver que en efecto es así. Por otra parte, aunque un administrador, muchos comandos los sabe al derecho y alrevés, es lógico que no está excento de consultar la referencia. Lo mismo nosotros con delphi, la ayuda no la echamos al cajón del olvido :) // Saludos |
Lo que si es un misterio para mi, es ¿para qué quiero saber los diez comandos que más uso? :D
// Saludos |
Muy importante no es :rolleyes:
|
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] 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! |
Está muy bien, aunque hay que tener python, crear el programita, etc.
No le quito el mérito, pero la "gracia" de la línea de comando unix/linux es esa, que de "un tirón", interactivamente, puedes hacerlo. |
Sí, realmente se ve bien. Yo creo que cada uno tiene su ámbito. El uso de comandos del shell es más para administradores en sus tareas del día a día en que no van a hacer un script por cada tarea que requieran al momento. La solución que describes es más agradable para nosotros los programadores :)
// Saludos |
Claro, como programador me gusta mas. Ademas, es aprender un solo ambiente (python) que ademas me sirve para otras cosas, vs varios (bash, windows) que solo sirve pa administrar....
Y no hay que crear el programa, todo se puede desde la linea interactiva... |
La franja horaria es GMT +2. Ahora son las 00:28:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi