LÍNEAS DE COMANDO EN LINUX PARA PRÁCTICAS DE REDES I con Raspberry Pi 2 Computer Networks I 1
Introducción Permite interactuar con la máquina tecleando comandos mediante operaciones que se pueden hacer sin trabajar en entorno de escritorio. Aplicaciones Accesorios Terminal (en general) Menú Accesorios LXTerminal (en Raspberry Pi) Ayuda Comando man Comando whatis Opción -h / --help Ejemplos man date para salir pulsar la letra q date --help Computer Networks I 2
: Comandos básicos I OJO: DISTINGUE ENTRE MAYÚSCULAS y minúsculas ls. Lista el contenido del directorio en curso dir. Igual que el anterior (aunque sin distinguir archivos de directorios) cd. Moverse entre directorios (espacio entre d y punto) El. indica el directorio actual El.. indica el directorio anterior pwd. Muestra el directorio en el que nos encontramos mkdir. Crea un directorio. Ejemplo mkdir lamparas rmdir. Elimina un directorio vacío (no hay papelera) rm -r. Elimina un directorio no vacío clear. Borra la pantalla (también se puede hacer Ctrl+L) Computer Networks I 3
: Comandos básicos II Cambia al directorio lamparas mediante cd lamparas touch. Crea archivos en blanco. Ejemplo touch algo. Comprueba que se ha creado tecleando ls. Si tecleas ls -l verás más detalles, entre ellos la fecha. nano. Editor sencillo. Por ejemplo, nano bombillas.txt y escribe 100w. Salva con Crtl-x y confirma que Sí quieres guardar los cambios con el nombre dado. cp. Copia archivos mv. Mueve archivos (sirve para renombrar) rm. Elimina archivos y directorios no vacíos (en este caso rm r) cat. Vuelca el contenido de un archivo por la terminal, mostrando el final del documento y con una ventana dentro de la que nos podemos mover. cat bombillas.txt less. Vuelca el contenido de un archivo por la terminal y proporciona control sobre él, mostrando el principio less bombillas.txt para salir pulsar la letra q SUBE AL DIRECTORIO SUPERIOR (home/pi) TECLEANDO cd.. Computer Networks I 4
Ejercicio Crea el directorio Antonio, mkdir Antonio Entra en ese directorio y crea dos directorios hermanos Lopez y Perez mkdir Lopez y mkdir Perez, o bien mkdir Lopez Perez Copia el archivo /home/pi/lamparas/bombillas.txt en el directorio Antonio/Lopez con el nombre luminaria.txt cambiando previamente al directorio origen (1). Repite en Antonio/Perez pero manteniendo el nombre bombillas.txt y cambiando previamente al directorio destino (2). Hazlo en un tercer caso escribiendo las rutas completas de origen y destino y cambiando el nombre a bombillos.txt (3). Finalmente, copia bombillas.txt en /Antonio de una cuarta forma con el nombre luminaria.txt (4). (1) Desde el directorio origen (lamparas), cambiando el nombre: cp bombillas.txt /home/pi/antonio/lopez/luminaria.txt (2) Desde el directorio destino (Perez), sin cambiar el nombre: cp /home/pi/lamparas/bombillas.txt bombillas.txt (3) Desde y hacia cualquier directorio (ruta completa): cp /home/pi/lamparas/bombillas.txt /home/pi/antonio/perez/bombillos.txt (4) Desde y hacia cualquier directorio dentro del directorio de trabajo (por ejemplo, home/pi): cp lamparas/bombillas.txt Antonio/luminaria.txt Copia un directorio entero llamado Antonio, con todos sus subdirectorios, a un pen cuya etiqueta es 4E44-7141, usando las rutas absolutas para el origen y el destino y al revés, partiendo de que el pen tiene un directorio llamado Luis : cp -a /home/pi/antonio /media/pi/4e44-7141 cp -a /media/pi/4e44-7141/luis /home/pi Computer Networks I 5
Ejercicio Muestra el archivo copiado dentro de algún directorio. ls luminaria.txt (dentro del directorio Lopez) o bien ls /home/pi/antonio/lopez/luminaria.txt (cualquier direct.). Muestra el contenido del archivo copiado dentro de algún directorio. cat luminaria.txt (dentro del directorio Lopez) o bien cat /home/pi/antonio/lopez/luminaria.txt (cualquier direc.). Renombra el directorio Antonio a Antonio.old. mv Antonio Antonio.old (desde el directorio superior: /home/pi) Elimina todo el directorio Lopez. Después elimina todo el directorio Perez rmdir Lopez (Desde el directorio superior y borrando antes los contenidos con rm *) rm -R Perez (Desde el directorio superior sin necesidad de borrar antes los contenidos). La -R también podría ser minúscula (-r) Computer Networks I 6
Editores nano Editor modo consola Ctrl + X. Salir Ctrl + O. Guardar Ctrl + K. Cortar Ctrl + U. Pegar gedit habría que instalarlo previamente, asegurándote que tienes red, mediante el comando: sudo apt-get install gedit libreoffice Suite ofimática al estilo MSOffice calc, writer, impress, etc Computer Networks I 7
Abre el editor nano Editores Ejercicios Escribe la siguiente secuencia de comandos (uno por línea) mkdir pepito cd pepito cp /home/pi/antonio.old/luminaria.txt luces.txt Sal del programa y guarda los cambios (almacena el archivo como miscript.sh ) Da permiso de ejecución $ chmod u+x miscript.sh (o bien chmod 755 miscript.sh) En entornos de escritorio se pueden ver los permisos en cada caso con el botón derecho sobre el icono y eligiendo Propiedades Permisos Ejecuta: $ bash miscript.sh Qué ocurre? Se guarda luminaria.txt con el nombre luces.txt en el recién creado directorio pepito Computer Networks I 8
Comandos avanzados (grep) grep. Crea en el directorio pepito un archivo llamado espronceda.txt que contenga el siguiente texto: Con diez cañones por banda, viento en popa a toda vela... Busca coincidencias (dentro de archivos) con el patrón utilizado, en el lugar indicado grep [patrón] [archivos] busca la cadena, aunque no exista la palabra como tal Con la opción -w [algo] busca exactamente, rodeado de un espacio en blanco por delante y otro por detrás o una coma. Lo hace en el directorio en el que está. grep banda espronceda.txt grep -w banda espronceda.txt grep ban espronceda.txt grep -w ban espronceda.txt (no lo encuentra) grep -R [patrón] [directorios] (antes haz cd /home/pi para ejecutarlo desde ese directorio) grep -r viento /home/pi/pepito o bien grep -rw viento... grep -r popa pepito grep -r vien /home/pi/pepito, pero grep -rw...(no encuentra). grep -r proa pepito (no lo encuentra porque no existe). La r puede ser mayúscula La opción i ignora si la cadena es mayúscula o minúscula Computer Networks I 9
Ejercicios de grep Ayúdate de asteriscos Utiliza man Busca todos los archivos que contengan la palabra nameserver únicamente del directorio /etc (no /etc/cualquiercosa). grep nameserver etc/* desde root o bien grep nameserver /etc/* desde cualquier director. Busca todos los archivos que contengan la palabra o cadena vela en el directorio pepito y todos los que están debajo de él. grep vela -R pepito desde /home/pi o bien grep vela -r /home/pi/pepito desde cualquier directorio Compara estos últimos comandos con la página anterior La R puede ser MAYÚSCULA o minúscula Computer Networks I 10
Comandos avanzados (find y ejercicios) find Ayúdate de asteriscos Utiliza man Busca archivos por nombre (-name), tamaño (-size) find [ruta] [opciones] Busca todos los archivos mayores de 20k de la ruta /etc y TODOS los subdirectorios). Repite para archivos menores de 1k find -size +20k (desde el directorio etc) o bien find /etc -size +20k find -size -1k (menores de 1k) Busca todos los archivos del directorio /etc (incluidos los que están debajo) que terminen en cfg find /etc -name *cfg (cualquier directorio) find etc -name *cfg (directorio superior a etc, en este caso es el raiz /) Busca sólo en el directorio etc find *cfg (directorio etc) Computer Networks I 11
Redirección y tuberías I Todos los comandos necesitan datos con los que trabajar, y los obtienen de la entrada estándar (stdin) Realizan una operación con ellos y muestran los resultados por la salida estándar (stdout). En caso de que fallen informan por la salida de error (stderr) Podemos conectar entradas y salidas de comandos en la terminal Computer Networks I 12
Redirección Terminal Redirección y tuberías II > pasamos la salida de un comando a un archivo (se crea o reemplaza el archivo en el directorio de trabajo, aunque el origen esté en otro directorio, como ocurre en el ejemplo). SOBRESCRIBE Ej: cat lamparas/bombillas.txt (se ve en pantalla) Ej: cat /home/pi/lamparas/bombillas.txt (se ve en pantalla) Ej: cat lamparas/bombillas.txt > ilumin.txt (no se ve en pantalla y se graba en /home/pi el fichero ilumin.txt idéntico al bombillas.txt de lámparas) Si se repite el proceso, el nuevo fichero ilumin.txt sobrescribe al antiguo. >> pasamos la salida de un comando a un archivo (se continúa escribiendo en el archivo). NO SOBRESCRIBE, SINO QUE AÑADE Crea con nano un fichero llamado algo cuyo contenido sea alguna cosa Ej: cat algo >> ilumin.txt (será el ilumin.txt anterior al que se le añade alguna cosa < pasamos el contenido de un archivo como entrada de un comando Ej: cat < ilumin.txt (exactamente igual que cat ilumin.txt) Computer Networks I 13
Ejercicios de Redirección Ayúdate de asteriscos Utiliza man Almacena en el archivo fba.txt los archivos y directorios (excluídos los que están debajo) que empiecen por g' del directorio /home/pi/python_games. Ojo, no el contenido de cada directorio Recomendación: Primero el comando que lista find python_games/g* (directorio superior) Para almacenarlo en el directorio Music sin verlo en pantalla find Python_games/g* > Music/fba.txt (para guardarlo en Music) Añade al archivo fba.txt los archivos que acaben en wav' del directorio /home/pi/python_games find python_games/*wav >> Music/fba.txt Computer Networks I 14
Tubería Terminal Ejercicios de Tuberías I whois wc whois date man wc pasamos la salida de un comando a otro comando wc presenta la cantidad de líneas, palabras y bytes que tiene un archivo Supongamos un archivo de texto plano con el contenido adjunto y lo guardamos como contacto.txt Dionisio Perez Acevedo Calle del Percebe, 13 CIUDAD REAL cat < contacto.txt wc 3 9 57 date wc (mar feb 13 19:51:28 CET 2018) 1 6 29 Computer Networks I 15
Para hacer este ejercicio, previamente tienes que crear un directorio llamado videos debajo de /home/pi y crear varios archivos, algunos de los cuales empiecen por 18, y también puedes crear algún directorio (o varios) cuyo nombre empiece por 18. Ejercicios de Tuberías II Ayúdate de asteriscos Utiliza man Cuenta el número de archivos y directorios (incluídos los que están debajo) que empiezan por 18' del directorio /home/pi/videos (no el contenido de cada directorio). find videos -name 18* wc (directorio superior) Realiza la misma cuenta del apartado anterior y almacena ese número en el archivo nl_c.txt find videos -name 18* wc > videos/nl_c.txt Computer Networks I 16