Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Linux (https://www.clubdelphi.com/foros/forumdisplay.php?f=25)
-   -   Como mezclar comandos unix en al terminal (https://www.clubdelphi.com/foros/showthread.php?t=80224)

Casimiro Notevi 12-09-2012 00:53:56

Cita:

Empezado por mamcx (Mensaje 442847)
Y no hay que crear el programa, todo se puede desde la linea interactiva...

¿Pero comando a comando o todos juntos del tirón?

D-MO 12-09-2012 00:58:00

Cita:

Empezado por Casimiro Notevi (Mensaje 442845)
...aunque hay que tener python...

Python viene de paquete en cada distro Unix/Linux ;).

Cita:

Empezado por Casimiro Notevi (Mensaje 442845)
...de "un tirón"...

¿Y si mezclamos python + shell?

Tomando como base el código de mamcx:
Código:

history|python -c 'import sys; print [linea.strip().split()[1] for linea in sys.stdin.readlines()][-10:]'
No es lo ideal, por supuesto. Pero la cosa aquí es si se puede o no.

mamcx 12-09-2012 01:07:19

Cita:

Empezado por Casimiro Notevi (Mensaje 442854)
¿Pero comando a comando o todos juntos del tirón?

Comando a comando. Simplemente escribes python en la terminal y entras a python. Vas escribiendo lo que necesitas.

Casimiro Notevi 12-09-2012 01:27:40

Cita:

Empezado por D-MO (Mensaje 442856)
Pero la cosa aquí es si se puede o no.

Entonces, se puede, se puede... :)

roman 12-09-2012 17:53:28

Cita:

Empezado por D-MO (Mensaje 442856)
Tomando como base el código de mamcx:
Código:

history|python -c 'import sys; print [linea.strip().split()[1] for linea in sys.stdin.readlines()][-10:]'
No es lo ideal, por supuesto. Pero la cosa aquí es si se puede o no.

Últimamente nos andan queriendo meter gol :)

No digo que no me guste, porque sí me gusta, pero esto que pones DM-O y que se ve tan sencillito, no es lo mismo que describe mamcx. Esto muestra los últimos 10 comandos, no los 10 más usados.

Aparte de este "detalle", en ocasiones el history tiene líneas en blanco (salvo por el número), no sé muy bien porqué, pero eso da al traste con el algoritmo. En python, ¿cómo puedo eliminar las líneas en blanco?

// Saludos

mamcx 12-09-2012 18:24:03

Cita:

Empezado por roman (Mensaje 442916)
No digo que no me guste, porque sí me gusta, pero esto que pones DM-O y que se ve tan sencillito, no es lo mismo que describe mamcx. Esto muestra los últimos 10 comandos, no los 10 más usados.

Me parecio que la idea que dio DM-O es combinar python/bash. Osea, es una forma de simplificar conceptualmente lo que hicieron con muchos otros comandos -que como en mi caso, desconocia- y terminar el trabajo con bash.

Cita:

Empezado por roman (Mensaje 442916)
Aparte de este "detalle", en ocasiones el history tiene líneas en blanco (salvo por el número), no sé muy bien porqué, pero eso da al traste con el algoritmo. En python, ¿cómo puedo eliminar las líneas en blanco?

Código PHP:

a=['1 ','  ','2']

print [
x.strip() for x in a if x.strip() != ''

>>[
'1''2'


roman 12-09-2012 18:53:37

¡Gracias! Ahora lo malo es que mi versión de python no tiene collections.Counter. Tendré que posponer la prueba :(

// Saludos

roman 12-09-2012 21:32:33

Bueno, no es muy compacto, pero es lo que he encontrado hasta ahora con mi versión de python:

Código:

import operator
lineas = open(".bash_history").readlines()
comandos = [linea.strip().split()[0] for linea in lineas if linea.strip() != '']
frecuencias = dict([(comando, comandos.count(comando)) for comando in comandos])
print sorted(frecuencias.iteritems(), key=operator.itemgetter(1), reverse=True)[:10]

// Saludos

D-MO 12-09-2012 21:46:30

Cita:

Empezado por roman (Mensaje 442916)
Últimamente nos andan queriendo meter gol :)

:eek:

Cita:

Empezado por roman (Mensaje 442916)
no es lo mismo que describe mamcx. Esto muestra los últimos 10 comandos, no los 10 más usados.

Cita:

Empezado por mamcx (Mensaje 442930)
Me parecio que la idea que dio DM-O es combinar python/bash...

Con ese mensaje pretendía responder la inquietud de Casimiro de si se podía o no hacerlo "de un tirón" con python, demostrando que en efecto si es posible, sin embargo puede resultar mas complicado por el hecho de tratar de realizar el cuerpo de un script en una sola línea.

Como menciona mamcx arriba, lo mejor es usar la terminal interactiva de python, cuyo nombre hace mérito a lo que nos ofrece: Interactividad.

Pero en ningún momento trato de quitar mérito a bash/shell, que en todo caso, ¿que haríamos sin el/ellos?.

Lo bueno de la variedad, entre otras cosas, es que da para debates largos, cada cual ve las cosas desde su punto de vista. Siempre y cuando no se pierda el respeto, la conversación se vuelve amena y productiva ;).

Saludos

roman 12-09-2012 22:18:25

Cita:

Empezado por D-MO (Mensaje 442942)
Siempre y cuando no se pierda el respeto

¿Te falté al respeto? :eek:

// Saludos

D-MO 12-09-2012 22:56:10

Cita:

Empezado por roman (Mensaje 442945)
¿Te falté al respeto? :eek:

Noooo... ¡Claro que no!. ¿A caso así se entiende mi comentario?:o

Saludos


La franja horaria es GMT +2. Ahora son las 18:21:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi