Trabajo con ficheros de texto Ficheros de texto ● En Linux se usan los ficheros de texto para muchas cosas: – – – – Documentación de programas Ficheros de configuración Guiones del Shell Archivos de registro (log files) Visualización de ficheros de texto cat miFichero.txt less otroFichero.txt tail miFichero.txt head miFichero.txt cat F1.txt F2.txt F3.txt El editor vi (vim) ● ● ● Para editar texto desde el Shell hay principalmente tres editores: ed, vi y emacs. vi es potente y está en todas las instalaciones (o está vim que es el vi mejorado) Conviene saber manejarlo ya que a veces hay que editar algún archivo desde la consola de texto. Modos del vi ● Dos modos: edición y comandos ● Al arrancar está en modo comando. ● Los comandos de inserción son: – i - Inserta texto antes del carácter sobre el que está el cursor. – a - Inserta texto después del carácter sobre el que está el cursor. – I - Inserta texto al comienzo de la línea en la que está el cursor. – A - Inserta texto al final de la línea en la que está el cursor. – o - Abre espacio para una nueva línea después de la línea en la que está el cursor y permite insertar texto en la nueva línea. – O - Análogo al anterior, pero abre espacio en la línea anterior. Comandos ● ● Si se está insertando, Esc pasa a modo comando. Un resumen de comandos es: – – – Eliminar texto: dd elimina la línea actual, ndd id. n líneas, dw una palabra. Búsqueda: (seguido de un texto) / busca adelante, ? atrás. Cortar y pegar: yy copia la línea al buffer, p pega Comandos de línea en vi ● Comienzan todos con : ● Se puede poner más de uno. – – – – – – :w – Guardar el fichero :w! - Forzar guardar :q – Finalizar :q! :s/palabra/reemplazamiento/ - Reemplaza palabra por reemplazamiento a partir del cursor. :help – Pues eso. Búsqueda de palabras ● grep permite buscar palabras en un fichero. grep 'lo que quiero buscar' miFichero.txt ● ● ● busca 'lo que quiero buscar' en miFichero.txt y escribe la línea donde lo encontró Lo mejor de grep es que podemos poner nombres de fichero con plantillas, y además buscar recursivamente: grep -r 'buscar' * Además se puede indicar lo que se busca con expresiones regulares. Comparación de ficheros ● ● diff fichero1 fichero2 Compara los dos ficheros y escribe las líneas distintas. Procesos Introducción ● ● ● ● Al iniciar un programa, se pone en marcha 1 o más procesos. Además de los procesos del usuario, el sistema pone muchos en marcha. Podemos ver los que están en marcha con top El programa presenta solamente los que caben, pero en la cabecera podemos ver los que hay. top ● Las columnas mostradas son: – PID – Identificador de proceso – USER – El usuario propietario. Si son de root, no se pueden matar más que por él. – PR – Prioridad (-20 la mayor y 19 la menor) – NI – (nice) Si es negativo indica que no quiere ser interrumpido – VIRT – Memoria virtual usada – RES – Memoria real usada – SHR Memoria compartida – S – S dormido, R en marcha, Z zombie – %CPU – Porcentaje de CPU usado – %MEM – Uso de memoria – TIME+ - Tiempo en marcha – COMMAND – El nombre del programa Comandos top ● ● ● ● Con r se puede reiniciar un proceso poniendo nueva prioridad. r <PID> <PRIOR> Con k se mata un proceso: k <PID> (si es nuestro) Si no muere, puede que sea el hijo de otro que está vivo, entonces hay que ver quien es el padre escribiendo f b Enter que dice quien es el padre, e ir a por él. Podemos ver solamente los nuestros con el comando u y luego el usuario. Otros comandos para procesos ● ps -aux lista procesos ● kill <PID> mata procesos. Truquillos Autocompletar ● Si tenemos que escribir un nombre largo pero único podemos comenzarlo y luego pulsar el tabulador y se rellena solo. Si no es único, pulsando dos veces nos dice las posibilidades Histórico ● ● ● BASH recuerda todo lo que se ha tecleado y lo almacena en un fichero. Se puede utilizar la historia para repetir comandos mediante las flechas de posición. Se puede ver todo tecleando history Pipas ● Permiten pasar la salida de un comando como entrada de otro, por ejemplo: ls -l | more Para que un listado largo se pare. history | less ● Para buscar un nombre de fichero en un listado (-i no hace caso de may y min): ls -l | grep -i pepe | grep -i ton ● Redirección ● Pasa la salida a un fichero en lugar de otro programa. O toma la entrada de un fichero ls -l > listadoDirec.txt ● cat f1.txt f2.txt > junto.txt sort <f1.txt >clasificado.txt