sábado, 17 de diciembre de 2011

Estropear y reparar ubuntu con vi


Hoy me he metido en un lío que me ha llevado un buen rato reparar.
Quería permitir que cualquier usuario pueda montar una partición FAT32 que tengo en el ordenador, y la he pifiado modificando /etc/fstab. Linux no arrancaba.

He entrado en modo recuperación. Desde la línea de comandos no podía modificar el archivo fstab, me decía que el sistema de archivos era de sólo lectura.

La solución ha sido volver a montar el sistema de archivos:

mount -rw -o remount /

Y luego editar el archivo para eliminar unos caracteres que había escrito sin darme cuenta al inicio del archivo y que eran la causa del problema.

Para ello no he tenido más remedio que buscar con el portátil en paralelo un manual sencillo de los comandos de vi. Editor que odio con toda mi alma, pero al que no tengo más remedio que estar eternamente agradecido.

Por suerte he podido encontrar este manual de vi, gracias al que he podido editar y guardar el archivo corregido.


What is vi?

The default editor that comes with the UNIX operating system is called vi (visual editor). [Alternate editors for UNIX environments include pico andemacs, a product of GNU.]

The UNIX vi editor is a full screen editor and has two modes of operation:
1. Command mode commands which cause action to be taken on the file, and
2. Insert mode in which entered text is inserted into the file.

In the command mode, every character typed is a command that does something to the text file being edited; a character typed in the command mode may even cause the vi editor to enter the insert mode. In the insert mode, every character typed is added to the text in the file; pressing the <Esc>(Escape) key turns off the Insert mode.
While there are a number of vi commands, just a handful of these is usually sufficient for beginning vi users. To assist such users, this Web page contains a sampling of basic vi commands. The most basic and useful commands are marked with an asterisk (* or star) in the tables below. With practice, these commands should become automatic.
NOTE: Both UNIX and vi are case-sensitive. Be sure not to use a capital letter in place of a lowercase letter; the results will not be what you expect.


To Get Into and Out Of vi


To Start vi

To use vi on a file, type in vi filename. If the file named filename exists, then the first page (or screen) of the file will be displayed; if the file does not exist, then an empty file and screen are created into which you may enter text.

* vi filename edit filename starting at line 1
vi -r filename recover filename that was being edited when system crashed


To Exit vi

Usually the new or modified file is saved when you leave vi. However, it is also possible to quit vi without saving the file.
Note: The cursor moves to bottom of screen whenever a colon (:) is typed. This type of command is completed by hitting the <Return> (or <Enter>) key.

* :x<Return> quit vi, writing out modified file to file named in original invocation
:wq<Return> quit vi, writing out modified file to file named in original invocation
:q<Return> quit (or exit) vi
* :q!<Return> quit vi even though latest changes have not been saved for this vi call



Moving the Cursor

Unlike many of the PC and MacIntosh editors, the mouse does not move the cursor within the vi editor screen (or window). You must use the the key commands listed below. On some UNIX platforms, the arrow keys may be used as well; however, since vi was designed with the Qwerty keyboard (containing no arrow keys) in mind, the arrow keys sometimes produce strange effects in vi and should be avoided.
If you go back and forth between a PC environment and a UNIX environment, you may find that this dissimilarity in methods for cursor movement is the most frustrating difference between the two.
In the table below, the symbol ^ before a letter means that the <Ctrl> key should be held down while the letter key is pressed.

* j or <Return>
[or down-arrow]
move cursor down one line
* k [or up-arrow] move cursor up one line
* h or <Backspace> [or left-arrow] move cursor left one character
* l or <Space> [or right-arrow] move cursor right one character
* 0 (zero) move cursor to start of current line (the one with the cursor)
* $ move cursor to end of current line
w move cursor to beginning of next word
b move cursor back to beginning of preceding word
:0<Return> or 1G move cursor to first line in file
:n<Return> or nG move cursor to line n
:lt;Return> or G move cursor to last line in file



Screen Manipulation

The following commands allow the vi editor screen (or window) to move up or down several lines and to be refreshed.

^f move forward one screen
^b move backward one screen
^d move down (forward) one half screen
^u move up (back) one half screen
^l redraws the screen
^r redraws the screen, removing deleted lines



Adding, Changing, and Deleting Text

