Pages

jueves, mayo 19, 2016

bash history

Gran ayuda es el "history" prácticamente eterno de comandos de consola. Dentro de un terminal basta con subir o bajar con el cursor para ver cuales fueron los comandos ingresados con anterioridad. Esta información queda almacenada en el archivo .bash_history que está en la carpeta home de cada usuario. Sin embargo, para buscar un comando en particular desde la consola misma podemos recurrir al viejo y querido grep. el comando history devuelve el contenido del archivo bash_history enumerado. Basta con hacer un pipe de la salida hacia el grep y entrecomillar lo que estamos buscando. Ej:

history | grep "WINEDEBUG"

viernes, agosto 14, 2015

href="sftp://... ¿Como abrirlo desde el explorador?

Esto es para linux. No tengo idea de como, ni de si se puede hacer en Windows. De ser asi, lamento no poder ayudarlos.
Dentro de la carpeta
/home/[su-usuario]/.local/share/applications

creen un archivo con extensión .desktop con el nombre que mas les guste. en mi caso creé el sftp.desktop con el siguiente contenido.

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Terminal=false
Type=Application
Name=sFTP Nemo
Comment=Abrir Nemo para conexiones sFTP desde el explorardor
Exec=nemo %U
X-MultipleArgs=True
Encoding=UTF-8
MimeType=x-scheme-handler/sftp
NoDisplay=true
Presten atención, si utilizan el gedit, automáticamente les agregará la extensión .desktop, con lo cual pueden terminar con un archivo del estilo sftp.desktop.desktop, tomen sus recaudos. Si utilizan Nautilus, cambien nemo por nautilus. Grábenlo y dentro de la terminal escriban el siguiente comando:
xdg-mime default sftp.desktop x-scheme-handler/sftp

ATENCION: Recuerden que yo cree sftp.desktop, si crearon otro archivo invoquen ese nombre. para verificar que funcione correctamente ejecuten:

xdg-open sftp://[su-usuario]@[urldelservidor]:[puertodeescucha]

si abre su explorador de archivos con la dirección del server, esta ok!.
Eso es todo, a partir de ahora su explorador invocará el programa xdg-open cada vez que tenga una llamada a un url-scheme desconocido

Cito las fuentes de donde obtuve la información:

martes, diciembre 09, 2014

FIND + SED, reemplazo masivo de texto dentro de archivos

Mi ejemplo: Necesito encontrar el texto:
{-$FOLDER-}

y reemplazarlo por el texto :
{-$SWFOLDERROOT-}/

en todos los archivos de extensión .tpl

que se encuentren a partir del directorio en el que estoy posicionado en todas las carpetas contenidas. El comando es el siguiente:
find -type f -name "*.tpl" -exec sed -i 's~{-$FOLDER-}~{-$SWFOLDERROOT-}/~g' '{}' \;

Las aclaraciones del caso:

find -type f -name "*.tpl"  buscar los archivos cuyo nombre sea o contenga *.tpl

- exec por cada resultado anterior ejecutar el comando que sigue.

