![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Con la siguiente instrucción podemos ver los 10 comandos más utilizados y cuantas veces lo hemos usado.
Cita:
|
#2
|
||||
|
||||
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 |
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
![]() 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? |
#5
|
||||
|
||||
Ja, ja, no
![]() 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 |
#6
|
||||
|
||||
Lo que si es un misterio para mi, es ¿para qué quiero saber los diez comandos que más uso?
![]() // Saludos |
#7
|
||||
|
||||
Muy importante no es
![]() |
#8
|
||||
|
||||
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. |
#9
|
||||
|
||||
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. |
#10
|
||||
|
||||
Python viene de paquete en cada distro Unix/Linux
![]() ¿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:]' |
#11
|
||||
|
||||
#12
|
||||
|
||||
Cita:
![]() 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 |
#13
|
||||
|
||||
Cita:
Cita:
Código PHP:
__________________
El malabarista. |
#14
|
||||
|
||||
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 |
#15
|
||||
|
||||
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...
__________________
El malabarista. |
#16
|
||||
|
||||
¿Pero comando a comando o todos juntos del tirón?
|
#17
|
||||
|
||||
Comando a comando. Simplemente escribes python en la terminal y entras a python. Vas escribiendo lo que necesitas.
__________________
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 |
![]() |
|