Unlike PC editors, you cannot replace or delete text by highlighting it with the mouse. Instead use the commands in the following tables.
Perhaps the most important command is the one that allows you to back up and undo your last action. Unfortunately, this command acts like a toggle, undoing and redoing your most recent action. You cannot go back more than one step.
* u UNDO WHATEVER YOU JUST DID; a simple toggle

The main purpose of an editor is to create, add, or modify text for a file. 

Inserting or Adding Text

The following commands allow you to insert and add text. Each of these commands puts the vi editor into insert mode; thus, the <Esc> key must be pressed to terminate the entry of text and to put the vi editor back into command mode.

* i insert text before cursor, until <Esc> hit
I insert text at beginning of current line, until <Esc> hit
* a append text after cursor, until <Esc> hit
A append text to end of current line, until <Esc> hit
* o open and put text in a new line below current line, until <Esc> hit
* O open and put text in a new line above current line, until <Esc> hit


Changing Text

The following commands allow you to modify text.

* r replace single character under cursor (no <Esc> needed)
R replace characters, starting with current cursor position, until <Esc> hit
cw change the current word with new text,
starting with the character under cursor, until <Esc> hit
cNw change N words beginning with character under cursor, until <Esc> hit;
e.g., c5w changes 5 words
C change (replace) the characters in the current line, until <Esc> hit
cc change (replace) the entire current line, stopping when <Esc> is hit
Ncc or cNc change (replace) the next N lines, starting with the current line,
stopping when <Esc> is hit



Deleting Text

The following commands allow you to delete text.

* x delete single character under cursor
Nx delete N characters, starting with character under cursor
dw delete the single word beginning with character under cursor
dNw delete N words beginning with character under cursor;
e.g., d5w deletes 5 words
D delete the remainder of the line, starting with current cursor position
* dd delete entire current line
Ndd or dNd delete N lines, beginning with the current line;
e.g., 5dd deletes 5 lines


Cutting and Pasting Text

The following commands allow you to copy and paste text.
yy copy (yank, cut) the current line into the buffer
Nyy or yNy
copy (yank, cut) the next N lines, including the current line, into the buffer
p put (paste) the line(s) in the buffer into the text after the current line



Other Commands


Searching Text

A common occurrence in text editing is to replace one word or phase by another. To locate instances of particular sets of characters (or strings), use the following commands.

/string search forward for occurrence of string in text
?string search backward for occurrence of string in text
n move to next occurrence of search string
N move to next occurrence of search string in opposite direction


Determining Line Numbers

Being able to determine the line number of the current line or the total number of lines in the file being edited is sometimes useful.

:.= returns line number of current line at bottom of screen
:= returns the total number of lines at bottom of screen
^g provides the current line number, along with the total number of lines,
in the file at the bottom of the screen



Saving and Reading Files

These commands permit you to input and output files other than the named file with which you are currently working.
:r filename<Return> read file named filename and insert after current line
(the line with cursor)
:w<Return> write current contents to file named in original vi call
:w newfile<Return> write current contents to a new file named newfile
:12,35w smallfile<Return> write the contents of the lines numbered 12 through 35 to a new file named smallfile
:w! prevfile<Return> write current contents over a pre-existing file named prevfile



Manual tomado de http://www.cs.colostate.edu/helpdocs/vi.html

jueves, 8 de diciembre de 2011

lunes, 21 de noviembre de 2011

Y ahora las teclas de función

La tecla Fn no funciona por defecto con el EeePC 1015PX y ubuntu 10.4. Como decía Mulder la verdad está ahí fuera, y la solución también. Buscando en google encuentras un par de comandos:
Uno para abrir el editor de configuración de grub

sudo gedit /etc/default/grub

hay que buscar la línea donde pone:


GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

hay que poner

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux acpi_backlight=vendor"

Se cierra y se guarda el archivo, y se ejecuta un segundo comandopara actualizar el grub.

sudo update-grub

Después de reiniciar, problema resuelto

siempre me olvido del gconf-editor

Siempre me pasa lo mismo, cuando instalo ubuntu en una máquina nueva o si lo estoy reinstalando desde cero tengo que acabar buscando en google para ver cómo se configuran las cosas más sencillas. Como por ejemplo mostrar en el escritorio la papelera de reciclaje o mi carpeta de usuario. También me gusta poner los botónes de minimizar, maximizar y cerrar a la derecha de las ventanas. Manías que tiene uno.

