Buscar aquí

30 octubre 2013

usar el punto . en búsquedas con grep


Grep es una gran herramienta para buscar, pero usar un punto . dentro del texto, lo torna problemático, pues lo considera como un reemplazo para cualquier carácter y si queremos buscar todos los archivos o palabras en un archivo donde hay un listado de archivos y se busca una extensión o tipo de archivos en particular, si usamos:

find /home/katador > archivosenhome

y ahora quiero buscar todos los archivos con extensión java dentro de archivosenhome... si uso:

grep .java archivosenhome

va a mostrar un listado gigantesco donde txt no necesariamente es la extensión, sino dentro del nombre...

/home/arturo/eclipsework/mytracker/src/com/example/mytracker/MainActivity.java
/home/arturo/eclipsework/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt
/home/arturo/.eclipse/org.eclipse.platform_4.2.0_793567567/configuration/org.eclipse.osgi/bundles/450/1/.cp/images/topiclabel/ov_javadev48.gif

Como ven... muestra todo tipo de cosas... ahora si yo quiero sólo, pero sólo los archivos .java ejecuto:

grep "\.java" archivosenhome

las "" indican que sea ese  texto y el \ es para "escapar" el punto e indicar que es un caracter más, no para que lo use como reemplazante.  OJO que con esto mostrará todas las líneas que terminan con .java

Finalmente, si quiero buscar un texto que está en cualquier parte incluyendo el punto, se debe:

grep "\."texto archivosenhome

con esto, mostrará todas las líneas que tienen .texto en cualquier lugar.

Otra opción es utilizar la opción -F en grep, y el comportamiento es igual que la segunda opción, sería usar un:

grep -F .texto archivosenhome 

Esto también fue probado en HPUX y funciona igual que lo descrito.


28 octubre 2013

¿Dónde está el ícono para conectarme a una red Wifi o de cable?

Muchas veces de seguro, ha pasado que por algún desconocido motivo este ícono:



se desaparece sin más ni más y no podemos realizar ninguna conexión de red.  Este ícono, es el applet de NetworkManager, un servicio que viene en linux y que ayuda a manejar las conexiones de red facilmente y para recuperarlo hay dos opciones:
  • Levantar el applet (ícono) a mano.
  • Realizar la operación a mano, vía línea de comando.

Para levantar el applet a mano, es simple, se abre una terminal y ejecutamos el comando:

nm-applet&

Tras la ejecución se verá inmediatamente el ícono en el área de notificación y debiera funcionar normalmente.

Para ejecutar las mismas tareas vía línea de comando se debe utilizar nm-cli, que es un comando que nos ayuda a ejecutar acciones sobre NetworkManager vía línea de comando.

Primero, es necesario saber como se llama la conexión que queremos utilizar, para ello, ejecutamos nmcli con los siguientes parámetros para listar las conexiones disponibles:

[katador@laptop3 ~]$ nmcli con list
NAME                      UUID                                   TYPE              TIMESTAMP-REAL                   
ArtAP                     e1bd410a-8ac9-427d-bae2-0229682c4181   802-11-wireless   Thu 12 Sep 2013 03:40:58 PM CLST 
GUEST-TM                  a6b68d82-17a9-4645-b30c-ebc431f7ddf7   802-11-wireless   Fri 27 Sep 2013 04:36:02 PM CLST
System p4p1               1d265048-8f7f-40b4-b27d-b68db9821698   802-3-ethernet    Tue 22 Oct 2013 10:25:53 PM CLST
VPN1                        8f119f52-386a-4f05-a632-0aa6d9e24480   vpn               never                          

En este caso ArtAP, es una red Wifi de mi telefono celular y GUEST-TM es una wifi de oficina.  La de cable es System p4p1, y es la que me interesa habilitar, entonces, debemos ejecutar nmcli de la siguiente forma:

[katador@laptop3 ~]$ nmcli con up id "System p4p1"


con esto, realizo la conexión de cable, para una wifi es igual.

Es importante notar que las conexiones que se ven en el listado que entrega nmcli, son las que están previamente guardadas en la applet, no las nuevas o "desconocidas".

Actualización: en fedora 20, viene separado en el paquete network-manager-applet

23 octubre 2013

buscar programas con yum

Generalmente estamos acostumbrados a  buscar sólo una palabra con yum, pero también podemos usar dos o más, así, si buscamos por ejemplo:

yum search window manager

nos mostrará todos los programas que tengan ambas palabras, no necesariamente juntas, ahora si nos interesa que estén juntas, hay que usar

yum search "window manager"

y así se obtiene, una lista donde ambas palabras están así, juntas...


10 junio 2013

Manejar una pantalla extra en X