sed -i (stream editor, editor de flujo seria la traduccion literal, la opción -i (in place) indica que la edición se realice sobre el mismo archivo. Es decir lo reemplaza. si quisieran backupear el original podrían hacer -i.tmp o la versión larga --in-place=.tmp

's~{-$FOLDER-}~{-$SWFOLDERROOT-}/~g'

la expresión va encerrada entre comillas simples.
s (comando sustituir), ~ es un tipo de separador, sed acepta ~ ó / ó | como separadores válidos. a continuación del separador va la expresión a buscar. En este caso {-$FOLDER-}, luego otro separador ~ luego la expresion de reemplazo. En este caso {-$SWFOLDERROOT-}/, luego otro separador ~ y finalmente el comando g (global), que indica que reemplace todas las ocurrencias.

{} El par de corchetes vacios es reemplazado por el nombre de archivo que va a pasar find como parametro de la funcion -exec. El uso correcto de la función debería encerrar las llaves entre comillas simples para evitar que el shell lo interprete como otra cosa.

\; todo lo que sigue a continuacion del primer comando del exec se considera argumentos del comando a excepcion de '{}', hasta que se encuentre un ; para mayor seguridad de que el shell no lo interprete como otra cosa se lo escapa con \, aunque tambien podría encerrarse entre comillas.

Los sitios de los que saqué información:
http://www.brunolinux.com/02-The_Terminal/Find_and%20Replace_with_Sed.html 
http://www.grymoire.com/Unix/Sed.html#uh-62h 
http://www.comoinstalarlinux.com/comandos-linux-find-con-ejemplos-3/

viernes, abril 11, 2014

Linux, comando find, encontrar archivos de un determinado usuario de gran tamaño y obtener un output legible.

Básicamente necesitaba encontrar todos los archivos de un determinado usuario dentro del directorio "home", podían no estar en su home solamente, mayores a 10M. Para ello utilicé el comando "find", rejuntando de varias fuentes llegué a esta hermosa conclusión:
 
sudo find /home -user juancarlosbatman -size +10M -exec ls -lh {} \; 2>/dev/null

vamos por partes:

utiliz el sudo para poder acceder al resto de las carpetas de los otros usuarios. Por supuesto que mi usuario debe pertenecer al grupo sudoers y el root debe tener permiso de listar el resto de estas carpetas, aunque extraño, podría ser que no.

find -> el comando en si.

/home -> La ruta a partir de la cual quiero buscar

-user juancarlosbatman -> el usuario dueño de los archivos a revisar

-size +10M -> Tamaño minimo de los archivos a buscar, tambien podría agregar otro -size -20M, entonces buscaría archivos entre 10 y 20 megabytes.

-exec ls -lh {} \; -> con el resultado ejecutar el comando ls con la opción -lh (-l devuelve una lista mas completa, -h la hace legible para el ser humano, en vez de poner 1024000 escribe 10G), el comando find tiene las opciones -print o -ls, el problema es que -print trae poca info y -ls es igual al comando ls -l, pero no tengo el modificador -h, que lo hace mas facil, por eso es preferible utilizar el exec.

2>/dev/null -> Es posible que el usuario con el que ejecutamos el comando no tenga permisos de lectura en determinadas carpetas, o a determinados archivos, de forma que el comando find comenzara a llenar la pantalla con rutas de archivos y la leyenda "Permission denied", entre los archivos que vaya encontrando. Con esta sentencia, desviamos la salida de errores hacia el dispositivo null, es decir, no molesta.

Espero que les sirva, tanto como a mi.

sábado, enero 04, 2014

CyanogenMod forzar modo 3G ó WCDMA

Tengo un Samsung Galaxy Note II, y hace unos meses le instalé el CyanogenMod. El único problema que he tenido hasta hoy es que no podía forzar el modo 3G, todas las opciones que da son siempre 2g+ algún modo 3g, es decir que si tiene una señal fuerte EDGE, y una 3G o HSDPA mala, va siempre al EDGE, y en algunos casos peores se va a GPRS.
La mala noticia es que no hay una opción de configuracion directa para solucionarlo.
La buena es:
  • Vayan al discador telefónico y escriban:
         *#*#4636#*#*
  • Dentro del menú de configuración que les aparece vayan a:
         Informacion del dispositivo.
  • Se van a encontrar primero información del IMEI, Nro. de teléfono y red, luego un botón para ejecutar un testeo, luego mas información de estado e inmediatamente un menú de selección (Está justo antes de que vuelva a comenzar un juego de botones) que les va a decir algo como GSM Preferred., lo cambian por WCDMA Only y voilá!!. 
Si vuelven a entrar luego van a ver que quedó en WCDMA Preferred, así que asumo que si no tiene 3G de ningún tipo pasará a una red 2G solo.

La solución la encontré en el blog de Rodrigo Zamora Nelson, así que nobleza obliga ahi va el link: http://rodrigo.zamoranelson.cl/?p=1384