La forma de configurar todo esto siempre es el dichoso gconf-editor. Se lanza desde el lanzador de aplicaciones (alt-F2) y se puede configurar en apps->nautilus lo que quiero mostrar en el escritorio, y en apps->metacity->general->button layout el tema de los botones de minimizar, maximizar y cerrar.

Seguro que la próxima vez volveré a no acordarme ni de cómo se hace, ni de que lo escribí aquí para acordarme.

domingo, 20 de noviembre de 2011

Cómo añadir una máquina nueva a ubuntu one

Hasta ahora no había tenido problema siguiendo el procedimiento normal, pero estoy configurando el ubuntu de mi nuevo netbook y al ir a gestionar cuentas, no me sale el dichoso botón para añadir la máquina.

He buscado y encontrado la solución, abrir una consola y ejecutar el siguiente comando:

u1sync --authorize

Se abrirá el navegador y te llevará directo a la página con el botón de añadir esta máquina.

Problema resuelto

u1sync --authorize

miércoles, 16 de noviembre de 2011

Cómo linux me hace la vida más fácil

Un caso concreto: tengo un montón de carpetas en las que un operario con una máquina crea un archivo, y en un momento determinado necesito separar las carpetas vacías (el trabajo que me falta por hacer), que están mezcladas con las que ya tengo hechas. Estoy hablando de miles de carpetas. ¿Cómo puedo hacerlo? La búsqueda de windows me permite encontrar archivos vacíos pero  no carpetas vacías...

Un par de búsquedas en google y linux acude al rescate:

Me copio la carpeta con todo a otra ubicación, busco las carpetas que no están vacías

find . -mindepth 5 -maxdepth 5 -not -empty -type d > carpetasllenas.txt

Las borro:

xargs rm -r < carpetasllenas.txt

Y ya tengo en la nueva ubicación las carpetas que me falta por llenar.









viernes, 27 de mayo de 2011

¿De qué operador es este número?

Hace unos años era fácil saber a qué operador de telefonía correspondía un número de teléfono móvil. Ahora con la portabilidad de números entre operadores la cosa se complica. La página de la comisión del mercado de telecomunicaciones ofrece a los usuarios la posibilidad de consultar a qué operadora pertenece un número de teléfono móvil.

Introduciendo el número de teléfono en este formulario, en un momento tendremos la respuesta.

lunes, 9 de mayo de 2011

Error actualizaciones en android

Hoy ya me he cansado de tener siempre errores en las actualizaciones en mis aplicaciones android. Me di cuenta el otro día que solo ocurría al intentar actualizar las aplicaciones que había movido a la memoria SD del teléfono, y que si las volvía a mover al teléfono sí se actualizaban y podía volver a moverlas a la tarjeta después. Vaya engorro.

La solución la he encontrado aquí: 

http://www.androidpolice.com/2011/04/19/fixing-the-couldnt-install-on-usb-storage-or-sd-card-problem-on-android/

Consiste en abrir la carpeta .android_secure y borrar el archivo smdl2tmp1.asec

Después de eso ya he conseguido actualizar las aplicaciones sin errores. Vaya tontería ¿no?

domingo, 1 de mayo de 2011

Redimensionar imágenes online

Acabo de descubrir una aplicación muy práctica online. No es absolutamente precisa pero hace su papel.

Permite recortar y cambiar la resolución a una imagen online. Se sube la imagen, se procesa y se descarga el resultado. Así de simple.

Existen cientos, pero esta es la que he probado yo y me ha funcionado.

http://www.picresize.com/

martes, 19 de abril de 2011

Búsqueda avanzada en gmail

He llegado a esta tabla buscando y la quiero tener como referencia siempre siempre siempre, así que me la quedo aquí.