Cuando se usa un laptop, se suele hacer necesario un monitor extra, y muchas veces al usar linux el botón de cambio de pantalla no funciona expandiendo el escritorio, sólo lo duplica o traspasa de una pantalla a otra.  Una solución, es utilizar el comando xrandr, que ayuda de manera muy simple a la manipulación de X y monitores.

Primero, xrandr así, sin parametros, entrega la información de los monitores conectados.  Así, si no existe ningún monitor extra conectado, arrojará algo como esto:

[ktdr@note3 ~]$ xrandr

Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
VGA-0 disconnected (normal left inverted right x axis y axis)
LVDS connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
   1366x768       60.0*+
   1280x720       59.9 
   1152x768       59.8 
   1024x768      120.1     60.0     59.9 
   960x720       120.0 
   928x696       120.1 
   896x672       120.0 
   800x600       120.0     60.3     59.9     56.2 
   848x480        59.7 
   700x525       120.0 
   720x480        59.7 
   640x512       120.0 
   640x480       120.0     59.9     59.4 
   512x384       120.0 
   400x300       120.6    112.7 
   320x240       120.1 
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)

Lo importante de aquí, es:
  • La resolución utilizada actualmente (la que tiene el *),
  • Los nombres de los monitores, es muy importante, pues estos nombres se usan con el comando.
Ahora, si se conecta, por ejemplo, una telvisión:
[ktdr@note3 ~]$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
VGA-0 connected (normal left inverted right x axis y axis)
   1360x768       60.0 +
   1280x768       59.9 
   1280x720       60.0 
   1024x768       60.0 
   800x600        60.3 
   640x480        60.0 
LVDS connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
   1366x768       60.0*+
   1280x720       59.9 
   1152x768       59.8 
   1024x768      120.1     60.0     59.9 
   960x720       120.0 
   928x696       120.1 
   896x672       120.0 
   800x600       120.0     60.3     59.9     56.2 
   848x480        59.7 
   700x525       120.0 
   720x480        59.7 
   640x512       120.0 
   640x480       120.0     59.9     59.4 
   512x384       120.0 
   400x300       120.6    112.7 
   320x240       120.1 
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)

Se puede ver que VGA-0 está conectado e indica la resolución actual (también con el *).

Ahora, para hacer una extensión del escritorio se utiliza un comando como:

xrandr --output VGA-0 --right-of LVDS --auto

Aquí, se indica que la salida de VGA-0 va a la derecha de LVDS (la pantalla del laptop)  y el --auto, seleccionará la mejor resolución.

Un detalle importante, es que si se suspende o hiberna el laptop podría aparecer con un escritorio más grande que la pantalla, para eso sólo es necesario ejecutar:

xrandr --output VGA-0 --auto

con esto, se detecta que no está conectado y se ajusta automaticamente el tamaño del escritorio.

30 mayo 2013

Cambiar la version de java con alternatives???


Un clásico problema es que Linux trae instalado el java de OpenJDK y por razones de compatibilidad con varios programas, necesito instalar la maquina virtual de Oracle (SUN).  Ahora si se intenta hacer un remove de OpenJDK, se borrará libreoffice y otros tantos programas, por eso, usar alternatives es una buena opción.

Primero, si se ve la versión actual de java veremos:

