Archivo por CategoríasGNU/Linux
GNU/Linux admin on 03 Mar 2008
Trucos básicos usando el editor VIM
Personalmente uso kate o kwrite como editor simple, para tomar pequeñas notas, etc. Pero para programar o editar ficheros de configuración del sistema no dudo en usar VIM. No voy a profundizar en el uso de este editor, si no te suena de nada el nombre probablemente este artículo no te interese en absoluto. El hecho es que VIM, o cualquiera de los clones de vi, es un editor muy potente. Al contario de lo que parece a simple vista.
Mucha gente usa vi sólo cuando es estrictamente necesario, y de hecho es comprensible, tener un editor que funcione en modo texto puede ser de mucha utilidad si no funciona el entorno gráfico, o si editas ficheros de otro ordenador remotamente. Este artículo va destinado a aquella gente que ya usa VIM, pero no se ha leido la documentación ni la ayuda. Quiero insistir en que esto que voy a describir es MUY BÁSICO, este editor puede hacer muchísimo más. Avisados estáis… empezamos:
Cambiar de modo
Pulsando la tecla <i> entramos en el modo de inserción (para editar el texto), pulsando la tecla <ESC> entramos en el modo comandos, si estando en modo comandos escrivimos <:> (dos puntos), entramos en el modo línea de comandos de VIM, en él podemos hacer cosas más complejas.
Guardar, Salir, etc
Vamos a guardar el archivo:
:w
Como véis, la orden empieza por <:>, por lo tanto, primero hemos pulsado <ESC> para entrar en modo comandos. Si queremos darle otro nombre al archivo:
:w nuevo_nombre.txt
Para salir del editor:
:q
Si hemos hecho cambios no nos deja salir, aquí tenemos dos opciones, la primera es salir sin guardar:
:q!
La segunda es guardar, antes lo hemos hecho con <:w>, pero podríamos guardar y salir en un solo comando:
:wq
E incluso hay otro comando que hace lo mismo, pero no sobreescribe el archivo si no hay cambios, este es el más comodo para salir guardando cambios:
Borrar en modo comando:
Ahora estamos en modo comando (tecla <ESC>), sin usar los dos puntos <:>. Si queremos eliminar el siguiente carácter debajo del cursor podemos pulsar x, con X eliminaríamos en anterior. Si pulsamos dd eliminamos la línea actual entera. Con dw eliminamos todos los caracteres hasta el final de la palabra actual, si estamos en un espacio en blanco, hemos eliminado la siguiente palabra del texto. ¿Con d3w que hacemos? El propio comando lo dice: delete 3 words. Con 5dd eliminamos 5 líneas enteras. Y por aquí va el asunto, la gracia está en aprender a combinar los comandos entre ellos.
Deshacer:
Si pulsamos la letra u deshacemos lo último que hemos hecho. Si pulsamos u repetidamente vamos retrocediendo. Con U afectaría solo a la línea actual.
Repetir:
Con el carácter . (punto) se repite el último comando realizado, sea cual sea.
Copiar, Cortar y Pegar:
¿He dicho que d elimina? Pues es completamente falso. Todo lo que eliminamos con d, dd, dw, etc se guarda en un buffer. Esto sirve, por ejemplo, para que usemos u para deshacer como acabo de explicar, pero también nos permite pegar el contenido eliminado, lo que popularmente se conoce como Cortar y Pegar. El comando y funciona igual que d, pero a diferencia de este último, guarda el contenido en el buffer sin eliminarlo, por lo que es un qeuivalente al típico Copiar: yy copia la línea actual, yw copia una palabra, 10yy copia un bloque de 5 líneas de texto, etc.
Ahora que hemos puesto información en el buffer, ya sea eliminada con d o copiada con y, sólo tenemos que pulsar p para Pegar.
Buscar cadenas de texto:
Si en modo comando (tecla <ESC>) escribimos:
/palabra
Y pulsamos enter, el editor buscará palabra en el texto y lo marcará para que lo veamos. Con la letra n se repite la búsqueda hacia adelante, con la letra N se repite hacia atrás.
Además, si pulsamos el asterisco * en modo comando en cualquier momento, se remarcarán todas las coincidencias con la palabra actual debajo del cursor.
Para programadores:
La función de autocompletado es quizás la más destacada, todos los IDEs de programación lo soportan, pues VIM también. Empezamos a escribir una función y pulsamos Control + n, se despliega una lista de todas las funciones que empiezan igual.
Otro truco muy útil es el salto hacia adelante y hacia atrás entre bloques de programación. Si nuestro lenguaje define estos bloques con { … } o ( … ) por ejemplo, nos podemos situar encima de un inicio de bloque, el carácter {, luego pulsamos % y nuestro cursor salta directamente hacia el carácter } más cercano. Si volvemos a pulsar % haremos lógicamente el salto hacia atrás.
Si en modo comandos escribimos ! (exclamación), podemos ejecutar comandos de shell dentro de VIM, al terminar la ejecución en shell volvemos al estado de editor.
El comando definitivo:
Espero que este artículo le sea útil a alguien, de todas formas hay un comando que supera a todos los demás. Por eso lo he reservado hasta el final:
:help
Con el comando <:help> entramos en la ayuda de VIM, que consta de un tutorial muy completo, de estos de seguir paso a paso. Esto es la mejor forma de aprender a usar este magnífico editor de texto.
GNU/Linux & Utilidades admin on 19 Feb 2008
Diferencias entre locate, slocate, mlocate y rlocate
Analizamos estos cuatro programas de GNU/Linux que sirven exactamente para lo mismo (buscar archivos en el disco) y que se usan casi de la misma forma.
Ejemplo de uso, buscamos el archivo sshd_config en todo el sistema de ficheros:
$ locate sshd_config /etc/ssh/sshd_config /usr/man/man5/sshd_config.5.gz
LOCATE
El comando locate se usa para buscar archivos en el disco duro. A diferencia del comando find, que es increíblemente potente, locate sólo puede hacer búsquedas simples por nombre de archivo. A cambio de sus limitadas posibilidades, locate es rápido, muy rápido. El truco está en que no busca a lo largo del disco duro como hace find, sinó que busca en una base de datos propia. Esta base de datos es actualizada por el programa updatedb.
Cuando ejecutamos updatedb, esta base de datos se actualiza. Si hacemos cualquier cambio en los archivos (crear, borrar, mover, etc) y después buscamos algo con locate, este va a buscar en una base de datos que no se corresponde exactamente al estado actual del disco. Es por esto que la mayoría de distribuciones de GNU/Linux ejecutan updatedb de forma automatizada (usando cron) de forma periódica, pero la búsqueda puede no ser perfecta a no ser que usemos el comando updatedb justo antes de usar el comando locate.
El primer problema que tiene locate es que updatedb tarda bastante en recorrer el disco duro. El segundo, mucho más grave, es que si existe una base de datos de todos los archivos del disco y esta puede ser consultada por los usuarios, estos pueden conocer el contenido de los directorios a los que no tienen acceso.
Los comandos locate, updatedb y find (entre otros) són parte del paquete findutils de GNU.
SLOCATE
Ya hemos visto los problemas de seguridad que nos encontramos al guardar una base de datos de los archivos en disco si esta puede ser libremente consultada. Slocate (o Secure Locate) viene a solucionar este problema. La gracia está en que cuando se ejecuta updatedb, la base de datos no guarda sólo el nombre de los archivos, sinó que añade los permisos (propietario, grupo, etc). De esta forma, slocate sólo muestra al usuario la información adecuada, la de los archivos a los que tiene acceso.
MLOCATE
En slocate vemos que el problema de seguridad está solucionado, ahora vamos a conocer mlocate (o Merging Locate) que además de implementar la misma solución (está basado en slocate), soluciona el grave problema de velocidad del comando updatedb. Lo que hace mlocate cuando ejecutamos updatedb no es crear una base de datos entera de todos nuestros archivos, sinó guardar sólo las diferencias a la base de datos original, por lo que updatedb es mucho más rápido si han habido pocos cambios.
RLOCATE
Aquí vamos a dejar de lado la tradicional idea de ejecuto updatedb, luego busco. Pero también dejamos de lado la simpleza de los programas anteriores. Rlocate consta, además, de un módulo para el kernel y de un daemon, todos bajo el mismo nombre. Estos son necesaros para que la base de datos se actualize sóla y no necesitemos usar updatedb. A medida que vamos creando/eliminando archivos en el sistema, rlocate crea bases de dafos diferenciales en tiempo real. Sólo vamos a usar updatedb para optimizar la base de datos. Parece ser la mejor solución, el único problema es el propio hecho de estar cargando un módulo y un daemon sólo para poder buscar archivos, la mayoría de la gente prefiere la simpleza de usar slocate o mlocate.
Una vez analizados los cuatro, está muy claro que ganan mlocate y rlocate, el uso de uno u otro dependerá de las ganas de complicarse preparando el sistema para que funcione rlocate (que tampoco hay para tanto) o si preferimos la simpleza de instalar y usar. Aunque en realidad lo normal es no molestarse mucho con el tema y usar lo que incluya nuestra distribución, que con toda probabilidad va a ser slocate o mlocate.
Citas & GNU/Linux admin on 08 Feb 2008
Lo mejor es peor si es diferente
Si haces cosas de forma distinta a Windows, incluso en el caso de que las hagas mejor, no importa. Lo mejor es peor si es diferente.
Linus Torvalds, Entrevistado por Linux Fundation (Enero de 2008)
Via: The Inquirer ES
GNU/Linux & UNIX admin on 18 Jul 2007
Copiar y pegar en Linux
Listado de conocimientos técnicos necesarios para entender este post con éxito:
- Hay que saber seleccionar un texto
- Hay que saber pulsar botones en un mouse
- Hay que saber lo que es un ordenador y como interactuar con él
Podría empezar diciendo algo así como: ¡No se asusten, es igual que en Ruindows!… pero la verdad es que el hecho de copiar y pegar en GNU/Linux (o en cualquier otro sistema operativo tipo UNIX) tiene su gracia. Por supuesto que podemos hacer el clásico Ctrl+C para copiar y Ctrl+V para pegar, y también con el menú Edición –> Copiar, etc. Pero esto no nos importa porque ya sabemos hacerlo
Vamos a hablar del tercer botón del mouse. El tercer botón del mouse es, generalmente, el que hay en la ruedecita de scroll, no pienso analizar el resto de posibilidades. Tanto si estamos en modo texto o en modo gráfico. Tanto si estamos usando un programa de edición de textos, un navegador, una terminal o cualquier otra cosa con textos seleccionables, un clic con el tercer botón (o botón del medio) del mouse pegará el texto que tengamos seleccionado. Así de simple. No hay más.
Por si no ha quedado claro pondré un ejemplo a nivel de parbulario. Seleccionamos una palabra, frase, párrafo, texto, página web, etc como lo hemos hecho toda la vida y hacemos clic con el botón del medio en el lugar donde queramos copiar el contenido.
Si nuestro mouse no tiene más que dos botones, hacer clic con los dos a la vez genera el mismo evento que hacerlo con el tercer botón.
GNU/Linux & Seguridad admin on 16 Mar 2007
Copias de seguridad del MBR y la tabla de particiones en GNU/Linux
En primer lugar tenemos que plantearnos si realmente necesitamos guardar en un fichero el contenido de nuestro Master Boot Record y de nuestra Tabla de Particiones, posiblemente no. Se me ocurren dos casos, a modo de ejemplo, en que puede ser muy útil.
El primero estaria destinado a la clonación de discos, puedes guardar una imagen de cada partición junto con una imagen del sector de arranque. Luego ir al disco destino y volcar esa información sin problemas, consiguiendo un perfecto clon (los dos discos tienen que ser iguales). A mi la clonación de discos no me interesa especialmente, pero ahí queda eso.
El segundo caso es cuando se trata de una copia de seguridad, simplemente. Si eres un fanático de tu distribución favorita y llevas con la misma instalación desde hace 4 años (subsistiendo como un héroe a base de actualizaciones), supongo que no debes tocar a menudo el MBR y mucho menos crear y eliminar particiones. Pero si eres como yo y te dedicas a instalar todo lo que te cae en las manos (físicamente, sin usar virtualización), tendrás el disco bien partido y repartido (Linux permite instalarse en particiones lógicas, por lo que podrías instalar decenas de distribuciones en un sólo disco duro). En este caso es recomendable hacer copias de seguridad del sector de arranque por lo que pueda pasar.
Creando copia de seguridad del MBR:
# dd if=/dev/sda of=/root/backups/mbr bs=512 count=1
Recuperando el MBR a partir de la copia de seguridad:
# dd if=/root/backups/mbr of=/dev/sda bs=512 count=1
dd es una utilidad que, simplemente, copia el contenido de la entrada estándar if en la salida estándar of. En mi caso el disco duro /dev/sda es la entrada y el fichero /root/backups/mbr es la salida (y viceversa para la recuperación). bs es un parámetro que contiene el número de bytes que se van a copiar (el MBR está situado en la pista zero del disco duro, los primeros 512 bytes) y count es un parámetro que contiene el número de bloques que se van a copiar (los bloques son de 512 bytes, por lo que vamos a copiar solo uno, el primero).
Creando copia de seguridad de la Tabla de Particiones:
# sfdisk -d /dev/sda > /root/backups/tabla_part
Recuperando la Tabla de Particiones a partir de la copia de seguridad:
# sdfisk /dev/sda < /root/backups/tabla_part
sfdisk sirve para manipular tablas de particiones en Linux. En la creación de la copia de seguridad usamos el parámetro [-d] para que nos dé una salida en texto plano que pueda ser usada luego para regenerar la tabla. Pasamos esta salida al fichero /root/backups/tabla_part mediante el redireccionador de STDOUT [>]. Para recuperar la tabla sólo hay que usar ese fichero pasándolo por el redireccionador de STDIN [<] hacia el comando sfdisk.
En los ejemplos he usado /dev/sda como disco duro porque es así en mi caso, pero esto puede ser diferente dependiendo de si el disco es IDE, SATA, SCSI o USB. Hay varias formas de saber a qué disco nos estamos refiriendo. una es usar el comando mount para ver las particiones montadas, otra seria leyendo el fichero /etc/fstab donde están las instrucciones de montaje de discos para el arranque. Pero estas opciones no funcionarian por ejemplo des de un Live CD. La solución mas útil para ver todos los discos y particiones (aunque no estén montadas) es:
# fdisk -l
Este comando nos listará todas las particiones (muy útil para detectar un pendrive por ejemplo). Hasta aquí este mini manual, espero que a alguien le pueda ser útil.
GNU/Linux & UNIX & Utilidades admin on 28 Nov 2006
FISH: el shell interactivo amigable
Cuando empezé a usar sistemas operativos tipo-UNIX aluciné con Bash, realmente no tenía nada que ver con usar la linea de comandos en Windows (aunque yo en Windows nunca la usé demasiado, supongo que precisamente por ser poco amigable). Al poco de usar Bash descubrí podia usar otras opciones como zsh, ksh, tcsh pero ninguna me convenció demasiado.
Hasta hace un par de meses, que fué cuando descubrí al grandioso Fish (Friendly Interactive SHell). A diferencia de las otras que probé, esta sí se parecía mucho a Bash, o sea que no tuve que aprender NADA. Solo tuve que usarla durante un tiempo para ir descubriendo poco a poco sus ventajas, entre las cuales están:
- No solo autocompleta directorios, ficheros y comandos como Bash, ¡lo autocompleta todo! Por ejemplo: ssh te autocompleta con tus hosts conocidos o lugares donde conectaste en el pasado; el autocompletado de comandos incluye brebe descripción del ejecutable en cuestión; autocompletado de variables de entorno; autocompletado de las páginas man y help… y mucho más, y todo esto con paginación de los resultados de autocompletado.
- Uso y abuso de colores. El prompt consta de: usuario@host (en blanco) + directorio actual (en verde). Parece cansino pero te acostumbras a los pocos minutos. Cada tipo de fichero tiene su color, por ejemplo los directorios se en azul, los de texto (txt, pdf, rtf…) en violeta, los multimedia (imágenes, musica, video) en un violeta mas rosado, los binarios en verde, los enlaces blandos en azul, los enlazados en rojo, etc.
- Uso de negrita y subrayado para remarcar rutas correctas, ficheros importantes (imágenes, multimedia, directorios, ejecutables), etc
- Atención al error en tiempo real, si lo que estás escribiendo no es un comando (aún), lo marca en rojo, cuando pasa a ser algo coherente lo pinta de verde. Lo mismo se aplica a directorios o ficheros (aunque estos pasan a blanco).
- Ayuda en modo gráfico, por lo que si escribes help te sale un mensaje de “Help is being displayed in firefox” y efectivamente se abre Firefox (o el navegador que uses por defecto) y te muestra esta completísima ayuda.
Casi se me escapa decirlo, toda esta información que Fish añade (descripciones de los ejecutables, hosts conocidos, páginas man y help, etc) no es estática sinó que se busca en tiempo real. Por este motivo puede suponer un problema si se abusa de sus posibilidades en un ordenador antiguo.Por todo esto y mucho más que voy aprendiendo con el tiempo, prefiero Fish a Bash y cuando uso Bash noto que me falta algo.
Podéis ver algunas capturas de pantalla (y más información sobre Fish) en esta página. Para terminar solo decir que Fish no es perfecto, pero merece mucho la pena probarlo.
