IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
CONTENIDO
Comandos para paginar, visualizar y editar ......................................................................... ......................................................................... 2 Comando cat ............................................................................................................ ............................. 2 Comandos more y less ............................................................. ............................................................. 2 Comandos tail y head ........................................ ................................................................. .................. 3 Editor vi ............................................................. ................................................................. .................. 3 Otros editores. ...................................................................................................................................... 4 Comando echo ......................................................................................................... ............................. 5
Comandos para hacer búsquedas de ficheros y patrones .................................................... 6 Comando grep ........................................................................ .............................................................. 6 Comando find ................................................................................................ ....................................... 7 Comando locate ....................................................................................................... ............................. 8
Comandos de información i nformación y filtrado de ficheros .................................................................. 8 Comando file ........................................................................... ............................................................. 8 Comando stat ................................................................................................ ........................................ 8 Comando sort ....................................................................................................................................... 8 Comando uniq ........................................................................ .............................................................. 9 Comando wc ............................................................................................................ ........................... 10 Comando cut....................................................................................................................................... 11 Comando sed ................................................................................................ ...................................... 12
TEMA 6.2
Página. 1
I.E.S. Fco. Romero Vargas.
I.S.O. Linux. Comandos básicos. José Antonio Carrasco Díaz.
© Creative Commons
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
COMANDOS PARA PAGINAR, VISUALIZAR Y EDITAR COMANDO CAT El comando cat concatena ficheros y los imprime en la salida estándar. Si no se le pasa ningún argumento lee de la entrada estándar.
Si a cat solo se le pasa como parámetro un único fichero, lo muestra por pantalla sin concatenar nada. Si a cat no se le pasan argumentos, tomará la entrada de la entrada estándar (teclado) y ejecutará la salida sobre la salida estándar (pantalla). Cuando estemos en una situación de este tipo (la entrada estándar está establecida en el teclado) veremos como las pulsaciones de tecla no las interpreta nuestra shell (bash) sino la orden ejecutada. Para salir de este modo e indicar que queremos cerrar la entrada se pulsa la combinación de teclas Control D
COMANDOS MORE Y LESS Los comandos more y less paginan (dividen en páginas) uno o varios ficheros y los muestran en la salida estándar (pantalla). Se diferencian en las facilidades que brindan. Por ejemplo more es más restrictivo en cuanto al movimiento dentro del texto, mientras que less no limita este aspecto pues acepta el empleo de todas las teclas de movimiento tradicionales. Cuando se alcanza el final del último fichero a paginar, more termina automáticamente, no así less. Podéis probar a ejecutar alguna de las siguientes órdenes para visualizar ficheros existentes en vuestro Linux. less /etc/passwd more /etc/passwd less /etc/vga/libvga.config
Algunas teclas que podemos usar mientras usamos estos programas son: q
permite interrumpir el proceso y salir.
/p
realiza búsquedas del patrón p dentro del texto. Para repetir la búsqueda del mismo patrón sólo es necesario escribir / de nuevo.
TEMA 6.2
Página 2
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13 El comando man, para dar formato a su salida, utiliza por defecto como visualizador less. Existen además los comando zless y zmore que permiten paginar con less y more respectivamente los ficheros comprimidos sin necesidad de descomprimirlos previamente.
COMANDOS TAIL Y HEAD Tail y head también son visualizadores como less y more, pero tienen la particularidad de que únicamente muestran las primeras líneas del fichero (head) o bien las últimas líneas del fichero (tail). Por defecto ambas órdenes muestran 10 líneas (bien las primeras o las últimas). Esto podemos configurarlo mediante el uso de parámetros. Así, si indicamos -3 al llamar a la orden, indicaremos que solo queremos recuperar 3 líneas.
EDITOR VI El editor VI es el editor estándar de GNU. Es un editor no demasiado amigable con el usuario, pero tiene la gran ventaja de que está incluido en todos los sistemas que nos podamos encontrar, cosa que no sucede con ningún otro editor de texto. En realidad la versión que vamos a usar no es Vi sino Vim (Vi Improved), y es un editor tremendamente potente que una vez que se aprende a usar permite realizar con el cosas realmente impresionantes. Vi puede ser ejecutado directamente o bien pasándole como parámetro el nombre de un fichero de texto. Una vez abierto el fichero, podemos desplazarnos por el con los cursores, o bien con las teclas h, j, k, l. El editor Vi puede estar en 4 modos operativos distintos:
Modo regular: Es el modo normal en el que nos encontramos cuando abrimos un archivo, y nos
permite la introducción de comandos de Vi. Para regresar a este modo desde cualquiera otro, hay que pulsar la tecla Escape. Modo de inserción: Este modo nos permite introducir caracteres en nuestro fichero de texto. Es el método normal para la introducción de texto, y para llegar a este modo desde el modo regular simplemente tenemos que pulsar la tecla Insertar en el teclado o bien pulsar la tecla i desde el modo regular. Modo de reemplazo: Este modo nos permite reemplazar el texto del fichero por texto que nosotros escribamos. Para llegar a este modo debemos pulsar la tecla r desde el modo regular. Modo Visual: En este modo podemos movernos con los cursores para seleccionar texto. Para entrar en este modo hay que pulsar V desde el modo regular. Una vez en este modo podemos copiar texto con Y cortar texto con C y pegar texto con P.
Hay que recordar siempre que el movimiento con los cursores solo está permitido en el modo regular. Este es uno de los principales errores que los principiantes suelen cometer al usar Vi. Si pulsamos los cursores desde el modo de inserción o el modo de reemplazo veremos cómo empiezan a aparecer caracteres en pantalla y ocurrirán “cosas extrañas” con nue stras líneas de texto. Si estamos escribiendo texto y queremos movernos por la razón que sea, hay que pasar siempre antes al modo regular pulsando la tecla Escape. Algunos comandos básicos de Vi que podemos invocar desde el modo regular son: TEMA 6.2
Página 3
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13 Comando
Descripción.
:q
Salir de Vi. (Si el fichero de texto no se ha grabado, no funcionará)
:q!
Salir de Vi de forma obligada, sin comprobar si el fichero ha cambiado o no.
:wq
Salir de Vi pero antes grabar el fichero. (w – graba).
:nombre
Cambia el nombre del fichero que estamos editando a nombre.
x
Elimina el carácter que está en ese momento bajo el cursor.
dd
Elimina la línea completa que está bajo el cursor.
d nd
Elimina n líneas empezando por la que está bajo el cursor.
nx
Elimina n caracteres empezando por el que está bajo el cursor.
n>>
Indenta n líneas a la derecha.
n<<
Indenta n líneas a la izquierda.
/cadena
Busca la cadena indicada. Los próximos resultados se muestran solo con la /
:s/cad1/cad2/
Sustituye la primera aparición de la cadena de texto cad1 por cad2.
:%s/cad1/cad2/
Sustituye todas las apariciones de cad1 por cad2.
nyy
Copia n líneas al portapapeles comenzando por la línea que está bajo el cursor.
p
Pega el contenido del portapapeles en la posición del cursor.
ndd
Corta n líneas al portapapeles, comenzando por la línea que está bajo el cursor.
u
Deshace (undo) el último cambio producido en el fichero.
un
Vuelve al nº cambio realizado al fichero y lo deshace.
:undolist
Nos da la lista de cambios efectuados en el documento
:número
Se posiciona en la línea número del fichero
gg
Se posiciona al principio del fichero
G
Se posiciona al final del fichero
:g/^\s*$/d
Elimina todas las líneas en blanco de un fichero (expresión regular).
OTROS EDITORES. En estos apuntes únicamente hemos hablado de Vi ya que es el editor de texto por defecto en Gnu, pero podemos usar una multitud de editores distintos. Un editor muy usado y que es tan potente como Vi es el emacs, y su único problema consiste en que pesa bastante y no suele venir incluido por defecto en la mayoría de las distribuciones. Un editor muy simple de usar y que si suele venir incluido en las distribuciones modernas es el nano. Este editor suele ser el más usado por parte de los alumnos en clase, ya que es rápido y funcional. Una práctica poco recomendable es usar editores de texto gráficos, ya que nos vamos a encontrar en muchas ocasiones en que no vamos a poder tener acceso a consolas gráficas, y además muchos de estos programas tienden a introducir caracteres extraños en los ficheros.
TEMA 6.2
Página 4
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
COMANDO ECHO El comando echo nos permite escribir directamente por la salida estándar una serie de cadenas que se le pasan como argumentos, separando cada cadena por un espacio en blanco y añadiendo un retorno de línea tras de la última cadena.
Sintaxis: echo –ne cadena1 cadena2 ….. -n sirve para no añadir el retorno de línea al final del echo -e activa la interpretación de los caracteres de escape de barra invertida.
Podemos indicar códigos especiales a las órdenes en Linux (tabuladores, retornos de línea, retrocesos, etc.) a las órdenes en Linux utilizando los caracteres de escape de barra invertida. Algunos de los más usados son: Código
Interpretación
\\b
Espacio hacia atrás
\\c
Suprime toda la salida posterior
\\n
Línea nueva
\\r
Retorno de carro o lo que es lo mismo, retorno de línea.
\\t
Tabulador
\\v
Tabulador vertical
\\
Barra invertida (Nos permite escribir una barra invertida).
Un par de ejemplos de echo utilizando códigos de barra invertida.
TEMA 6.2
Página 5
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
COMANDOS PARA HACER BÚSQUEDAS DE FICHEROS Y PATRONES COMANDO GREP El comando grep (Globally Regular Expressions Pattern) busca patrones de texto en ficheros. Por defecto devuelve todas las líneas que contienen un patrón (cadena de texto) determinado en uno o varios ficheros, pero utilizando las opciones se puede variar mucho este comportamiento. Si no se le pasa ningún fichero como argumento hace la búsqueda en la entrada estándar. Sintaxis: grep [opciones]
[ficheros] Algunas opciones: -c -i -H -l -v -r -n
devuelve sólo la cantidad de líneas que contienen el patrón. ignora las diferencias entre mayúsculas y minúsculas. imprime además de las líneas, el nombre del fichero donde se encontró el patrón. Muestra solo los nombres de los ficheros donde se encontró al patrón. devuelve las líneas que NO contienen el patrón. busca en un directorio de forma recursiva. imprime el número de cada línea que contiene al patrón.
TEMA 6.2
Página 6
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
COMANDO FIND El comando find es uno de los más poderosos en un sistema Linux. Permite buscar de forma recursiva en un directorio todos los ficheros que cumplan ciertas condiciones. Las condiciones pueden estar relacionadas con el nombre de los ficheros, el tamaño, los permisos, el tipo, las fechas de acceso y modificación, etc. Sintaxis: find [ruta_desde_donde_se_busca] [opciones de búsqueda] Algunas opciones: -name -iname -type -size +/- -maxdepth -perm [+|-] -print -printf -exec ;
permite especificar patrones para los nombres de los ficheros a buscar. igual que el anterior, pero ignora mayúsculas/minúsculas permite indicar el tipo de fichero a buscar. permite indicar el tamaño máximo y/o mínimo de los ficheros a buscar. indica cual es el nivel máximo de subdirectorios que tendrá en cuenta la orden permite referirse a aquellos ficheros con unos permisos dados. El valor de se expresa en forma numérica. Imprime cada nombre de fichero encontrado por la salida estándar Imprime cada nombre de fichero encontrado por la salida estándar, pero nos permite especificar varios formatos que condicionan dicha salida (ver man). permite definir un comando a ejecutarse para cada resultado de la búsqueda. La cadena {} se sustituye por el nombre de los ficheros encontrados. El carácter punto y coma entre comillas “ ;” indica la finalización del comando.
Vemos en este último ejemplo como con una única orden find conseguimos buscar todas las imágenes con extensión jpg que existan en el directorio /home o en cualquiera de sus subdirectorios y copiar cada una de ellas al directorio /root/fotos. Modificad esta orden para que en lugar de copiar mueva las fotos, y para que lo haga únicamente con las fotos que tengan más de 5 KB.
TEMA 6.2
Página 7
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
COMANDO LOCATE El comando locate busca en una base de datos, actualizada periódicamente, todos los paths (ruta de los ficheros) en la jerarquía de ficheros que contengan una cadena determinada. Para crear esta base de datos o actualizarla se debe invocar por root el comando updatedb (o ejecutar locate -u). En las distribuciones actuales esta tarea se hace de forma automática al iniciar el equipo.
COMANDOS DE INFORMACIÓN Y FILTRADO DE FICHEROS COMANDO FILE El comando file determina con cierto grado de precisión el tipo de un fichero que se le pasa como argumento.
COMANDO STAT El comando stat muestra las características de un fichero. Por ejemplo: su nombre, permisos, tamaño en bytes, número del i-nodo que lo representa, las fechas de modificación y acceso, el tipo, el dueño, el grupo, etc.
COMANDO SORT El comando sort ordena las líneas de un fichero mostrándolas por la salida estándar. De no especificarse un fichero toma la información a ordenar de la entrada estándar. Sintaxis: sort [opciones] [fichero] Algunas opciones: -r : ordena al revés. -f : trata las mayúsculas y minúsculas por igual. TEMA 6.2
Página 8
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
Como prueba cread un fichero llamado texto e insertad en el mismo 5 nombres, cada uno en una línea. Ordenad dicho fichero con el comando sort texto. Cread otro fichero llamado números e insertad en el mismo 10 números, cada uno de ellos en una línea y aseguraros de que tienen distinto número de dígitos. Ordenad dicho fichero con el comando sort números. ¿Está bien ordenado?
Vemos como no se ordena bien, ya que esta ordenando de forma alfanumérica una lista numérica. Mirad en la página de man sobre el comando sort, a ver si encontráis la opción que ordena de forma numérica.
COMANDO UNIQ El comando uniq elimina las líneas repetidas de un fichero ordenado, imprimiéndolo por la salida estándar o en otro fichero argumento. De no especificarse un fichero toma la entrada estándar. Sintaxis: uniq [opciones] [fichero] [salida] Algunas opciones: -c : utiliza como prefijo en cada línea (pone al principio) su número de ocurrencias (el número de veces que aparece la línea repetida). -d : solo imprime las líneas duplicadas.
TEMA 6.2
Página 9
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
Vemos como en este ejemplo anterior parece que el comando uniq no ha realizado bien su función. El problema radica en que el fichero animalesr.txt no está ordenado y es obligatorio que lo esté para poder usar uniq. Vamos a ordenar el fichero usando el comando sort (vamos a utilizar una redirección, cosa que explicaremos en el próximo tema).
COMANDO WC El comando wc (Word Count) imprime el número de líneas, palabras y bytes de uno o varios ficheros. Si son varios ficheros hace también un resumen de los totales. De no especificarse un fichero toma la entrada estándar. Sintaxis: wc [opciones] [ficheros] Algunas opciones: -l -c -w
sólo cuenta líneas. sólo cuenta bytes. sólo cuenta palabras.
TEMA 6.2
Página 10
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
COMANDO CUT Como su propio nombre indica, el comando cut tiene la característica de poder cortar caracteres y campos, con la posibilidad de usar delimitadores y otras opciones para finalmente extraer las partes seleccionadas de cada fichero en la salida estándar. El comando cut nos ofrece los siguientes argumentos: -b -c -d -f
muestra solamente estos bytes selecciona solamente estos caracteres selecciona el carácter que separa los campos selecciona solamente estos campos
Ahora que hemos visto las opciones –d (delimitador) y –f (campo) aprovecho para indicaros que el comando sort que hemos visto anteriormente también dispone de estas opciones, aunque en el sort el delimitador se indica con –t y el campo con –k.
TEMA 6.2
Página 11
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
COMANDO SED En realidad sed no es un comando, sino un editor de textos que está diseñado para ser usado desde línea de comandos. Es muy útil cuando queremos modificar texto de forma no interactiva, veamos un ejemplo de uso de este editor: La sintaxis de sed es la siguiente: sed [opciones] [fichero] Las opciones de sed son: -n -e -E
Suprime la salida por pantalla de sed, mostrando solo lo que se obligue a mostrar. Activa la interpretación de los caracteres especiales Desactiva la interpretación de los caracteres especiales
La orden sed acepta muchos comandos propios, nosotros vamos a ver solo algunos de ellos en estos apuntes, para conocer el resto consultad la página del man sobre sed.
d
borra
s/cadena1/cadena2
sustituye cadena1 por cadena2
Vemos como s por defecto sustituye solo la primera aparición de cadena1 en cada línea, si queremos que lo haga para todas las apariciones, tenemos que añadir una g al final del comando.
TEMA 6.2
Página 12
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13
p
Obliga a imprimir texto.
Una forma habitual de trabajar con sed es utilizando expresiones regulares. Este tipo de expresiones regulares no solo se usan con sed, sino con bastantes comandos de Linux, es por ello que vamos a detenernos para verlas un momento. Estas expresiones regulares son bastante parecidas a los comodines que ya conocemos, como *
Así, por ejemplo, si quisiera borrar del fichero días todas las líneas que comienzan con una m, lo haría de la siguiente forma:
Fijaros como las expresiones regulares van encerradas entre barras simples. También hay que recordar que en realidad no estamos borrando nada en el fichero, simplemente estamos obteniendo una salida por pantalla con las líneas indicadas borradas, pero el fichero no se toca en ningún momento. Si quisiéramos borrar las líneas que comienzan por una m o por una j, podríamos hacerlo así:
TEMA 6.2
Página 13
I.S.O. Linux. Comandos básicos.
IMPLANTACIÓN DE SISTEMAS OPERATIVOS. CURSO 12/13 La mejor forma de habituarse al uso de estas expresiones regulares es usándolas. Intentad realizar estos ejercicios: 1) Obtener por pantalla las líneas de un fichero que comiencen por a, sin importar si es A o a. 2) Sustituir en un fichero el 1º carácter de cada línea por tres guiones 3) Sustituir en un fichero todas las vocales por la vocal U 4) Sacar por pantalla el contenido de un fichero, pero borrando todas las vocales. 5) Sacar por pantalla el contenido de un fichero, pero eliminando todas las líneas en blanco. Esto que hemos visto aquí es una primera aproximación a las expresiones regulares, que son mucho más complejas y potentes. Veamos algunos ejemplos de cosas que se pueden hacer con expresiones regulares:
TEMA 6.2
Página 14
I.S.O. Linux. Comandos básicos.