[root@laptop ~]# java -version
java version "1.7.0_b147-icedtea"
OpenJDK Runtime Environment (fedora-2.1.fc17.6-x86_64)
OpenJDK 64-Bit Server VM (build 22.0-b10, mixed mode

Después instalar la maquina virtual que queremos de Oracle -SUN-.

Si queremos saber dónde está instalada esta versión de java o cuales están instaladas es fácil ejecutar

[root@laptop ~]#alternatives --display java

Esto arroja un listado largo con todas las versiones instaladas y posibles de utilizar.

Ahora hay que "instalar" esta nueva máquina a alternatives y se hace así:

[root@laptop ~]#alternatives --install "/usr/bin/java" java /usr/java/jre1.7.0_21/bin/java 100

 - "/usr/bin/java", es el nombre del programa que se pone en /usr/bin
 - java, es el nombre de la agrupación en alternatives.
 - /usr/java/jre1.7.0_21/bin/java, es la ruta completa al binario de java.
 - 100, es la prioridad que le daremos a esto... da igual el número.



[root@laptop ~]# java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)


Para instalar una nueva versión JDK completa, se puede usar el comando:

alternatives --install "/usr/bin/java" java  /usr/java/jdk1.8.0_202/jre/bin/java 100 \
--slave /usr/bin/keytool keytool /usr/java/jdk1.8.0_202/bin/keytool \
--slave /usr/bin/orbd orbd /usr/java/jdk1.8.0_202/bin/orbd \
--slave /usr/bin/pack200 pack200 /usr/java/jdk1.8.0_202/bin/pack200 \
--slave /usr/bin/rmid rmid /usr/java/jdk1.8.0_202/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry /usr/java/jdk1.8.0_202/bin/rmiregistry \
--slave /usr/bin/servertool servertool /usr/java/jdk1.8.0_202/bin/servertool \
--slave /usr/bin/tnameserv tnameserv /usr/java/jdk1.8.0_202/bin/tnameserv \
--slave /usr/bin/unpack200 unpack200 /usr/java/jdk1.8.0_202/bin/unpack200 \
--slave /usr/bin/javac javac /usr/java/jdk1.8.0_202/bin/javac


Ahora, le indicaremos a alternatives que la versión que nos interesa es la que acabamos de instalar, entonces:

[root@laptop ~]# alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/java/jre1.7.0_21/bin/java

Enter to keep the current selection[+], or type selection number: 2

20 marzo 2013

Problemas con la redirección de X

Si se tiene un servidor remoto y se quiere abrir una aplicación gráfica, suele ser mucho más facil hacer una redirección usando ssh.  ¿Qué significa esto? usar el canal de ssh para traer a la consola local la ventana, sin tener que pedir acceso a la máquina o instalar un VNC por ejemplo, etc...

Algunos sistemas operativos como HPUX, es necesario configurar la variable DISPLAY para indicarle que siga usando la consola del sistema operativo remoto -que esta siendo redirigida por ssh-, para verificar se puede usar:

echo $DISPLAY

esto debiera arrojar la IP de la maquina que estamos usando:0.0 sí es asi, entonces hay que corregirlo y usar:

export DISPLAY=localhost:10.0

con esto, si ejecutan por ejemplo xterm, se lanzará rapidamente la aplicación.

Hay otras aplicaciones más problematicas, por ejemplo este error:

X Error of failed request:  BadFont (invalid Font parameter)
  Major opcode of failed request:  55 (X_CreateGC)
  Resource id in failed request:  0x0
  Serial number of failed request:  79
  Current serial number in output stream:  94

hay que hacer lo siguiente:

- instalar en el sistema los paquetes:

 xorg-x11-fonts-ISO8859-1-75dpi.noarch esto va en relación a las configuraciones de las variables de ambiente que siguen, también puede ser recomendable instalar:
      xorg-x11-fonts-75dpi
      xorg-x11-fonst-misc

- probablemente si en este punto ejecutan la aplicación nuevamente vean un mensaje como:

Could not find MESSAGE Catalog. Please check NLSPATH and LANG variables

- en este caso, en la sesión de UX deben asignar valor a las variables de ambiente LANG Y NLSPATH, como por ejemplo:

export LANG=es_CL.iso88591

es para usar idioma español Chile con formato iso88591, para ver los disponibles pueden listar lo existente en /usr/lib/nls/msg/ y usar el nombre del directorio para LANG

- asignar valor a la variable NLSPATH, pues esta debe apuntar a todo esta un catalogo:

export NLSPATH=/usr/lib/nls/msg/es_CL.iso88591/mesg.cat

ahora volver a ejecutar la aplicación y debiera correr sin ningún problema.

Se debe tener presente que la definición de estas variables es temporal y si se quieren hacer de manera permanente se deben agregar al archivo de profile del usuario.

Otro error común es:

X11 forwarding request failed on channel 0

 este es mostrado cuando se ingresa desde un linux usando ssh -X para ello es necesario instalar el paquete xorg-x11-xauth y al reintentar es exitoso.


12 febrero 2013

Estado de parches y paquetes instalados en HPUX

En HP UX, existe un campo de estado que permite ver el estado de instalación del paquete o parche.  Para esto se utiliza la herramienta swlist que permite obtener la información a través de list,

swlists -l

para parches que se debe usar patch y para paquetes fileset.

Entonces para conocer el estado de los parches se puede usar:

swlist -l patches -a patch_state

y para paquetes

swlist -l fileset -a state

y ahi se podrá revisar si está en estado installed, configured o corrupt.


08 enero 2013

Utilizar el histórico de comandos en HP UX

En general todos los unix tienen el comando history, que permite acceder a un listado de los comandos ejecutados anteriormente, con la facilidad de agregar un -N donde N es la cantidad de líneas que se quieren ver, entonces sería algo como:

history -20

también para llamar el último comando se puede utilizar !! (dos signos de exclamación) que ejecutará el último comando.

Existe la opción de "navegar" en el histórico, línea a línea utilizando vi.  Hay que considerar que por defecto HP UX utiliza ksh (Korn) como shell, entonces hay que ejecutar

ksh -o vi

Ahora se presiona la tecla ESCAPE + K y comenzarán a ver los comandos antiguos.  Si es necesario editar el comando, se deben utilizar las teclas de VI:

- L para mover a la derecha
- H para mover a la izquierda
- I para insertar texto
- a para agregar texto en el espacio siguiente al donde está localizado el cursor.
- A para agregar texto al final de la línea.

y enter para ejecutar el comando.