Operador
Definición
Ejemplos
from:
Se emplea para especificar el remitente.
Ejemplo: from:ana
Hace referencia a todos los mensajes que provienen de Ana.
to:
Se emplea para especificar el destinatario.
Ejemplo: to:david
Hace referencia a todos los mensajes que tú u otro usuario habéis enviado a David.
subject:
Permite buscar palabras en la línea de asunto.
Ejemplo: subject:cena
Hace referencia a los mensajes que tienen la palabra "cena" en el asunto
OR
Permite buscar mensajes que coincidan con el término A o B*.
*El parámetro OR debe escribirse en mayúsculas.
Ejemplo: from:ana OR from:david
Hace referencia a los mensajes que provienen de Ana o David.
-
(guión)
Se emplea para excluir mensajes de la búsqueda.
Ejemplo: cena -película
Hace referencia a los mensajes que contienen la palabra "cena", pero no contienen la palabra "película".
label:
Buscar mensajes por etiqueta*
*No existen operadores para buscar mensajes sin etiqueta.
Ejemplo: from:ana label:amigos
Hace referencia a todos los mensajes que provienen de Ana.que contienen la etiqueta "amigos"
Ejemplo: from:david label:mi-familia
Hace referencia a los mensajes que provienen de Davidque tienen la etiqueta "Mi familia"
has:attachment
Permite buscar mensajes que contienen archivos adjuntos.
Ejemplo: from:david has:attachment 
Hace referencia a los mensajes que provienen de David y quecontienen un archivo adjunto .
list:
Buscar mensajes en listas de correo
Ejemplo - list:info@example.com 
Hace referencia a los mensajes que contienen las palabras info@example.com en los encabezados, enviados a o desde esta lista
filename:
Permite buscar un archivo adjunto por nombre o tipo.
Ejemplo: filename:tareadefísica.txt
Hace referencia a los mensajes con un archivo adjunto llamado "tareadefísica.txt"
Ejemplo: label:trabajo filename:pdf
Hace referencia a los mensajes etiquetados "trabajo" que también contienen un archivo PDF como archivo adjunto
" "
(comillas)
Se emplean para buscar una frase exacta*.
*No se distingue entre mayúsculas y minúsculas.
Ejemplo: "voy a tener suerte"
Hace referencia a los mensajes que contienen la frase "voy a tener suerte" o "voy a tener suerte"
Ejemplo: subject:"cena y una película"
Hace referencia a los mensajes que contienen la frase "cena y una película" en el asunto
( )
Se emplea para agrupar palabras.
Se utiliza para especificar términos que no deben excluirse.
Ejemplo: from:ana (cena OR película)
Hace referencia a todos los mensajes que provienen de Ana que contienen la palabra "cena" o la palabra "película"
Ejemplo: subject:(cena película)
Lo que significa: mensajes en los cuales el asunto contiene la palabra "cena" y la palabra "película"
in:anywhere
Permite buscar mensajes en cualquier lugar de Gmail*.
*Los mensajes que se encuentran en Spam Papelera se excluyen de las búsquedas de forma predeterminada.
Ejemplo: in:anywhere película 
Hace referencia a los mensajes en TodosSpam y Papeleraque contienen la palabra "película".
in:inbox
in:trash
in:spam
Permite buscar mensajes en las carpetas RecibidosPapelera o Spam.
Ejemplo: in:trash from:ana 
Hace referencia a los mensajes que provienen de Ana y que se encuentran en la Papelera .
is:starred
is:unread
is:read
Permiten buscar mensajes destacados, leídos y no leídos.
Ejemplo: is:read is:starred from:David
Hace referencia a los mensajes que provienen de David que se han leído y se han marcado con una estrella.
cc:
bcc:
Se emplean para especificar destinatarios en los campos CC: o CCO:*.
*Buscar en CCO: no permiten recuperar mensajes si usted figura en dicho campo.
Ejemplo: cc:David 
Hace referencia a los mensajes enviados que incluyen a David en el campo CC.
after:
before:
Permite buscar mensajes enviados dentro de un período de tiempo concreto.*
*El formato de las fechas debe ser aaaa/mm/dd.
Ejemplo: after:2004/04/16 before:2004/04/18 
Hace referencia a los mensajes enviados entre el 16 de abril de 2004 y el 18 de abril de 2004*.
*Más exacto: los mensajes enviados después de las 12:00 AM (o 00:00) del 16 de abril de 2004 y antes del 18 de abril de 2004.
is:chat
Permite buscar mensajes del chat.
Ejemplo: is:chat mono
Hace referencia a los mensajes del chat que incluyan la palabra "mono".

viernes, 28 de enero de 2011

Manual para programar scripts en bash

A ver si me aficiono un poco a esto, dedicarle un poco de constancia le puede hacer la vida más fácil a cualquier usuario.


http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html

Y si usas windows, no problemo, también se puede instalar un emulador de bash para windows, cygwin.

martes, 18 de enero de 2011

Window expander for youtube

Una extensión para chrome que me ha gustado, se trata de expandir la ventana del vídeo en youtube para ver el vídeo más grande sin pasar a pantalla completa. La voy a probar un poco.

https://chrome.google.com/extensions/detail/fkpaakpeehepibjpdmoocdaonognfiog?hl=es