Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Resumen comandos UNIX

1,030 views

Published on

Resumen comandos UNIX

Published in: Education
  • Be the first to comment

  • Be the first to like this

Resumen comandos UNIX

  1. 1. UNIX  Martín García Valle
  2. 2. 2 UNIX Índice date.......................................................................................................................................................................... 4 cat............................................................................................................................................................................ 4 pico.......................................................................................................................................................................... 4 wc............................................................................................................................................................................ 4 cal............................................................................................................................................................................ 5 who.......................................................................................................................................................................... 5 clear......................................................................................................................................................................... 5 man.......................................................................................................................................................................... 5 PASSWD ................................................................................................................................................................ 5 mail ......................................................................................................................................................................... 5 DIRECCIONAMIENTO RELATIVO Y ABSOLUTO........................................................................................ 16 touch...................................................................................................................................................................... 16 ls............................................................................................................................................................................ 17 mkdir..................................................................................................................................................................... 18 cd........................................................................................................................................................................... 19 rmdir...................................................................................................................................................................... 20 rm.......................................................................................................................................................................... 20 pwd........................................................................................................................................................................ 20 mv ......................................................................................................................................................................... 20 cp........................................................................................................................................................................... 21 cat.......................................................................................................................................................................... 22 TREE .................................................................................................................................................................... 22 LESS ..................................................................................................................................................................... 23 whoami.................................................................................................................................................................. 23 which..................................................................................................................................................................... 23 WHATIS............................................................................................................................................................... 23 WHEREIS............................................................................................................................................................. 24 head....................................................................................................................................................................... 24 tail ......................................................................................................................................................................... 24 MORE................................................................................................................................................................... 26 HISTORY ............................................................................................................................................................. 27 EJERCICIOS FICHEROS 1 ................................................................................................................................. 27 EJERCICIO FICHEROS 2 ................................................................................................................................... 30 REDIRECCION - DESCRIPTORES ESTANDAR ............................................................................................. 32 VARIOS COMANDOS EN UNA LINEA -> SEPARADOS POR ;.................................................................... 34 UN COMANDO LARGO EN VARIAS LINEAS  al final de linea sin dejar espacio entre escribir y dar a ENTER.................................................................................................................................................................. 35 PIPE O TUBERIAS.............................................................................................................................................. 35 tee.......................................................................................................................................................................... 37 COMODINES....................................................................................................................................................... 37 COMPARACION FICHEROS............................................................................................................................. 39 ALIAS................................................................................................................................................................... 41 FICHEROS INODE.............................................................................................................................................. 41 FILE...................................................................................................................................................................... 44 LINKS ln............................................................................................................................................................... 44 CUT ...................................................................................................................................................................... 46 TR ......................................................................................................................................................................... 46 COMPRESIÓN DE FICHEROS EN UNIX ......................................................................................................... 47 VI .......................................................................................................................................................................... 49 MODOS O PERMISOS........................................................................................................................................ 50 EJERCICIO PERMISOS ...................................................................................................................................... 52 COMUNICACION CON USUARIOS................................................................................................................. 58 GREP .................................................................................................................................................................... 58 banner.................................................................................................................................................................... 63 FIND ..................................................................................................................................................................... 63
  3. 3. 3 SORT .................................................................................................................................................................... 67 SED....................................................................................................................................................................... 70 PROCESOS .......................................................................................................................................................... 74 PS - PARA VER EL LISTADO DE PROCESOS................................................................................................ 75 GESTION DE USUARIOS .................................................................................................................................. 81 SU -....................................................................................................................................................................... 81 PASSWD .............................................................................................................................................................. 81 ID .......................................................................................................................................................................... 81 WHOAMI ............................................................................................................................................................. 82 USUARIOS EN UNIX ......................................................................................................................................... 83 FICHERO /ETC/PASSWD................................................................................................................................... 83 GRUPOS EN UNIX.............................................................................................................................................. 84 CREACIÓN AUTOMÁTICA DE USUARIOS ................................................................................................... 85 CREACIÓN AUTOMÁTICA DE GRUPOS ....................................................................................................... 86 FICHERo /ETC/GROUP ...................................................................................................................................... 87 GESTIÓN DE USUARIOS .................................................................................................................................. 88 AT ......................................................................................................................................................................... 97 ARCHIVOS DE CONFIGURACIÓN.................................................................................................................. 98 EJERCICIOS GENERALES .............................................................................................................................. 103 COMUNICACION CON USUARIOS............................................................................................................... 106 WRITE................................................................................................................................................................ 106 WALL................................................................................................................................................................. 107 TALK.................................................................................................................................................................. 107 MENSAJE DEL DIA.......................................................................................................................................... 108 MENSAJE ANTES DE HACER LOGIN........................................................................................................... 108 FINGER - WHO - CHFN - ID............................................................................................................................ 109 FTP...................................................................................................................................................................... 110 PING................................................................................................................................................................... 110 EJEMPLO DE TELNET, WHO, WHO AM I y WRITE.................................................................................... 111 INETD.CONF..................................................................................................................................................... 113 TTY..................................................................................................................................................................... 114 LOGNAME......................................................................................................................................................... 114 UNAME.............................................................................................................................................................. 114 MONTADO DE SISTEMA DE ARCHIVOS .................................................................................................... 115 CERRAR SISTEMA........................................................................................................................................... 118 SHELL SCRIPTS TEORIA................................................................................................................................ 119 EJERCICIOS SHELL SCRIPT........................................................................................................................... 126 EJERCICIOS SHELL SCRIPTS ........................................................................................................................ 146 SHELL SCRIPTS INVOCAR SCRIPT.............................................................................................................. 150 EXIT ................................................................................................................................................................... 151 EXPORTACION DE VARIABLES................................................................................................................... 152 EJERCICIOS GENERALES .............................................................................................................................. 153
  4. 4. 4 DATE Fecha actual Date “+Mes:%m%nDia:%d%nHora:%T” Siempre al comenzar  + %n  salto de linea CAT Visualiza ficheros cat f1 f2 Escribir fichero cat > f1 cat –n f1 : visualiza lineas del fichero martin8@NODE:/home/martin8/dir88> cat -n f1 1 1<e 2 2<a 3 3<t 4 4<b PICO Editor de Linux Para salir y grabar CTRL+X WC WC --> word count Cuenta palabras (w) Cuenta lineas (l) Cuenta letras (c) de un fichero wc –w –l f1 : cuenta las lineas y palabras del fichero f1 bash$ cat > martin Hola soy Martin bash$ wc martin 1 3 16 martin lineas/palabras/caracters (+1 --> CTRL+C y CTRL+C) CUIDADO cuenta 1 de mas.
  5. 5. 5 CAL Muestra el calendario cal 2002 cal 2 2002 WHO Usuarios conectados en este momento al sistema martin8@NODE:/home/martin8> who martin8 pts/0 Jun 16 10:38 pts/X es pseudoterminal tty  funcionando en la máquina CLEAR Limpiar pantalla MAN Comando de ayuda de UNIX Preguntar ayuda sobre X  man X q para salir PASSWD Cambia la password de un usuario bash$ passwd Changing password for martin6 (current) UNIX password: passwd: Authentication failure bash$ bash$ passwd Changing password for martin6 (current) UNIX password: New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully MAIL Correo en UNIX
  6. 6. 6 x  salir sin grabar q  salir grabando d  borrar mensaje h  mostrar lista de mensajes t  ir a un determinado mensaje t2,t5 s  grabar mensajes en un fichero  s 1 2 3 mensaj1 mail –f  leer mensajes grabados en X fichero  mail –f mensaj1 r  responder mensaje a  alias de correo MAIL mail <usuario al que va dirigido> Subject : Tema hola bla bla bla bla bla bla CTRL+D CC: Otros destinos Ejemplo: bash$ mail martin8 Subject: AYUDA Martin necesito que me acompañes a una reunion de^H^H^H^[[D Cc: root bash$ SI UNA VEZ ESCRITO EL MENSAJE NO LO QUEREMOS ENVIAR CTRL+C y CTRL+C Ejemplo: Subject: AYUDA Martin necesito que me acompañes a una reunion de^H^H^H^[[D Cc: bash$ mail martin8 Subject: N^HNO no hace falta la han retrasado (Interrupt -- one more to kill letter) bash$ (He pulsado dos veces CTRL+C) VISUALIZAR EL MAIL ENVIADO A MARTIN8 [martin8@localhost martin8]$ mail Unknown command: "export" Mail version 8.1 6/6/93. Type ? for help.
  7. 7. 7 "/var/spool/mail/martin8": 1 message 1 new >N 1 martin6@localhost.lo Thu Feb 21 11:25 13/445 "AYUDA" & EXISTEN DOS OPCIONES: N --> nuevo mensaje U --> mensaje recibido anteriormente y no leido OPCIONES DE MAIL Si se pulsa ENTER sobre el mensaje activo, señalado por > se visualiza. Ejemplo: "/var/spool/mail/martin8": 1 message 1 new >N 1 martin6@localhost.lo Thu Feb 21 11:25 13/445 "AYUDA" & Message 1: From martin6 Thu Feb 21 11:25:27 2002 Date: Thu, 21 Feb 2002 11:25:27 +0100 From: Martinv6 <martin6@localhost.localdomain> To: martin8@localhost.localdomain Subject: AYUDA Martin necesito que me acompañes a una reunion de & x -- SALIR DE MAIL SIN ALTERAR EL BUZON, SIN GRABAR Ejemplo: (He leido el mensaje pero al salir con x es como si no hubiera realizado nada) & x [martin8@localhost martin8]$ mail Unknown command: "export" Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin8": 1 message 1 new >N 1 martin6@localhost.lo Thu Feb 21 11:25 13/445 "AYUDA" & ENVIAMOS UN SEGUNDO MENSAJE A MARTIN8 DESDE MARTIN6 Al pulsar de nuevo mail salen los dos mensajes [martin8@localhost martin8]$ mail Unknown command: "export" Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin8": 2 messages 2 new >N 1 martin6@localhost.lo Thu Feb 21 11:25 13/445 "AYUDA" N 2 martin6@localhost.lo Thu Feb 21 11:34 13/402 "dos" &
  8. 8. 8 t --> NOS PERMITE LEER EL MENSAJE QUE LE ESPECIFIQUEMOS, por ejemplo si escribo t2 me lee el mensaje "dos" Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin8": 2 messages 2 new >N 1 martin6@localhost.lo Thu Feb 21 11:25 13/445 "AYUDA" N 2 martin6@localhost.lo Thu Feb 21 11:34 13/402 "dos" & t2 Message 2: From martin6 Thu Feb 21 11:34:01 2002 Date: Thu, 21 Feb 2002 11:34:01 +0100 From: Martinv6 <martin6@localhost.localdomain> To: martin8@localhost.localdomain Subject: dos segund mensaje & h --> ME MUESTRA LA CABECERA DE LOS MENSAJES. Al haber leido el mensaje 2 en esta ocasión desaparece la opción de N y U ya que ni es nuevo ni aun no lo he leido. Subject: dos segund mensaje & h N 1 martin6@localhost.lo Thu Feb 21 11:25 13/445 "AYUDA" > 2 martin6@localhost.lo Thu Feb 21 11:34 13/402 "dos" & AHORA HEMOS ENVIADO VARIOS CORREOS A MARTIN8 PARA PRACTICAR VISUALIZANDO, GRABANDO y ELIMINANDO. bash$ mail martin8 Subject: dos segund mensaje Cc: bash$ mail martin8 Subject: tres hola3 Cc: bash$ mail martin8 Subject: cuatro hola4 Cc: bash$ mail martin8 Subject: cinco y hola e nuevo campeon Cc:
  9. 9. 9 bash$ Cuando martin8 escriba MAIL visualizara los mensajes: [martin8@localhost martin8]$ mail Unknown command: "export" Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin8": 5 messages 3 new 5 unread U 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" >N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" N 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" N 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" & Como siempre para visualizar o bien dar ENTER o bien t y el número de mensaje & t4 Message 4: From martin8 Thu Feb 21 11:42:20 2002 Date: Thu, 21 Feb 2002 11:42:20 +0100 From: martin8@localhost.localdomain To: martin8@localhost.localdomain Subject: cuatro 4 & h U 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" > 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" N 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" & x --> SALIR SIN GRABAR Si salimos sin grabar de nuevo aparecerá como si no hubieramos entrado: & h U 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" > 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" N 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" & x You have mail in /var/spool/mail/martin8 [martin8@localhost martin8]$ mail Unknown command: "export" Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin8": 5 messages 3 new 5 unread
  10. 10. 10 U 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" >N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" N 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" N 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" & d --> ELIMINAR MENSAJES d1 -- elimina mensaje 1 d* -- elimina todos los mensajes d 3-7 -- elimina los mensajes del 1 al 7 Ejemplo "/var/spool/mail/martin8": 5 messages 3 new 5 unread U 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" >N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" N 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" N 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" & d1 & h >U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" N 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" N 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" & & h >U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" N 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" N 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" & d 4-5 & h U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" >N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" & u --> SIN SALIR DE MAIL RECUPERA MENSAJES u1 -- recupera el mensaje 1 u* - recupera todos los mensajes u 3 7 -- recupera los menajes3 y 7 u 3-7 recupera los mensajes del 3 al 7 Ejemplo & h U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" >N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres"
  11. 11. 11 & u1 & h > 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" & u 4 5 & h 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" > 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" r ..> RESPODER MENSAJE Ejemplo & h 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" > 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" & r1 To: martin8@localhost.localdomain martin6@localhost.localdomain Subject: Re: AYUDA GRACIAS Cc: & y a martin6 lo recibira: Held 3 messages in /var/spool/mail/martin6 bash$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin6": 4 messages 1 new 4 unread U 1 martin6@localhost.lo Thu Feb 21 11:38 14/404 "tres" U 2 martin6@localhost.lo Thu Feb 21 11:38 14/406 "cuatro" U 3 martin6@localhost.lo Thu Feb 21 11:39 14/422 "cinco" >N 4 martin8@localhost.lo Thu Feb 21 11:51 13/409 "Re: AYUDA" s --> SALIR GRABANDO. Los mensajes no leidos pasan de N a U. "/var/spool/mail/martin8": 6 messages 4 new 6 unread U 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" >N 3 martin8@localhost.lo Thu Feb 21 11:42 13/379 "tres" N 4 martin8@localhost.lo Thu Feb 21 11:42 13/381 "cuatro" N 5 martin8@localhost.lo Thu Feb 21 11:42 14/389 "cinco" N 6 martin8@localhost.lo Thu Feb 21 11:51 13/409 "Re: AYUDA"
  12. 12. 12 & q Held 6 messages in /var/spool/mail/martin8 [martin8@localhost martin8]$ mail Unknown command: "export" Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin8": 6 messages 6 unread >U 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" U 3 martin8@localhost.lo Thu Feb 21 11:42 14/389 "tres" U 4 martin8@localhost.lo Thu Feb 21 11:42 14/391 "cuatro" U 5 martin8@localhost.lo Thu Feb 21 11:42 15/399 "cinco" U 6 martin8@localhost.lo Thu Feb 21 11:51 14/419 "Re: AYUDA" Y si se ha borrado un mensaje ya no se recupera. S --> GRABAR MENSAJES s3 fich1 -- graba el mensaje 3 al fich1 s fich1 -- graba el mensaje actual al fich1 s* fich2 -- graba todos los mensajes al fich2 Ejemplo Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin8": 6 messages 6 unread >U 1 martin6@localhost.lo Thu Feb 21 11:25 14/455 "AYUDA" U 2 martin8@localhost.lo Thu Feb 21 11:40 14/396 "martin8" U 3 martin8@localhost.lo Thu Feb 21 11:42 14/389 "tres" U 4 martin8@localhost.lo Thu Feb 21 11:42 14/391 "cuatro" U 5 martin8@localhost.lo Thu Feb 21 11:42 15/399 "cinco" U 6 martin8@localhost.lo Thu Feb 21 11:51 14/419 "Re: AYUDA" & s1 mensaje1 "mensaje1" [New file] & s* mensajes "mensajes" [New file] & mail -f mensaje1 [martin8@localhost martin8]$ mail -f mensaje1 Unknown command: "export" Mail version 8.1 6/6/93. Type ? for help. "mensaje1": 1 message > 1 martin6@localhost.lo Thu Feb 21 11:25 14/456 "AYUDA" & Message 1: From martin6 Thu Feb 21 11:25:27 2002 Date: Thu, 21 Feb 2002 11:25:27 +0100 From: Martinv6 <martin6@localhost.localdomain> To: martin8@localhost.localdomain Subject: AYUDA
  13. 13. 13 Martin necesito que me acompañes a una reunion de & h > 1 martin6@localhost.lo Thu Feb 21 11:25 14/456 "AYUDA" & q [martin8@localhost martin8]$ mail Unknown command: "export" No mail for martin8 O BIEN MAIL -F MENSAJES [martin8@localhost martin8]$ mail -f mensajes Unknown command: "export" Mail version 8.1 6/6/93. Type ? for help. "mensajes": 6 messages > 1 martin6@localhost.lo Thu Feb 21 11:25 14/456 "AYUDA" 2 martin8@localhost.lo Thu Feb 21 11:40 14/397 "martin8" 3 martin8@localhost.lo Thu Feb 21 11:42 14/390 "tres" 4 martin8@localhost.lo Thu Feb 21 11:42 14/392 "cuatro" 5 martin8@localhost.lo Thu Feb 21 11:42 15/400 "cinco" 6 martin8@localhost.lo Thu Feb 21 11:51 14/420 "Re: AYUDA" & salen todos los mensajes grabados. ? --> todos los comandos MODIFICAR MENSAJE Al escribir un mensaje es muy fácil equivoarse y posteriormente no se puede borrar. Para ello vamos a explicar una serie de normas. [martin8@localhost martin8]$ mail martin6 Unknown command: "export" Subject: errores hola te escribo para saber algo de ti, como pierdas una bombona te mando a mover tres de I350 a Gijón sin jaulas :-) pero hay una baca en el mar~v [martin8@localhost martin8]$ VISUAL=/usr/bin/pico [martin8@localhost martin8]$ export VISUAL [martin8@localhost martin8]$ echo $VISUAL /usr/bin/vi [martin8@localhost martin8]$ [martin8@localhost martin8]$ mail martin6 Unknown command: "export" Subject: errores hola amigos ezcrivo mu mar finstro~v
  14. 14. 14 Al escribir ALT+126 y V y dar ENTER me sale el editor por defecto definido. Aqui es mas facil corregir todas las faltas e ir hacia atras. CTRL+X para salir una vez corregido seleccionamos Y para grabar y ENTER para salir. Pulsamos CTRL+d si ya no queremos seguir escribiendo y nos saldrá el mensaje típico de CC: ENTER y listo. Y en martin6 verá el mensaje corregido: N 6 martin8@localhost.lo Thu Feb 21 12:11 15/418 "errores" & t6 Message 6: From martin8 Thu Feb 21 12:11:04 2002 Date: Thu, 21 Feb 2002 12:11:04 +0100 From: martin8@localhost.localdomain To: martin6@localhost.localdomain Subject: errores hola amigos escribo muy mal finstro PARA NO TENER QUE VOLVER A ESCRIBIR EN CADA SESION EL EDITOR A UTILIZAR MEJOR ESCRIBIRLO EN EL FICHERO .MAILRC [martin8@localhost martin8]$ cat .mailrc alias m martin6 alias m1 martin8 alias m2 martin9
  15. 15. 15 set VISUAL=/usr/bin/pico export VISUAL echo $VISUAL ALIAS a --> permite definir alias. Por ejemplo : & a group martin6, martin8, root & mail group Subject: reunion 10:30 euro Cc: & LLega el correo a todos los de group. También es posible especificar en el fichero .mailrc alias m6 martin6 alias m8 martin8 ES POSIBLE REDIRECCIONAR UN FICHERO DE TEXTO A UN CORREO mail martin8 < carta1 Ejemplo: [martin8@localhost martin8]$ cat carta Hola amigo nos vemos en Mendez Alvaro. [martin8@localhost martin8]$ mail martin6 <carta y en martin6 bash$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/martin6": 6 messages 1 new 6 unread U 1 martin6@localhost.lo Thu Feb 21 12:17 16/567 "reunion" U 2 MAILER-DAEMON@localh Thu Feb 21 12:17 64/1886 "Returned mail: User u" U 3 martin6@localhost.lo Thu Feb 21 12:18 16/567 "reunion" U 4 MAILER-DAEMON@localh Thu Feb 21 12:18 64/1886 "Returned mail: User u" U 5 martin8@localhost.lo Thu Feb 21 12:19 15/456 "reunion" >N 6 martin8@localhost.lo Thu Feb 21 12:24 12/402 & t6 Message 6: From martin8 Thu Feb 21 12:24:36 2002 Date: Thu, 21 Feb 2002 12:24:35 +0100 From: martin8@localhost.localdomain To: martin6@localhost.localdomain Hola amigo nos vemos en Mendez Alvaro.
  16. 16. 16 & PARA COMPROBAR EL FICHERO DONDE SE GUARDA LOS MAIL [root@localhost martin8]# echo $MAIL /var/spool/mail/martin8 DIRECCIONAMIENTO RELATIVO Y ABSOLUTO  Absoluto  desde la raiz /home/usdai1  Relativo  desde la posición en la que me encuentro FALLOS TIPICOS  no empezar por / Seguir el camino hasta llegar al directorio deseado desde el actual Utilizar .. (dos puntos) si es necesario TOUCH Crea fichero vacio si no existe y si existe modifica los valores de la fecha a los actuales Por ejemplo: [martin8@localhost martin8]$ ls -l total 24 -rw-r--r-- 1 martin8 users 12 feb 22 16:15 a -rw-r--r-- 1 martin8 users 13 feb 22 16:06 b drwxrwxr-x 3 martin8 users 4096 feb 22 15:57 datos -rw-r--r-- 1 martin8 users 1789 feb 22 14:58 fich drwxr-xr-x 2 martin6 ASI2 4096 feb 21 13:49 marto drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 pu [martin8@localhost martin8]$ touch b [martin8@localhost martin8]$ ls -l total 24 -rw-r--r-- 1 martin8 users 12 feb 22 16:15 a -rw-r--r-- 1 martin8 users 13 feb 22 16:15 b drwxrwxr-x 3 martin8 users 4096 feb 22 15:57 datos -rw-r--r-- 1 martin8 users 1789 feb 22 14:58 fich drwxr-xr-x 2 martin6 ASI2 4096 feb 21 13:49 marto drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 pu [martin6@localhost martin6]$ ls -l total 4 -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:26 a -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:27 b drwxr-xr-x 2 root root 4096 feb 20 13:17 mart [martin6@localhost martin6]$ touch a [martin6@localhost martin6]$ ls -l
  17. 17. 17 total 4 -rw-r--r-- 1 martin6 ASI2 0 feb 25 11:55 a -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:27 b drwxr-xr-x 2 root root 4096 feb 20 13:17 mart LS Muestra el contenido de un directorio (como dir) ls –l  muestra las caracterisiticas de lo mostrado, ficheros, propietario, grupo, fecha… ls –a  muestra ficheros ocultos (empiezan por punto .f1) ls –i  indica el i-node del fichero bash$ pwd /home/martin6 bash$ ls MART lolo lolo1 mart nuevofic pedro bash$ ls -la total 40 drwxr-xr-x 4 martin6 ASI2 4096 feb 21 12:45 . drwxr-xr-x 14 root root 4096 feb 20 13:12 .. -rw------- 1 martin6 ASI2 3352 feb 21 10:59 .bash_history -rw-r--r-- 1 martin6 ASI2 11 feb 13 12:14 .exrc -rw-r--r-- 1 martin6 ASI2 6 feb 19 13:26 .martin -rw-r--r-- 1 martin6 ASI2 6 feb 19 13:27 MART -rw-r--r-- 1 martin6 ASI2 24 feb 19 13:25 lolo -rw-r--r-- 1 martin6 ASI2 15 feb 19 13:25 lolo1 drwxr-xr-x 2 root root 4096 feb 20 13:17 mart -rw-r--r-- 1 martin6 ASI2 0 feb 19 13:25 nuevofic drwxr-xr-x 2 martin6 ASI2 4096 feb 21 10:40 pedro PErmite crear un fichero vacío o bien modificar los atributos de un fichero ya existente con la fecha actual [martin6@localhost martin6]$ ls -l total 4 -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:26 a -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:27 b drwxr-xr-x 2 root root 4096 feb 20 13:17 mart [martin6@localhost martin6]$ touch a [martin6@localhost martin6]$ ls -l total 4 -rw-r--r-- 1 martin6 ASI2 0 feb 25 11:55 a -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:27 b drwxr-xr-x 2 root root 4096 feb 20 13:17 mart
  18. 18. 18 MKDIR Crea directorio mkdir -- CREA DIRECTORIOS bash$ mkdir martin2 bash$ ls MART lolo lolo1 mart martin2 nuevofic pedro bash$ ls -l total 24 -rw-r--r-- 1 martin6 ASI2 6 feb 19 13:27 MART -rw-r--r-- 1 martin6 ASI2 24 feb 19 13:25 lolo -rw-r--r-- 1 martin6 ASI2 15 feb 19 13:25 lolo1 drwxr-xr-x 2 root root 4096 feb 20 13:17 mart drwxr-xr-x 2 martin6 ASI2 4096 feb 21 12:47 martin2 -rw-r--r-- 1 martin6 ASI2 0 feb 19 13:25 nuevofic drwxr-xr-x 2 martin6 ASI2 4096 feb 21 10:40 pedro También con rutas absolutas: bash$ pwd /home/martin6 bash$ mkdir /home/martin6/martin2/martin3 bash$ pwd /home/martin6 bash$ ls /home/martin6/martin2/ martin3 OPCION –P  lo que realiza es crear los directorios anteriores en el caso de que no existan. Asi por ejemplo si queremos crear un subdirectorio y a su vez dentro de el otro subdirectorio dentro, en un solo paso. [root@martin /root]# mkdir dir1/dir12 [root@martin /root]# tree . |-- dir1 | |-- dir11 | `-- dir12 |-- dir1dir11 |-- dir1dir111 |-- dir2 |-- dir3 |-- dir4 `-- prueba 8 directories, 1 file [root@martin /root]# mkdir -p dir1/dir12/dir121/dir1211 (CREA LOS DOS, ANTES NO ESTABA) [root@martin /root]# tree
  19. 19. 19 . |-- dir1 | |-- dir11 | `-- dir12 | `-- dir121 | `-- dir1211 |-- dir1dir11 |-- dir1dir111 |-- dir2 |-- dir3 |-- dir4 `-- prueba 10 directories, 1 file OPCION –M  ASIGNA PERMISOS AL DIRECTORIO CREADO [root@martin /root]# mkdir -m 777 lola drwxr-xr-x 2 root root 4096 ago 10 17:54 dir4 drwxrwxrwx 2 root root 4096 ago 10 18:00 lola CD Desplazarse a la ruta especificada cd /home/usdai1 cd  va al directorio propio cd -  va al directorio anterior cd ..  directorio padre CD --> Ir a una ruta o al directorio propio cd ruta cd .. --> al directorio anterior cd --> va al directorio propio del usuario ./ parte del directorio actual cd - --> se va al ultimo directorio donde ha estado. bash$ pwd /home/martin6/mart bash$ cd /home/martin6/mart bash$ pwd /home/martin6/mart bash$ cd bash$ pwd /home/martin6 bash$ cd - bash$ pwd
  20. 20. 20 /home/martin6/mart bash$ cd .. bash$ pwd /home/martin6 cd ../martin8 bash$ pwd /home/martin8 RMDIR Borra directorio solo si no contiene nada dentro. Si quisiera borrar aunque tuviera cosas dentro rm –R dir1 (borra recursivamente) RMDIR --> elimina directorio (debe estar vacio) bash$ rmdir mart rmdir: mart: El directorio no está vacío RM Elimina ficheros y tambien con la opción R permite borrar recursivamente directorios y ficheros -f  sin confirmacion -r  recursivo PWD Directorio donde me encuentro actualmente MV mover o cambiar nombre a un fichero o directorio mv nombre antiguo nuevo nombre martin8@NODE:/home/martin8> mv ultima2 dir88/ultimito Muevo un fichero a otro lugar cambiandole el nombre martin8@NODE:/home/martin8> mv ultima2 dir88 Lo mueve al directorio dir88 sin cambiar nombre Opcion –i  pide confirmacion (si ya existe ese fichero para no eliminarlo)
  21. 21. 21 MV --> mover o renombrar fichero cambiar nombre bash$ mv fich10 fich11 bash$ cat fich10 cat: fich10: No existe el fichero o el directorio bash$ cat fich11 hola me llamo Chiquito jandeMOR mover un fichero a otro directorio bash$ mv lolo ./pedro bash$ cd pedro bash$ ls lolo Ya no existe el fichero al moverlo bash$ ls MART lolo1 mart martin2 nuevofic pedro bash$ mv lolo1 ./pedro bash$ mv lolo1 ./pedro/lolo mv: lolo1: No existe el fichero o el directorio opcion -i pide confirmacion si ya existe el fichero. bash$ mv -i lolo lolo2 bash$ mv -i lolo2 lolo bash$ mv -i lolo lolo mv: `lolo' y `lolo' son el mismo fichero bash$ touch lolo2 bash$ mv -i lolo lolo2 mv: ¿sobreescribir `lolo2'? (s/n) n CP copiar ficheros -i  confirmacion -r  recursividad bash$ pwd /home/martin6/pedro bash$ cd .. bash$ ls MART mart martin2 nuevofic pedro bash$ cp ./pedro/* . [copia lo que hay en el directorio pedro al directorio actual] bash$ ls
  22. 22. 22 MART lolo1 lolo2 mart martin2 nuevofic pedro bash$ pwd /home/martin6 bash$ cd pedro bash$ ls lolo1 lolo2  Si selecciono mas de dos ficheros significa que el último parámetro debe ser un directorio y que movemos todos los ficheros al directorio último. Por ejemplo: Mv f1 f2 f3 f4 dir1  mueve los ficheros f1 f2 f3 f4 al directorio dir1 CAT CAT --> visualiza el contenido de ficheros bash$ cat > fich10 hola me llamo Chiquito jandeMOR (CTRL+D) bash$ cat fich10 hola me llamo Chiquito jandeMOR bash$ cat fich10 fich10 hola me llamo Chiquito jandeMOR hola me llamo Chiquito jandeMOR Muestra el contenido de un fichero Con la opción -n nuemera las lineas martin8@NODE:/home/martin8> cat hlink Este es index de Martin martin8@NODE:/home/martin8> cat -n index 1 Este es el nuevo index de Martin martin8@NODE:/home/martin8> cat -n hlink 1 Este es index de Martin martin8@NODE:/home/martin8> cat -n index hlink 1 Este es el nuevo index de Martin 2 Este es index de Martin TREE Muestra el arbol de directorios [root@martin /root]# tree . |-- dir1 | `-- dir11 |-- dir1dir11 |-- dir1dir111 |-- dir2
  23. 23. 23 |-- dir3 |-- dir4 `-- prueba 7 directories, 1 file LESS less < nombre del fichero> Muestra el contenido de un fichero pero permite avanzar o retroceder. Por ejemplo z avanzar y w retroceder página. Para ver las teclas less --help. Para salir Q. z - atras w - adelante h --help q -- salir martin8@NODE:/home/martin8> less /etc/passwd [martin8@localhost martin8]$ less fich WHOAMI Que usuario soy yo actualmente. Se suele utilizar cuando una persona entra al sistema como varios usuarios, y no sabe en un momento dado con que usuario esta trabajando. WHICH which passwd Donde se encuentra el fichero ejecutable del comando escrito WHICH --> que programa se ejecutara bash$ which cp /bin/cp bash$ which vi /bin/vi WHATIS Especifica una descripción rápida de un comando martin8@NODE:/home/martin8> whatis cat cat (1) - concatenate files and print on the standard output
  24. 24. 24 martin8@NODE:/home/martin8> whatis ls ls (1) - list directory contents WHEREIS Busqueda de un fichero Ejemplo martin8@NODE:/home/martin8> whereis passwd passwd: /usr/bin/passwd /etc/passwd /usr/man/man1/passwd.1.gz /usr/man/man5/pass wd.5.gz martin8@NODE:/home/martin8> which passwd /usr/bin/passwd La diferencia que existe con el comando WHICH está en que which nos dice el ejecutable, es decir que fichero se va a ejecutar, en que path se encuentra si escribimos passwd. HEAD head -7 f1 Selecciona las primeras 7 lineas del texto del fichero f1 (DESDE EL PRINCIPIO) Cuenta las lineas de la cabecera de un fichero head -20 --> cuenta las primeras 20 lineas bash$ ls -la> listado bash$ head -10 listado total 120 drwxrwxrwx 17 martin8 users 4096 feb 21 13:56 . drwxr-xr-x 14 root root 4096 feb 20 13:12 .. -rw------- 1 martin8 users 0 feb 13 13:12 .ICEauthority -rw------- 1 martin8 users 115 feb 13 13:09 .Xauthority -rw------- 1 martin8 users 4918 feb 21 12:22 .bash_history -rw-r--r-- 1 martin8 users 24 ene 30 10:46 .bash_logout -rw-r--r-- 1 martin8 users 230 ene 30 10:46 .bash_profile -rw-r--r-- 1 martin8 users 124 ene 30 10:46 .bashrc -rwxr-xr-x 1 martin8 users 333 ene 30 10:46 .emacs TAIL tail -7 f1
  25. 25. 25 Selecciona las últimas 7 lineas del texto del fichero f1 (DESDE EL FINAL) Muestra las ultimas lineas de un fichero tail -10 drwxr-xr-x 3 martin8 users 4096 ene 31 13:35 datos -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:34 f3 -rw-r--r-- 1 martin6 ASI2 2397 feb 21 13:56 listado -rw-r--r-- 1 martin6 ASI2 16 feb 21 13:51 martin drwxr-xr-x 2 martin6 ASI2 4096 feb 21 13:49 marto drwx------ 2 martin8 users 4096 feb 12 14:03 nsmail drwxr-xr-x 3 martin8 users 4096 ene 31 11:35 pa drwxr-xr-x 4 martin8 users 4096 ene 31 11:36 pu -rw-r--r-- 1 root root 17 feb 19 12:43 stdout -rw-r--r-- 1 martin8 users 0 feb 19 12:15 tty1 -rwxrwxrwx 1 martin6 ASI2 5 feb 21 13:54 vi bash$ tail -5 listado drwxr-xr-x 3 martin8 users 4096 ene 31 11:35 pa drwxr-xr-x 4 martin8 users 4096 ene 31 11:36 pu -rw-r--r-- 1 root root 17 feb 19 12:43 stdout -rw-r--r-- 1 martin8 users 0 feb 19 12:15 tty1 -rwxrwxrwx 1 martin6 ASI2 5 feb 21 13:54 vi OPCION +NUMERO DESDE LA QUE MOSTRAR TEXTO Tail +2 prueba  mostrar desde la linea 2 incluida [root@martin /root]# ls -la > listado [root@martin /root]# cat listado total 68 drwxr-x--- 9 root root 4096 ago 10 18:02 . drwxr-xr-x 20 root root 4096 ago 5 18:33 .. -rw-r--r-- 1 root root 1126 ago 23 1995 .Xdefaults -rw------- 1 root root 98 ago 8 13:59 .bash_history -rw-r--r-- 1 root root 24 jul 14 1994 .bash_logout -rw-r--r-- 1 root root 238 ago 23 1995 .bash_profile -rw-r--r-- 1 root root 176 ago 23 1995 .bashrc -rw-r--r-- 1 root root 182 mar 22 1999 .cshrc -rw-r--r-- 1 root root 166 mar 4 1996 .tcshrc [root@martin /root]# tail +2 listado drwxr-x--- 9 root root 4096 ago 10 18:02 . drwxr-xr-x 20 root root 4096 ago 5 18:33 .. -rw-r--r-- 1 root root 1126 ago 23 1995 .Xdefaults -rw------- 1 root root 98 ago 8 13:59 .bash_history -rw-r--r-- 1 root root 24 jul 14 1994 .bash_logout -rw-r--r-- 1 root root 238 ago 23 1995 .bash_profile -rw-r--r-- 1 root root 176 ago 23 1995 .bashrc -rw-r--r-- 1 root root 182 mar 22 1999 .cshrc
  26. 26. 26 MORE Visualiza un fichero como cat pero paso a paso: ENTER: linea a linea ESPACIO : Página a página Es un comando que muestra el contenido de un fichero pero permite paginar. martin8@NODE:/home/martin8> ls -la|more total 164 drwxrwxrwx 13 martin8 users 4096 Feb 25 14:00 . drwxr-xr-x 15 root root 4096 Feb 22 14:11 .. -rw------- 1 martin8 users 0 Feb 13 13:12 .ICEauthority -rw------- 1 martin8 users 115 Feb 13 13:09 .Xauthority -rw------- 1 martin8 users 15932 Feb 26 10:53 .bash_history -rw-r--r-- 1 martin8 users 24 Jan 30 10:46 .bash_logout -rw-r--r-- 1 martin8 users 522 Feb 25 12:57 .bash_profile -rw-r--r-- 1 martin8 users 303 Feb 25 12:28 .bashrc drwx------ 2 martin8 users 4096 Feb 25 14:00 .cedit -rwxr-xr-x 1 martin8 users 333 Jan 30 10:46 .emacs drwx------ 3 martin8 users 4096 Feb 13 13:12 .enlightenment -rw------- 1 martin8 users 12288 Feb 22 17:41 .fichero.swp drwx------ 6 martin8 users 4096 Feb 13 13:12 .gnome drwxr-xr-x 2 martin8 users 4096 Feb 12 14:02 .gnome-desktop
  27. 27. 27 drwxr-xr-x 2 martin8 users 4096 Feb 12 14:03 .gnome-help-browser drwx------ 2 martin8 users 4096 Feb 12 14:02 .gnome_private -rw-r--r-- 1 martin8 users 105 Jan 30 12:37 .mailrc drwxr-xr-x 3 martin8 users 4096 Feb 25 13:56 .mc drwxr-xr-x 4 martin8 users 4096 Feb 12 14:03 .netscape -rwxrwxrwx 1 martin8 users 50 Jan 30 12:32 .profile -rw-r--r-- 1 martin8 users 3394 Jan 30 10:46 .screenrc --More-- b -- vuelve a la página anterior q -- sale h -- muestra ayuda ENTER -- pasa una linea ESPACIO - siguiente página HISTORY Comando que me guarda los ultimos comandos realizados. Ejemplo: [martin8@localhost martin8]$ history|more 1 pwd 2 logout 3 ls 4 exit 5 passwd martin 6 passwd 7 passwd 8 whoami 9 mail 10 mail .... 930 ps -f 931 whoami 932 history Para ejecutar un comando sin tener que volver a escribirlo: [martin8@localhost martin8]$ !931 whoami martin8 EJERCICIOS FICHEROS 1 CREAMOS LA SIGUIENTE ESTRUCTURA / home
  28. 28. 28 martin6 a b MART fich1 fich2 fich3 martin8 1) bash$ cp -r mart/* /home/martin8 [copia todos los ficheros de dentro de mart a martin8] bash$ pwd /home/martin6 bash$ cd /home/martin8 bash$ ls 10 20 30 datos f1 f2 f3 nsmail pa pu stdout tty1 2) bash$ pwd /home/martin6 bash$ cp -r mart /home/martin8 [copia el directorio inclusive] bash$ cd /home/martin8 bash$ ls 10 20 30 datos f1 f2 f3 mart nsmail pa pu stdout tty1 bash$ cd mart bash$ ls f1 f2 f3 3) bash$ pwd /home/martin8 bash$ cp -r /home/martin6/mart martin (estando en martin8 direccion absoluta y copia mart por martin dentro de martin8) bash$ ls 10 20 30 datos f1 f2 f3 martin nsmail pa pu stdout tty1 bash$ cd martin bash$ ls f1 f2 f3 4) bash$ cp -r /home/martin6/mart mart [con el mismo nombre] bash$ ls f1 f2 f3 mart bash$ pwd [pero al estar en el directorio martin me ha creado mart dentro de martin] /home/martin8/martin bash$ cd .. bash$ pwd /home/martin8 [si aquiero crearlo bajo martin8] bash$ cp -r /home/martin6/mart mart bash$ ls 10 20 30 datos f1 f2 f3 mart martin nsmail pa pu stdout tty1
  29. 29. 29 5) bash$ pwd /home/martin8 bash$ cp -r -f /home/martin6/mart mart (-f sin pedir confirmacion) bash$ cp -r /home/martin6/mart mart (por defecto sin) bash$ cp -r -i /home/martin6/mart mart (-i pide confirmacion) cp: ¿sobreescribir `mart/mart/f1'? (s/n) n cp: ¿sobreescribir `mart/mart/f2'? (s/n) n cp: ¿sobreescribir `mart/mart/f3'? (s/n) n RM -- elimina ficheros y directorios 1) bash$ ls 10 20 30 datos f1 f2 f3 mart nsmail pa pu stdout tty1 bash$ rm f1 f2 bash$ ls 10 20 30 datos f3 mart nsmail pa pu stdout tty1 2) bash$ ls 10 20 30 datos f3 mart nsmail pa pu stdout tty1 bash$ cd mart bash$ ls f1 f2 f3 mart bash$ cd .. bash$ rm mart rm: mart: es un directorio [NO DEJA ELIMINAR DIRECTORIOS salvo...] 3) bash$ rm -r mart [-r RECURSIVO elimina directorio y TODO lo de dentro] bash$ ls 10 20 30 datos f3 nsmail pa pu stdout tty1 4) creamos directorio y ficheros dentro con opcion -i pide confirmacion, sin ella o con -f no pide confirmaciçon bash$ mkdir marto bash$ cd marto bash$ touch 1 bash$ touch 2 bash$ touch 3 bash$ cd .. bash$ ls 10 20 30 datos f3 marto nsmail pa pu stdout tty1
  30. 30. 30 bash$ rm -r -i marto rm: ¿descender al directorio `marto'? (s/n) n EJERCICIO FICHEROS 2 Mc – programa para ver ficheros en Linux 1)Crear la estructura de arbol [martin8@localhost martin8]$ pwd /home/martin8 [martin8@localhost martin8]$ ls 10 50 f3 listado marto pa stdout vi 30 datos fich1 martin nsmail pu tty1 [martin8@localhost martin8]$ cd 10 [martin8@localhost 10]$ ls 20 a b c d [martin8@localhost 10]$ cd 20 [martin8@localhost 20]$ ls f g h 2)Borrar todo el contenido de 30 [martin8@localhost martin8]$ rm -r 30 [martin8@localhost martin8]$ ls 10 datos fich1 martin nsmail pu tty1 50 f3 listado marto pa stdout vi 3) Crear todo el contenido del directorio 10 a un nuevo directorio llamado 50 con ficheros y directorios incluidos [martin8@localhost martin8]$ cp -r 10 60 4) Copiar los ficheros del directorio 10 dentro del directorio /home/martin8/50/20 [martin8@localhost martin8]$ cp ./10/* ./50/20/ cp: ./10/20: se omite el directorio [martin8@localhost martin8]$ pwd /home/martin8 [martin8@localhost martin8]$ cd 50 [martin8@localhost 50]$ ls 20 a b c d [martin8@localhost 50]$ cd 20 [martin8@localhost 20]$ ls a b c d f g h 5) Desde el directorio principal /home/martin8 eliminar el directorio /50/20 [martin8@localhost martin8]$ rmdir ./50/20
  31. 31. 31 rmdir: ./50/20: El directorio no está vacío [martin8@localhost martin8]$ [martin8@localhost martin8]$ rm ./50/20/* [martin8@localhost martin8]$ cd 50/20 [martin8@localhost 20]$ ls [martin8@localhost 20]$ cd [martin8@localhost martin8]$ rmdir ./50/20 [martin8@localhost martin8]$ ls ./50 10 a b c d 6)Copiar lo que se encuentra en el directorio 10/20 al directorio 50 (solo ficheros) [martin8@localhost martin8]$ cp ./10/20/* 50 [martin8@localhost martin8]$ cd 10/20 [martin8@localhost 20]$ ls f g h [martin8@localhost 20]$ cd ../../50 [martin8@localhost 50]$ ls 10 a b c d f g h 7)Eliminar los ficheros del directorio 50, no el subdirectorio [martin8@localhost martin8]$ rm 50/* rm: 50/10: es un directorio [martin8@localhost martin8]$ cd 50 [martin8@localhost 50]$ ls 10 8) cambiar el nombre del directorio 10 a 80 [martin8@localhost martin8]$ mv 10 80 [martin8@localhost martin8]$ ls 50 80 f3 listado marto pa stdout vi 60 datos fich1 martin nsmail pu tty1 9)Mover los ficheros del directorio 80 al subdirectorio 20 [martin8@localhost 80]$ mv * ./20 mv: no se puede mover `20' a un directorio de sí mismo, `./20/20' [martin8@localhost 80]$ ls 20 [martin8@localhost 80]$ cd 20 [martin8@localhost 20]$ ls a b c d f g h 10) Copiar el directorio 50 con todos sus subdirectorios al nueo directorio 90 [martin8@localhost martin8]$ cp -r 50 90 [martin8@localhost martin8]$ ls 50 80 datos fich1 martin nsmail pu tty1
  32. 32. 32 60 90 f3 listado marto pa stdout vi 11) Crear un fichero con cat llamado X que diga "Iniciandome en UNIX..." en el directorio propio y haga una copia de el con el nombre MIO. [martin8@localhost martin8]$ cd [martin8@localhost martin8]$ cat > X Iniciandome en UNIX[martin8@localhost martin8]$ ls 50 80 X f3 listado marto pa stdout vi 60 90 datos fich1 martin nsmail pu tty1 [martin8@localhost martin8]$ cp X mio [martin8@localhost martin8]$ ls 50 80 X f3 listado marto nsmail pu tty1 60 90 datos fich1 martin mio pa stdout vi 12) Que hace esto? Que arbol de directorio tiene? [martin8@localhost datos]$ ls fich3 lolo report [martin8@localhost datos]$ cd reprot bash: reprot: No existe el fichero o el directorio [martin8@localhost datos]$ cd report [martin8@localhost report]$ ls informes [martin8@localhost report]$ mv ../fich3 . [martin8@localhost report]$ ls fich3 informes REDIRECCION - DESCRIPTORES ESTANDAR 0 STDIN  entrada 1 STDOUT  salida por defecto 2 STDERROR  salida en caso de error >  redirecciona creando o eliminando si existiera >>  redirecciona añadiendo a lo anterior y si no existiera lo crea nuevo cat f1 f2 > f3 cat f1 f2 > f1 martin8@NODE:/home/martin8/dir88> cat > f1 hola martin8@NODE:/home/martin8/dir88> cat > f2 adios martin8@NODE:/home/martin8/dir88> cat f1 f2 > f3 martin8@NODE:/home/martin8/dir88> cat f3
  33. 33. 33 hola adios martin8@NODE:/home/martin8/dir88> cat f1 f2 f89>f4 2>ferror martin8@NODE:/home/martin8/dir88> cat f4 hola adios martin8@NODE:/home/martin8/dir88> cat ferror cat: f89: No such file or directory martin8@NODE:/home/martin8/dir88> cat f1 f2 f89>>f4 2>ferror martin8@NODE:/home/martin8/dir88> cat f4 hola adios hola adios martin8@NODE:/home/martin8/dir88> cat ferror cat: f89: No such file or directory cat f1 f2 f3 2>/dev/null > >> 1) Ejemplo de como se redirecciona un error a nulo (a papelera) [martin8@localhost martin8]$ cat >f1 este es f1 [martin8@localhost martin8]$ cat >f2 este es f2 [martin8@localhost martin8]$ cat f1 f2 este es f1 este es f2 [martin8@localhost martin8]$ cat f1 f2 f3 este es f1 este es f2 cat: f3: No existe el fichero o el directorio [martin8@localhost martin8]$ cat f1 f2 f3 2>/dev/null este es f1 este es f2 [AQUI NO SALE EL ERROR POR PANTALLA] 2) [martin8@localhost martin8]$ cat <f1 >fi3 [martin8@localhost martin8]$ cat f1 este es f1 [martin8@localhost martin8]$ cat fi3 este es f1
  34. 34. 34 Lo que entra en cat no es del teclado sino del fi1 para luego grabarlo en fi3 3) [martin8@localhost martin8]$ cat <f1 2>/dev/null este es f1 [martin8@localhost martin8]$ cat <f1 f6 2>/dev/null [martin8@localhost martin8]$ cat <f1 f6 2>err [martin8@localhost martin8]$ cat err cat: f6: No existe el fichero o el directorio entra en cat y se muestra por pantalla f1 si huvbiera error se tira a la papelera igual que el anterior pero con dos ficheros, f6 no existe, el error se tira a null igual que el anterior pero el error se lleva a fichero err 4) [martin8@localhost martin8]$ cat f1 f2 >> f3 2>>err [martin8@localhost martin8]$ cat f1 este es f1 [martin8@localhost martin8]$ cat f2 este es f2 [martin8@localhost martin8]$ cat f3 este es f1 este es f2 une dos ficheros f1 y f2 en f3 y si hay errores en err 5) [martin8@localhost martin8]$ cat f1 f10 >> f3 2>>err1 [martin8@localhost martin8]$ cat f1 este es f1 [martin8@localhost martin8]$ cat f10 cat: f10: No existe el fichero o el directorio [martin8@localhost martin8]$ cat f3 este es f1 este es f2 este es f1 [martin8@localhost martin8]$ cat err1 cat: f10: No existe el fichero o el directorio [martin8@localhost martin8]$ 6) Indicar en estas sentencias cual es la entrada, salida y direcion de error mail pepe (entrada teclado, salida pantalla, error pantalla) mail pepe <carta sort <fich >> fich2 2>err cat >nuevofich 2>1 VARIOS COMANDOS EN UNA LINEA -> SEPARADOS POR ;
  35. 35. 35 UN COMANDO LARGO EN VARIAS LINEAS  AL FINAL DE LINEA SIN DEJAR ESPACIO ENTRE ESCRIBIR Y DAR A ENTER PIPE O TUBERIAS La ejecución de un comando pasa al siguiente. Es una forma simple y muy util de redireccionar la salida de un comando como entrada de otro. Se utiliza el caracter | cat f1|head -3|wc –w Contar las palabras que tiene las 3 primeras lineas del fichero f1 El contenido del fichero f1 se pasa al comando head que únicamente selecciona las 3 primeras lineas y posteriormenete esas tres lineas son las que recoje el comando wc –w para contar las palabras que tiene. Ejemplo: 1) cat listado|tail -10 -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:34 f3 -rw-r--r-- 1 martin6 ASI2 0 feb 21 13:56 listado -rw-r--r-- 1 martin6 ASI2 16 feb 21 13:51 martin drwxr-xr-x 2 martin6 ASI2 4096 feb 21 13:49 marto drwx------ 2 martin8 users 4096 feb 12 14:03 nsmail drwxr-xr-x 3 martin8 users 4096 ene 31 11:35 pa drwxr-xr-x 4 martin8 users 4096 ene 31 11:36 pu -rw-r--r-- 1 root root 17 feb 19 12:43 stdout -rw-r--r-- 1 martin8 users 0 feb 19 12:15 tty1 -rwxrwxrwx 1 martin6 ASI2 5 feb 21 13:54 vi 2)cat listado|wc -l 37 3) cat listado|more 4)ls -la|more 5) cat listado|sort 6) bash$ cat listado|sort > fich1 bash$ cat fich1|more Es una forma simple y muy util de redireccionar la salida de un comando como entrada de otro. Se utiliza el caracter |
  36. 36. 36 Por ejemplo: [martin8@localhost martin8]$ ls|wc -w 16 es lo mismo que: [martin8@localhost martin8]$ ls > num [martin8@localhost martin8]$ wc -w num 16 num [martin8@localhost martin8]$ rm num Ordenar en un fichero el contenido del directorio [martin8@localhost martin8]$ cat num|sort > numord cat: num: No existe el fichero o el directorio [martin8@localhost martin8]$ ls > num [martin8@localhost martin8]$ cat num|sort > numord [martin8@localhost martin8]$ cat num a b datos err err1 f1 f2 f3 fi3 ls.out ls.out1 ls.out3 marto num numord pru pu [martin8@localhost martin8]$ cat numord a b datos err err1 f1 f2 f3 fi3 ls.out ls.out1 ls.out3 marto
  37. 37. 37 num numord pru pu Mostrar los tres primeros ficheros ordenados alfabeticamente del directorio [martin8@localhost martin8]$ cat numord|head -3 a b datos Grabar en un fichero llamado tres los tres ultimos ficheros despues de realizar ls. Deseamos que salga por pantalla ordenados en orden inverso a la vez que se hayn grabado en dicho orden en un fichero llamado treso. [martin8@localhost martin8]$ ls|tail -3|tee tres|sort -r|tee treso treso tres pu [martin8@localhost martin8]$ cat tres pu tres treso TEE Lee la entrada estandar y envia la saliada sin transformar a dos lugares a un fichero especificado salida estandar ls|tee f1|sort la salida del comando ls el comando tee lo recibe y lo graba en el fichero f1 y además lo envía al siguiente comando, en este caso sort COMODINES *  cualquier carácter ¿  un carácter (numero o letra, etc…) blanco  o [ ]  cualquiera de los caracteres ¡  not ls a*  muestra ficheros que comienzan por a rm a?? b??  borra ficheros que empiezan por a o por b y tienen tres letras SOLO
  38. 38. 38 rm [abcd]*[xy]  borra ficheros que empiezan por cualquiera de las letras a,b,c,d y que terminen por x o y. Entre la letra de principio y final puede haber ninguno o infinitos caracteres. cat [ ¡ab]*  muestra ficheros que no comienzan ni por a ni por b rm [A-Z]?[¡b][¡a]  Ficheros de 4 letras que empiezan en su primera letra desde la A a la Z. LA segunda letra cualquiera, la tercera no puede ser una b, y la ultima no puede ser una a. 1) ls y ls * [martin8@localhost martin8]$ ls a datos err1 f2 fi10 ls.out ls.out3 num pru tres b err f1 f3 fi3 ls.out1 marto numord pu treso [martin8@localhost martin8]$ ls * a err f1 f3 fi3 ls.out1 num tres b err1 f2 fi10 ls.out ls.out3 numord treso datos: lolo report marto: 1 2 3 pru: a b c d pr pu: 2) [martin8@localhost martin8]$ ls a datos err1 f2 fi10 ls.out ls.out3 num pru tres b err f1 f3 fi3 ls.out1 marto numord pu treso [martin8@localhost martin8]$ ls f* f1 f2 f3 fi10 fi3 3) ? es un caracter y si se deja espacio en blanco es como si fuera un OR [martin8@localhost martin8]$ ls a datos err1 f2 fi10 ls.out ls.out3 num pru tres b err f1 f3 fi3 ls.out1 marto numord pu treso [martin8@localhost martin8]$ ls f? p? f1 f2 f3 pu: pu
  39. 39. 39 4) [cualquiera de los caracteres entre corchetes] [martin8@localhost martin8]$ ls a datos err1 f2 fi10 ls.out ls.out3 num pru tres b err f1 f3 fi3 ls.out1 marto numord pu treso [martin8@localhost martin8]$ rm [tn]*[ms] [martin8@localhost martin8]$ ls a datos err1 f2 fi10 ls.out ls.out3 numord pu b err f1 f3 fi3 ls.out1 marto pru treso --> empieze por t o n luego lo que sea y termine por ms 5) ! NOT [martin8@localhost martin8]$ ls a datos err1 f2 fi10 ls.out ls.out3 numord pu b err f1 f3 fi3 ls.out1 marto pru treso [martin8@localhost martin8]$ ls [!lmpted]* a b f1 f2 f3 fi10 fi3 numord 6) [martin8@localhost martin8]$ ls a datos err1 f2 fi10 ls.out ls.out3 numord pu b err f1 f3 fi3 ls.out1 marto pru treso [martin8@localhost martin8]$ ls [f-l]?*[0-9] fi10 fi3 ls.out1 ls.out3 ? UNO OBLIGATORIO * MUCHOS O NINGUNO Para probarlo [martin8@localhost martin8]$ ls a datos err1 f2 f7 fi3 ls.out1 marto pru treso b err f1 f3 fi10 ls.out ls.out3 numord pu [martin8@localhost martin8]$ ls [f-l]?*[0-9] fi10 fi3 ls.out1 ls.out3 COMPARACION FICHEROS cmp Por omision lista el numero de caracter y la línea de diferencia cmp [opciones] archivo1 archivo2
  40. 40. 40 martin8@NODE:/home/martin8> cat > comp Este es el fichero comp el 0 martin8@NODE:/home/martin8> cat > comp1 Este es el fichero comp el 1 martin8@NODE:/home/martin8> martin8@NODE:/home/martin8> cmp comp comp1 comp comp1 differ: char 28, line 2 cmp [opciones] archivo1 archivo2 diff Muestra la diferencia entre dos ficheros. Si son iguales no muestra nada si son distintos mostrará la diferencia. martin8@NODE:/home/martin8> diff comp comp1 2c2 < el 0 --- > el 1 [martin8@localhost martin8]$ touch a [martin8@localhost martin8]$ touch b [martin8@localhost martin8]$ diff a b [martin8@localhost martin8]$ cat >a hola [martin8@localhost martin8]$ cat>b hola [martin8@localhost martin8]$ diff a b [martin8@localhost martin8]$ cat>>a martin [martin8@localhost martin8]$ diff a b 2d1 < martin [martin8@localhost martin8]$ cat >b hola mart in [martin8@localhost martin8]$ diff a b 2c2 < martin --- > mart in
  41. 41. 41 DIRCMP (EN LINUX NO EXISTE) Salida con dos seccones:  Archivos presentes en uno solo de los directorios  Archivos del mismo nombre en los dos directorios indicando si coinciden o no ALIAS Alias nos indica los alias creados en el sistema. Para crear un alias: alias nombre del alias='(y entre comillas simples el comando)' posteriormente al ejecutar el alias se ejecuta los comandos que hayamos realizado. Por ejemplo: [martin8@localhost martin8]$ alias ls1='ls ;pwd' [martin8@localhost martin8]$ alias alias l.='ls .[a-zA-Z]* --color=tty' alias ll='ls -l --color=tty' alias ls='ls --color=tty' alias ls1='ls ;pwd' [martin8@localhost martin8]$ ls1 a b datos fich marto pu /home/martin8 FICHEROS INODE Un inode es la estructura de datos en disco que desribe y almacena los atributos del fichero y su localización. Cuando el disco se inicializa para aceptar ficheros se crean un número específico de inodes. El número de inodes determina el número máximo de ficheros que puede haber en el disco. Existe un inode para cada 2 a 8 KBytes. Cada inode tiene un numero distinto y cada fichero tiene su inode. Por tanto cuando se crea un fichero un inode se le asigna a el y este es unico. La información que se guarda en un inode es: Propietario y grupo Tipo de fichero Permisos Fecha de creación acceso y modificación
  42. 42. 42 Número de links al fichero Tamaño del fichero Direcciones del disco donde se situa el fichero Los inodes guardan toda la información del fichero excepto su localización en el directorio y su nombre. TIPOS DE FICHEROS: En UNIX todo es un fichero. incluso los dispositivos. Existen deistintos tipos de ficheros: 1. Ficheros regulares Contienen datos y corresponden a ficheros normales. Texto Binarios Scripts ejecutables Disponen de un - (ls -la) 2. Directorios Un directorio es un fichero binario que contiene una lista de los ficheros que contiene. En cada directorio existe una pareja de nombre de fichero e inodo. de esta manera es en la que se asocian el inode y la localización y nombre del fichero. Por este motivo cuando se quiere realizar un contenido de un directorio sin propiedades no es necesario acceder al directorio pero si deseamos ver sus propiedades si. (ls Vv Ls-s) ls -s para acceder a su tamaño por ejemplo debo acceder al inode que es donde se guarda ese tipo de información. Y para ver el inde debo accedr al directorio. 3. FICHEROS ESPECIALES Los ficheros especiales son el mecanismo por el que UNIX se comunica con la entrada y salida. Se encuentran en el directorio /dev y corresponden a dispositivos de entrada/salida 4. LINKS Un link es un mecanismo que permite referirse con distinto nombre de fichero a un mismo fichero en disco. Existen dos tipos de links: hard link: (duro) Asocian uno o mas nombre de fichero con el mismo inode. ln index hlink : crea un link con nombre hlink con el mismo inode que el fichero index index -- 3 hlink --- 3
  43. 43. 43 soft link: (blando) Asocia un nombre a un nuevo inode que indica la posición en disco donde se guarda la información del path donde esta el fichero. ln -s index slink Asocia al nombre slink un nuevo inode. Este inode indica la posición en disco donde se guarda el path completo del fichero index. index -- 3 slink -- 4 LOS DOS PERMITEN VISUALIZAR EL CONTENIDO DE INDEX UTILIZANDO LOS NOMBRE DE hlink e slink PERO EXISTEN DIFERENCIAS EN LA ESTRUCTURA INTERNA. 5. SOCKETS Ficheros especiales para comunicaciones entre procesos dentro de la propia máquina o entre máquinas distintas utilizando TCP/IP. Se abre el socket, lee o escribe...como si fueran ficheros.En lugar de salida escribirlo a un fichero y enviarlo se envia directamente or comunicaciones, más rápido. 6. PIPES Ficheros de comunicaciones entre procesos de la misma máquina. IDENTIFICACIÓN DE LOS DIVERSOS TIPOS DE FICHEROS ls -l identifica los diversos tipos de ficheros que existen en UNIX - ficheros regulares d directorio l link simbolico d dispositivo s socket p pipe martin8@NODE:/home/martin8> ls -l total 24 -rw-r--r-- 2 martin8 users 24 Feb 25 10:46 hlink -rw-r--r-- 1 martin8 users 33 Feb 25 11:04 index -rw-r--r-- 1 martin8 users 20 Feb 23 02:35 l? drwxr-xr-x 2 martin6 ASI2 4096 Feb 21 13:49 marto/ drwxr-xr-x 3 martin8 users 4096 Feb 25 11:02 seg/ lrwxrwxrwx 1 martin8 users 5 Feb 25 10:56 slink -> index -rwxrwxrwx 1 martin8 users 14 Feb 22 18:50 treso*
  44. 44. 44 FILE EL COMANDO FILE identifica el tipo de fichero file * martin8@NODE:/home/martin8> file * hlink: ASCII text index: ASCII text lç: ASCII text marto: directory seg: directory slink: symbolic link to index treso: ASCII text LINKS LN Existen dos tipos de links: hard link: (duro) ln index hlink : crea un link con nombre hlink con el mismo inode que el fichero index soft link: (blando) ln -s index slink LOS DOS PERMITEN VISUALIZAR EL CONTENIDO DE INDEX UTILIZANDO LOS NOMBRE DE hlink e slink PERO EXISTEN DIFERENCIAS EN LA ESTRUCTURA INTERNA. CASOS Y DIFERENCIA DE LINKS: 1) Si no ocurre nada, ambos link visualizan el fichero index martin8@NODE:/home/martin8> cat > index Este es index de Martin martin8@NODE:/home/martin8> cat index Este es index de Martin martin8@NODE:/home/martin8> ls -li total 20 36409 -rw-r--r-- 1 martin8 users 24 Feb 25 10:46 index 36408 -rw-r--r-- 1 martin8 users 20 Feb 23 02:35 l? 3924 drwxr-xr-x 2 martin6 ASI2 4096 Feb 21 13:49 marto/ 3934 drwxr-xr-x 3 martin8 users 4096 Feb 23 02:05 seg/ 36545 -rwxrwxrwx 1 martin8 users 14 Feb 22 18:50 treso*
  45. 45. 45 martin8@NODE:/home/martin8> ln index hlink martin8@NODE:/home/martin8> ls -li index *link 36409 -rw-r--r-- 2 martin8 users 24 Feb 25 10:46 hlink 36409 -rw-r--r-- 2 martin8 users 24 Feb 25 10:46 index martin8@NODE:/home/martin8> ln -s index slink martin8@NODE:/home/martin8> ls -li index *link 36409 -rw-r--r-- 2 martin8 users 24 Feb 25 10:46 hlink 36409 -rw-r--r-- 2 martin8 users 24 Feb 25 10:46 index 36435 lrwxrwxrwx 1 martin8 users 5 Feb 25 10:56 slink -> index Si mostramos hlink o slink se muestra el mismo contenido martin8@NODE:/home/martin8> cat slink Este es index de Martin martin8@NODE:/home/martin8> cat hlink Este es index de Martin 2) Si se mueve index que significa solo añadir una nueva entrada en el nuevo directorio y borrarla del antiguo no se afecta el hardlink pues el inode del fichero es el mismo. Por el contrario softlink apunta a lago que no existe pues ya no está en el mismo directorio. Lo mismo ocurre si se borra el fichero index. martin8@NODE:/home/martin8> mv index seg/ martin8@NODE:/home/martin8> ls -l total 20 -rw-r--r-- 2 martin8 users 24 Feb 25 10:46 hlink -rw-r--r-- 1 martin8 users 20 Feb 23 02:35 l? drwxr-xr-x 2 martin6 ASI2 4096 Feb 21 13:49 marto/ drwxr-xr-x 3 martin8 users 4096 Feb 25 11:02 seg/ lrwxrwxrwx 1 martin8 users 5 Feb 25 10:56 slink -> index -rwxrwxrwx 1 martin8 users 14 Feb 22 18:50 treso* Ya hemos movido el fichero index al directorio seg. Vamos a intentar visualizar: martin8@NODE:/home/martin8> cat hlink Este es index de Martin martin8@NODE:/home/martin8> cat slink cat: slink: No such file or directory 3)Si creamos un nuevo index, que ocurre??? martin8@NODE:/home/martin8> cat > index Este es el nuevo index de Martin martin8@NODE:/home/martin8> cat hlink Este es index de Martin martin8@NODE:/home/martin8> cat slink Este es el nuevo index de Martin
  46. 46. 46 Por tanto slink nos va a permitir siempre tener la versión actualizada de un fichero. Un hardlink nos va a obtener el original y va a evitar el que si se elimina por accidente podamos acceder por hlink de nuevo. CUT Este comando permite cortar una secuencia de caracteres de un archivo. Cut –f1 agenda Imprime la primera columna del archivo. Tambien es posible seleccionar varias columnas: Cut –f1,3 agenda Obtiene los campos 1 y 3 de agenda. Si se quiere empler otro delimitador de campos que no sea el tabulador es preciso indicarlo con –d seguida del nuevo delimitador Cut –d : -f1,3 agenda Por ejemplo: [martin@martin martin]$ cat pr Hola me llamo Martin y tu como te llamas? voy a probar cut [martin@martin martin]$ cut -d ' ' -f2 pr [HACEMOS EL BLANCO COMO CAMPO] me tu a TR Traducir un carácter por otros. Tr abc ABC < lista [martin@martin martin]$ cat pr Hola me llamo Martin y tu como te llamas? voy a probar cut [martin@martin martin]$ tr me ME < pr Hola ME llaMo Martin y tu coMo tE llaMas? voy a probar cut
  47. 47. 47 Cambiará los caracteres a, b y c del archivo lista por sus correspondientes letras mayusculas. SE SUELE EMPLEAR PARA CAMBIAR EL SEPARADOR DE CAMPOS EN FICHEROS Tr : ‘<TAB>’ < datos Tengo que situar el TAB entre comillas para evitar que el interprete crea que es un espacio. En Linux por ejemplo el tabulador se representa como /t [martin@martin martin]$ tr ' ' 't' < pr Hola me llamo Martin y tu como te llamas? voy a probar cut COMPRESIÓN DE FICHEROS EN UNIX Existen dos formas de compresión en los ficheros UNIX:  compress, uncompress (1/5)  gzip, gunzip compress, uncompress [martin8@localhost martin8]$ cat pruebagrep hola voy a probar a ver si me dice en que lugares aparece la letra a el comando grep y este no tiene la letra est line no tiene :-) [martin8@localhost martin8]$ compress pruebagrep [martin8@localhost martin8]$ ls a datos err1 f2 f7 fi3 ls.out1 marto pru pu b err f1 f3 fi10 ls.out ls.out3 numord pruebagrep.Z treso Si intento visualizar el fichero comprimido no puedo, pero existe la sentencia zcat que lo permite [martin8@localhost martin8]$ cat pruebagrep.Z hÞ° ÂΛ<‘óFL9 Ø)qNmÊ€ “fŒÆ2n@Ä©£‘M3Ë̝¡ ”Y†Ž‚a”abÌ›6aÜ•y âŒœ2pX"TIG£tÒ€,IMÍ›,™ÊLãÆ)T©]Aèh‘B[martin8@localhost martin8]$ [martin8@localhost martin8]$ zcat pruebagrep.Z hola voy a probar a ver si me dice en que lugares aparece la letra a el comando grep y este no tiene la letra est line no tiene :-)
  48. 48. 48 IMPORTANTE AL COMPRIMIR ELIMINA EL ORIGINAL Y CREA EL COMPRIMIDO. AL DESCOMPRIMIR ELIMINA EL COMPRIMIDO Y CREA EL ORIGINAL. [martin8@localhost martin8]$ ls a datos err1 f2 f7 fi3 ls.out1 marto pru pu b err f1 f3 fi10 ls.out ls.out3 numord pruebagrep.Z treso [martin8@localhost martin8]$ uncompress pru pru pruebagrep.Z [martin8@localhost martin8]$ uncompress pruebagrep.Z [martin8@localhost martin8]$ ls a datos err1 f2 f7 fi3 ls.out1 marto pru pu b err f1 f3 fi10 ls.out ls.out3 numord pruebagrep treso Podemos visualizarlo en tuberias: [martin8@localhost martin8]$ zcat pruebagrep.Z|head -1 hola voy a probar a Lo que no podria realizar es utilizar el cat. gzip Compresión de GNU, genera ficheros en lugar de .Z .gz. Con zcat se puede visualizar también. [martin8@localhost martin8]$ gzip pruebagrep [martin8@localhost martin8]$ ls a datos err1 f2 f7 fi3 ls.out1 marto pru pu b err f1 f3 fi10 ls.out ls.out3 numord pruebagrep.gz treso Descomprimirlo: [martin8@localhost martin8]$ gunzip pruebagrep.gz [martin8@localhost martin8]$ ls a datos err1 f2 f7 fi3 ls.out1 marto pru pu b err f1 f3 fi10 ls.out ls.out3 numord pruebagrep treso Tarea: probar cual comprime mas un fichero. [martin8@localhost martin8]$ ls -laR > co [martin8@localhost martin8]$ ls -l co -rw-r--r-- 1 martin8 users 2870649 feb 22 20:00 co [martin8@localhost martin8]$ compress co [martin8@localhost martin8]$ ls -l co* -rw-r--r-- 1 martin8 users 62277 feb 22 20:00 co.Z [martin8@localhost martin8]$ gzip co
  49. 49. 49 [martin8@localhost martin8]$ ls -l co* -rw-r--r-- 1 martin8 users 13682 feb 22 20:00 co.gz VI EDITOR DE TEXTO vi fichero a -- para empezar a escribir Al pulsar aparece en la parte inferior : --INSERT cuando quiero terminar de escribir ESC :wq 2) vi fichero --> vuelve a abrir el fichero a -- escribir escribir varias lineas: ESC -- pasar a comando --> probar desplazamientos (h, l, j, k, etc).
  50. 50. 50 MODOS O PERMISOS rwx rwx rwx USUARIO, GRUPO, OTROS Fichero: r  permite leer el contenido w  permite modificar o eliminar X  permite ejecutar el fichero (programas o shell script) Directorio: r  permite listar su contenido w  permite crear ficheros y directorios dentro y eliminarlos (requiere X) x  permite hacer cd al directorio 2 modos de cambiar permisos: SIMBÓLICO uno o mas de u g o a + + añade - elimina = asigna + uno o más de r w x chmod ug+w f1 chmod a+r f1 chmod g-x f1 chmod –R a+r *  cambia los permisos de forma recursiva a TODOS lo que contiene el directorio actual. OCTAL r 4 w 2 x 1 chmod 764 f1 7  Permisos de usuario 6  permisos de grupo 4  permisos de otros Permisos especiales
  51. 51. 51 SUID,SGID  Asigna permisos del propietario y grupo durante la ejecución. Cuando el fichero se ejecuta hace que el usuario que ejecuta el programa adquiera los privilegios del propietario chmod u+s f1 (SUID) chmod g+s f1 (SGID) Por ejemplo el comando passwd which passwd cd /usr/bin/passwd ls –la passwd STICKY BIT Cuando un directorio tiene este permiso un usuario solo puede borrar los ficheros que sean de ese usuario y no de otros. Ejemplo : Directorio /tmp cd /tmp (Se asignaria chmod u+t) ls –l /tmp umask Establece permisos por defecto al crear ficheros o directorios. 777-permisos que quiero asignar (p. ejemplo 754) = 023 umask 023  lo que hace es crear permisos por defecto de 754  rwxr-x-r— CUIDADO: 666 para ficheros 777 para directorios PERMISOS NECESARIOS Comando Directorio origen Fichero origen Directorio destino cd x ls r mkdir x w rmdir x w cat x r mv x w x w cp x r x w rm w w
  52. 52. 52 ln x x w CAMBIO DE PROPIETARIO Y GRUPO chown usdai1 f1  cambia el propietario al fichero f1 por usdai1 chown usdai1:staff  cambia el usuario y grupo al fichero f1 chgrp staff f1 cambia el grupo al fichero f1 por staff Se puede cambiar de grupo actual con newgrp EJERCICIO PERMISOS EJERCICI0 PERMISOS Crear el arbol de directorios [martin8@localhost martin8]$ mkdir datos [martin8@localhost martin8]$ mkdir datos/report [martin8@localhost martin8]$ mkdir datos/report/informes [martin8@localhost martin8]$ touch datos/report/informes/datos.junio [martin8@localhost martin8]$ touch datos/datos.enero [martin8@localhost martin8]$ ls datos Cambiar los permisos a los adecuados: [martin8@localhost martin8]$ ls -l total 12 drwxr-xr-x 3 martin8 users 4096 feb 22 13:59 datos Permisos de directorio datos: [martin8@localhost martin8]$ chmod 755 datos [martin8@localhost martin8]$ ls -l total 12 drwxr-xr-x 3 martin8 users 4096 feb 22 13:59 datos drwxr-xr-x 2 martin6 ASI2 4096 feb 21 13:49 marto drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 pu Permisos del directorio datos.enero [martin8@localhost martin8]$ cd datos [martin8@localhost datos]$ ls -la total 12 drwxr-xr-x 3 martin8 users 4096 feb 22 13:59 . drwxrwxrwx 12 martin8 users 4096 feb 22 13:59 .. -rw-r--r-- 1 martin8 users 0 feb 22 13:59 datos.enero drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 report [martin8@localhost datos]$ chmod 664 datos.enero
  53. 53. 53 [martin8@localhost datos]$ ls -la total 12 drwxr-xr-x 3 martin8 users 4096 feb 22 13:59 . drwxrwxrwx 12 martin8 users 4096 feb 22 13:59 .. -rw-rw-r-- 1 martin8 users 0 feb 22 13:59 datos.enero drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 report 1) Se ha creado el usuario juan useadd -g users -p notocar juan se ha realizado login con el usuario juan y se ha probado: login: juan Password: bienvenido caraculo [juan@localhost juan]$ id uid=2005(juan) gid=100(users) groups=100(users) [juan@localhost juan]$ cd [juan@localhost juan]$ pwd /home/juan [juan@localhost juan]$ cd /home/martin8 [juan@localhost martin8]$ ls datos marto pu [juan@localhost martin8]$ cd datos [juan@localhost datos]$ ls datos.enero report [juan@localhost datos]$ cat >>datos.enero juan lo ha modificado[juan@localhost datos]$ ls datos.enero report [juan@localhost datos]$ cat datos.enero juan lo ha modificado[juan@localhost datos]$ EJEMPLO DE COMO MODIFICANDO SUS PERMISOS ROOT PUEDE HACER TODO [juan@localhost datos]$ cat datos.enero juan lo ha modificado[juan@localhost datos]$ su root Password: [root@localhost datos]# ls datos.enero report [root@localhost datos]# cat >>datos.enero [root@localhost datos]# chmod 000 datos.enero [root@localhost datos]# ls -l total 8 ---------- 1 martin8 users 21 feb 22 14:13 datos.enero drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 report [root@localhost datos]# cat >> datos.enero y root TODO[root@localhost datos]# cat datos.enero juan lo ha modificadoy root TODO[root@localhost datos]# 2)
  54. 54. 54 Cabio de permisos DATOS [martin8@localhost martin8]$ ls -l total 12 drwxr-xr-x 3 martin8 users 4096 feb 22 13:59 datos drwxr-xr-x 2 martin6 ASI2 4096 feb 21 13:49 marto drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 pu [martin8@localhost martin8]$ chmod 775 datos [martin8@localhost martin8]$ ls -l total 12 drwxrwxr-x 3 martin8 users 4096 feb 22 13:59 datos REPORT [martin8@localhost datos]$ ls -l total 8 ---------- 1 martin8 users 32 feb 22 14:15 datos.enero drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 report [martin8@localhost datos]$ chmod 765 report [martin8@localhost datos]$ ls -l total 8 ---------- 1 martin8 users 32 feb 22 14:15 datos.enero drwxrw-r-x 3 martin8 users 4096 feb 22 13:57 report INFORMES [martin8@localhost report]$ ls -l total 4 drwxr-xr-x 2 martin8 users 4096 feb 22 13:58 informes [martin8@localhost report]$ chmod 775 informes [martin8@localhost report]$ ls -l total 4 drwxrwxr-x 2 martin8 users 4096 feb 22 13:58 informes DATOS.JUNIO [martin8@localhost informes]$ ls -l total 0 -rw-r--r-- 1 martin8 users 0 feb 22 13:58 datos.junio [martin8@localhost informes]$ chmod 664 datos.junio [martin8@localhost informes]$ ls -l total 0 -rw-rw-r-- 1 martin8 users 0 feb 22 13:58 datos.junio SOLUCION [juan@localhost datos]$ whoami juan [juan@localhost datos]$ pwd
  55. 55. 55 /home/martin8/datos [juan@localhost datos]$ cd report bash: report: Permiso denegado 3) Cambiar permisos DATOS [martin8@localhost martin8]$ ls -l total 12 drwxrwxr-x 3 martin8 users 4096 feb 22 13:59 datos [martin8@localhost martin8]$ chmod 755 datos [martin8@localhost martin8]$ ls -l total 12 drwxr-xr-x 3 martin8 users 4096 feb 22 13:59 datos datos.enero [martin8@localhost datos]$ ls -l total 8 ---------- 1 martin8 users 32 feb 22 14:15 datos.enero drwxrw-r-x 3 martin8 users 4096 feb 22 13:57 report [martin8@localhost datos]$ chmod 600 datos.enero [martin8@localhost datos]$ ls -l total 8 -rw------- 1 martin8 users 32 feb 22 14:15 datos.enero drwxrw-r-x 3 martin8 users 4096 feb 22 13:57 report datos/report drwxrw-r-x 3 martin8 users 4096 feb 22 13:57 report [martin8@localhost datos]$ chmod 755 report [martin8@localhost datos]$ ls -l total 8 -rw------- 1 martin8 users 32 feb 22 14:15 datos.enero drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 report SOLUCION [juan@localhost datos]$ ls datos.enero report [juan@localhost datos]$ cp datos.enero /home/juan cp: datos.enero: Permiso denegado 5) Cambiar permisos DATOS [martin8@localhost martin8]$ ls -l total 12 drwxr-xr-x 3 martin8 users 4096 feb 22 13:59 datos drwxr-xr-x 2 martin6 ASI2 4096 feb 21 13:49 marto
  56. 56. 56 drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 pu [martin8@localhost martin8]$ chmod 775 datos [martin8@localhost martin8]$ ls -l total 12 drwxrwxr-x 3 martin8 users 4096 feb 22 13:59 datos Cambiar permisos datos.enero [martin8@localhost datos]$ ls -l total 8 -rw------- 1 martin8 users 32 feb 22 14:15 datos.enero drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 report [martin8@localhost datos]$ chmod 400 datos.enero [martin8@localhost datos]$ ls -l total 8 -r-------- 1 martin8 users 32 feb 22 14:15 datos.enero drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 report SOLUCION [juan@localhost datos]$ ls -l total 8 -r-------- 1 martin8 users 32 feb 22 14:15 datos.enero drwxr-xr-x 3 martin8 users 4096 feb 22 13:57 report [juan@localhost datos]$ rm -f datos.enero [juan@localhost datos]$ ls report PROPIEDAD DE LOS PERMISOS 1) Cambiar la propiedad de un fichero: (antes era de root y ahora de martin6) [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 root root 0 feb 22 17:52 a -rw-r--r-- 1 root root 0 feb 22 17:53 b -rw-r--r-- 1 root root 0 feb 22 17:53 c -rw-r--r-- 1 root root 0 feb 22 17:53 d [root@localhost pru]# chown martin6 a [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 martin6 root 0 feb 22 17:52 a -rw-r--r-- 1 root root 0 feb 22 17:53 b -rw-r--r-- 1 root root 0 feb 22 17:53 c -rw-r--r-- 1 root root 0 feb 22 17:53 d 2) Cambiar la propieda y el grupo de un fichero [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 root root 0 feb 22 17:52 a -rw-r--r-- 1 root root 0 feb 22 17:53 b
  57. 57. 57 -rw-r--r-- 1 root root 0 feb 22 17:53 c -rw-r--r-- 1 root root 0 feb 22 17:53 d [root@localhost pru]# chown martin6 a [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 martin6 root 0 feb 22 17:52 a -rw-r--r-- 1 root root 0 feb 22 17:53 b -rw-r--r-- 1 root root 0 feb 22 17:53 c -rw-r--r-- 1 root root 0 feb 22 17:53 d [root@localhost pru]# chown martin8:users b [root@localhost pru]# ls-l bash: ls-l: command not found [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 martin6 root 0 feb 22 17:52 a -rw-r--r-- 1 martin8 users 0 feb 22 17:53 b -rw-r--r-- 1 root root 0 feb 22 17:53 c -rw-r--r-- 1 root root 0 feb 22 17:53 d 3) Cambiar el grupo de un fichero [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 martin6 root 0 feb 22 17:52 a -rw-r--r-- 1 martin8 users 0 feb 22 17:53 b -rw-r--r-- 1 root root 0 feb 22 17:53 c -rw-r--r-- 1 root root 0 feb 22 17:53 d [root@localhost pru]# chgrp users d [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 martin6 root 0 feb 22 17:52 a -rw-r--r-- 1 martin8 users 0 feb 22 17:53 b -rw-r--r-- 1 root root 0 feb 22 17:53 c -rw-r--r-- 1 root users 0 feb 22 17:53 d 4) De forma recursiva todo un directorio [root@localhost martin8]# chown -R root pru [root@localhost martin8]# cd pru [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 root root 0 feb 22 17:52 a -rw-r--r-- 1 root users 0 feb 22 17:53 b -rw-r--r-- 1 root root 0 feb 22 17:53 c -rw-r--r-- 1 root users 0 feb 22 17:53 d 5) Cambiar propietarios y grupos de todos los ficheros [root@localhost pru]# chown -R root:users ../pru [root@localhost pru]# ls -l total 0 -rw-r--r-- 1 root users 0 feb 22 17:52 a
  58. 58. 58 -rw-r--r-- 1 root users 0 feb 22 17:53 b -rw-r--r-- 1 root users 0 feb 22 17:53 c -rw-r--r-- 1 root users 0 feb 22 17:53 d 6) Con subdirectorios incluidos chown -R martin8:users ../pru [root@localhost pru]# ls -la total 12 drwxr-xr-x 3 martin8 users 4096 feb 22 18:00 . drwxrwxrwx 13 martin8 users 4096 feb 22 17:52 .. -rw-r--r-- 1 martin8 users 0 feb 22 17:52 a -rw-r--r-- 1 martin8 users 0 feb 22 17:53 b -rw-r--r-- 1 martin8 users 0 feb 22 17:53 c -rw-r--r-- 1 martin8 users 0 feb 22 17:53 d drwxr-xr-x 2 martin8 users 4096 feb 22 18:00 pr [root@localhost pru]# cd pr [root@localhost pr]# ls -l total 0 -rw-r--r-- 1 martin8 users 0 feb 22 18:00 a COMUNICACION CON USUARIOS WRITE write <username> [tty] bash$ whoami martin6 bash$ write martin8 nos vemos en el jamaicano Message from martin6@localhost.localdomain on pts/1 at 13:18 ... nos vemos en el jamaicano EOF Si hubiera un usuario conectado a varios terminales habria que especificar por cual sacar el mensaje. Realizarlo mediante el comando who. el usuario puede estar en un host distinto tty se usa cuando un usuario ha realizado varios logins para identificar una de sus terminales Al escribir el mensaje pulsar CTRL+D para terminar GREP
  59. 59. 59 Este comando busca un patrón en ficheros y muestra la línea en la que aparece el patrón. Es preferible poner la opción a buscar entre comillas. Por ejemplo para buscar las líneas en las que aparece la cadena 'a' en el fichero pruebagrep [martin8@localhost martin8]$ cat pruebagrep hola voy a probar a ver si me dice en que lugares aparece la letra a el comando grep y este no tiene la letra est line no tiene :-) [martin8@localhost martin8]$ grep 'letra' pruebagrep aparece la letra a y este no tiene la letra MODIFICADORES -c --> nº de veces que aparece -i --> ignora mayusculas y minusculas -l --> muestra el nombre del fichero -n --> indica el numero de linea -v --> muestra las lineas en las que no aparece Ejemplos: -i (ignorar mayusculas) [martin8@localhost martin8]$ grep -i 'LETRA' pruebagrep aparece la letra a y este no tiene la letra [martin8@localhost martin8]$ grep 'LETRA' pruebagrep [martin8@localhost martin8]$ -c (numero de lineas en las que aparece) [martin8@localhost martin8]$ grep -i -c 'LETRA' pruebagrep 2 -n (indica el numero de linea) [martin8@localhost martin8]$ grep -i -n 'LETRA' pruebagrep 3:aparece la letra a 5:y este no tiene la letra [martin8@localhost martin8]$ -v (muestra las lineas en las que no aparece) [martin8@localhost martin8]$ grep -i -v -n 'LETRA' pruebagrep 1:hola voy a probar a 2:ver si me dice en que lugares
  60. 60. 60 4:el comando grep 6:est line no tiene :-) -l (muestra ficheros) [martin8@localhost martin8]$ grep -l "Martin" * 2>err hlink index l lç slink [martin8@localhost martin8]$ cat index Este es el nuevo index de Martin [root@localhost martin8]# grep -l "Hola" * grep: basura: Es un directorio grep: marto: Es un directorio prueba2 grep: seg: Es un directorio [root@localhost martin8]# cat index Este es el nuevo index de Martin [root@localhost martin8]# cat hlink Este es index de Martin [root@localhost martin8]# grep in* * grep: basura: Es un directorio hlink:Este es index de Martin index:Este es el nuevo index de Martin lolo:index grep: marto: Es un directorio grep: seg: Es un directorio slink:Este es el nuevo index de Martin [root@localhost martin8]# grep -l in* * grep: basura: Es un directorio hlink index lolo grep: marto: Es un directorio grep: seg: Es un directorio slink -cv --> indica la linea donde no aparece [root@localhost martin8]# cat >prueba2 Hola soy Chiquito como estan ustedes? :-) [root@localhost martin8]# grep "soy" prueba2 Hola soy Chiquito [root@localhost martin8]# grep -cv "soy" prueba2 2
  61. 61. 61 ^ -- al comienzo de una linea [root@localhost martin8]# grep ^Hola prueba2 Hola soy Chiquito [root@localhost martin8]# grep ^Ho prueba2 Hola soy Chiquito [root@localhost martin8]# grep ^o prueba2 [root@localhost martin8]# grep ^co prueba2 como estan ustedes? [root@localhost martin8]# cat dicho Cada fracaso enseña al hombre algo que debería haber aprendido. El unico hombre que nunca se equivoca es el que nunca hace nada [root@localhost martin8]# grep ^a dicho algo que aprendido. [aeiou] -- uno de los caracteres [root@localhost martin8]# grep qu[aeiou] dicho algo que que nunca se equivoca es el que nunca que/qua/qui/quo/quu [root@localhost martin8]# grep equ[aeiou] dicho que nunca se equivoca es CUIDADO porque es una letra o varias --> equivoca [martin8@localhost martin8]$ who|grep "martin8" martin8 pts/0 Feb 22 18:19 martin8 pts/1 Feb 22 19:43 [martin8@localhost martin8]$ who|grep "martin8"|wc -l 2 Busca el patrón donde el “punto” es una letra (como la ¿) [root@martin /root]# grep ".a.t.." prueba
  62. 62. 62 Martin va a probar algo $  FINAL DE LA LINEA [root@martin /root]# cat > prueba Martin va a probar algo mucho cuidado [root@martin /root]# cat prueba Martin va a probar algo mucho cuidado [root@martin /root]# cat prueba Martin va a probar algo mucho cuidado [root@martin /root]# grep 'Martin'$ prueba [root@martin /root]# grep 'o'$ prueba Martin va a probar algo mucho cuidado [root@martin /root]# grep 'algo'$ prueba Martin va a probar algo [martin@martin martin]$ cat pr Hola me llamo Martin y tu como te llamas? voy a probar cut [martin@martin martin]$ grep 'MARTIN'$ pr [root@martin /root]# cat prueba Martin va a probar algo mucho cuidado [root@martin /root]# grep 'Martin'$ prueba [root@martin /root]# grep 'o'$ prueba Martin va a probar algo mucho cuidado [root@martin /root]# grep 'algo'$ prueba Martin va a probar algo EJEMPLOS CON PIPE y GREP Procesos que está ejecutando martin8 [martin8@localhost martin8]$ ps -fe|grep martin8 root 1754 1753 0 18:18 pts/0 00:00:00 login -- martin8 martin8 1755 1754 0 18:19 pts/0 00:00:01 -bash martin8 2039 1755 0 19:39 pts/0 00:00:00 ps -fe martin8 2040 1755 0 19:39 pts/0 00:00:00 grep martin8 personas que jueguen al Doom:
  63. 63. 63 [martin8@localhost martin8]$ ps -fe|grep "[Dd]oom"|awk '{print $1}' [martin8@localhost martin8]$ Que sesiones tiene abiertas martin8 [martin8@localhost martin8]$ who root tty1 Feb 22 12:32 martin8 pts/0 Feb 22 18:19 martin8 pts/1 Feb 22 19:43 martin6 pts/2 Feb 22 19:44 [martin8@localhost martin8]$ who|grep "martin8" martin8 pts/0 Feb 22 18:19 martin8 pts/1 Feb 22 19:43 ¿Cuantas? [martin8@localhost martin8]$ who|grep "martin8" martin8 pts/0 Feb 22 18:19 martin8 pts/1 Feb 22 19:43 [martin8@localhost martin8]$ who|grep "martin8"|wc -l 2 BANNER [martin8@localhost martin8]$ /usr/games/banner -w19 hola # ############# # ## ####### ### ####### # # ##### # ############# # #### ## # # ####### FIND Este comando busca ficheros que tienen ciertas caracteristicas que se especifican. La sintaxis es la siguiente:
  64. 64. 64 find directorio criterios-acciones Opciones -size n ficheros con tamaño n bloques (512 bytes) -type c tipo de fichero f=regular d=directorio -name nombre fichero de nombre -perm p ficheros con permisos p -user str ficheros del usuario usr -group gp ficheros del grupo gp Ejemplos: find . -name "core" find / -name "core" -type f Sintaxis de las opciones es variada: -size +100 tamaño mayor de 50 K (100*512=51200/1024=50K) -name '*.dat' todos los ficheros.dat ejemplo: [martin8@localhost martin8]$ ls a co.gz err f1 f3 fi10 ls.out ls.out3 numord pruebagrep treso b datos err1 f2 f7 fi3 ls.out1 marto pru pu [martin8@localhost martin8]$ find . -name '*.out' ./ls.out [martin8@localhost martin8]$ find . -name "*.out" ./ls.out [martin8@localhost martin8]$ SE PUEDEN AGRUPAR CONDICIONES AND POR DEFECTO -atime +60 -mtime +120 SE PUEDEN AGRUPAR POR OR (-atime +7 -o -mtime +30) CUIDADO BARRA Y PARENTESIS JUNTOS NEGACION DE UNA CONDICION CON !. Comando que busca ficheros .dat ecepto gold.dat ! -name gold.dat -name *.dat
  65. 65. 65 ACCIONES Permiten al comando fin ejecutar ciertos comandos sobre los ficheros que se han encontrado. -print -- muestra el path del fichero (por defecto) -exec cmd -- ejecuta el comando cmd -ok cmd pregunta antes de ejecutar el comando LOS COMANDOS CON -exec, -ok deben terminar en ; LA FORMA {} SE USA PARA DETERMINAR LA POSICION DEL ARGUMENTO, ES DECIR LA SALIDA DEL COMANDO FIND. -exec rm -f {}; borra todos los ficheros que encuentre en la búsqueda (sin confirmacion) Copiar todo lo que encuentre en pepe -exec cp {} pepe; Copia los ficheros con nombre core de tipo fichero en el directorio pablo. find . -name core -type f -exec cp {} pablo ; Copia el fichero paco sobre lo que encuentres sin confirmacion find . name core -type f -exec cp paco {}; Buscar los ficheros con extensión .c a partir del directorio actual find . -name *.c -print Buscar los ficheros core y borrarlos unicamente los ficheros ya que existen directorios llamados también core. find . -name core -type f -exec rm -f {}; Buscar los ficheros de mas de 1Mb que no se hayn modificado desde hace 1 mes. Estos ficheros son candidatos posteriormente a eliminarlos. find / -size +2048 -mtime +30 -exec ls -l {}; si un bloque son 0,5 pues 1 MB son 1024*2 = 2048 TRUCO DE BLOQUES:  Pasar a kb  Multiplicar por 2 Borrar ficheros que no sirven y se van quedando en el sistema. find . (-name a.out -o -name core -o -name '*~'
  66. 66. 66 -o -name '.*~') -type f -exec rm -f {} ; Buscar ficheros con permisos especiales SUID, SGID find / ( -perm -2000 -o -perm -4000 ) -print Mover los ficheros de .c del directorio martin8/1 al martin8/2 find 1 -name *.c -exec mv {} 2 ; Cambiar de nombre a los ficheros del directorio martin8 que empiezen por f y sean de dos letras y añadirles la extension .txt find martin8 -name 'f?' -type f -exec mv {} {}.txt Mas ejemplos: [martin8@localhost prueba]$ ls -l total 8 -rwxr----x 1 martin8 users 0 feb 22 20:21 a -rwx--x--x 1 martin8 users 0 feb 22 20:21 b -r-xr-xr-x 1 martin8 users 0 feb 22 20:21 c -------rw- 1 martin8 users 7 feb 22 20:22 d -rw-r--r-- 1 martin8 users 0 feb 22 20:58 ed -rw-r--r-- 1 martin8 users 7 feb 22 20:21 m [martin8@localhost prueba]$ find . -name "?" -type f -print ./a ./b ./c ./m ./d [martin8@localhost prueba]$ ls -l total 8 -rwxr----x 1 martin8 users 0 feb 22 20:21 a -rwx--x--x 1 martin8 users 0 feb 22 20:21 b -r-xr-xr-x 1 martin8 users 0 feb 22 20:21 c -------rw- 1 martin8 users 7 feb 22 20:22 d -rw-r--r-- 1 martin8 users 0 feb 22 20:58 ed -rw-r--r-- 1 martin8 users 7 feb 22 20:21 m [martin8@localhost prueba]$ find . -name "?" -type f -exec mv {} {}.txt find: missing argument to `-exec' [martin8@localhost prueba]$ find . -name "?" -type f -exec mv {} {}.txt ; [martin8@localhost prueba]$ ls -l total 8 -rwxr----x 1 martin8 users 0 feb 22 20:21 a.txt -rwx--x--x 1 martin8 users 0 feb 22 20:21 b.txt -r-xr-xr-x 1 martin8 users 0 feb 22 20:21 c.txt -------rw- 1 martin8 users 7 feb 22 20:22 d.txt -rw-r--r-- 1 martin8 users 0 feb 22 20:58 ed -rw-r--r-- 1 martin8 users 7 feb 22 20:21 m.txt
  67. 67. 67 [martin8@localhost prueba]$ find / ( -perm -2000 -o -perm -4000 ) -print > 2>err los errores cuando sea directorios sin permiso no saldran por pantalla [martin8@localhost prueba]$ find / ( -perm -2000 -o -perm -4000 ) -print > > f20 2>err [martin8@localhost prueba]$ cat f20|head -3 /usr/lib/emacs/20.5/i386-redhat-linux-gnu/movemail /usr/man/es /usr/man/es/man1 Mover ficheros a otro lugar modificando su extension [martin8@localhost prueba]$ find . -name "??" -type f -exec mv {} mar/{}.txt ; [martin8@localhost prueba]$ ls a abe b mar [martin8@localhost prueba]$ cd mar [martin8@localhost mar]$ ls aa.txt ab.txt SORT Este comando ordena las lineas de un fichero y escribe la salida a la salida estándar Si se especifica mas de un fichero los une y los ordena como si se tratase de uno solo Opciones mas importantes: -f --- cambia a mayusculas antes de ordenar, ignora mayusulas y minusculas -r orden inverso -u suprime lineas repetidas en el fichero de salida -o output file escribe la salida a un fichero -d ignora caracteres especiales (solo letras y numeros) Para especificar un fichero de salida hay que especificar la opciom -o SORT CON CAMPOS -t ‘<’  el carácter que se utiliza para separar campos -k n  por que campo ordenar Ejemplos [martin8@localhost martin8]$ cat frutas banana orange
  68. 68. 68 Persimmon apple apple ORANGE [martin8@localhost martin8]$ sort frutas ORANGE Persimmon apple apple banana orange {LAS MAYUSCULAS ESTAN ANTES} [martin8@localhost martin8]$ sort -f frutas (ignora mayusculas) apple apple banana ORANGE orange Persimmon [martin8@localhost martin8]$ sort -f -u frutas (suprime las repetidas) apple banana orange Persimmon [martin8@localhost martin8]$ sort -fur frutas (orden inverso) Persimmon orange banana apple ES LO MISMO ESCRIBIR SORT -f -u -r frutas Ejemplos con pipe [martin8@localhost martin8]$ head -3 frutas|sort Persimmon banana orange [martin8@localhost martin8]$ head -3 frutas|sort -u -f banana orange Persimmon SORT CON CAMPOS -t ‘<’  el carácter que se utiliza para separar campos -k n  por que campo ordenar
  69. 69. 69 martin8@NODE:/home/martin8/dir88> cat > f1 1 e 2 a 3 t 4 bmartin8@NODE:/home/martin8/dir88> sort f1 1 e 2 a 3 t 4 b martin8@NODE:/home/martin8/dir88> sort -k2 f1 2 a 4 b 1 e 3 t martin8@NODE:/home/martin8/dir88> cat f1 1<e 2<a 3<t 4<b martin8@NODE:/home/martin8/dir88> sort -t '<' -k2 f1 2<a 4<b 1<e 3<t Ejemplos [martin8@localhost martin8]$ cat frutas banana orange Persimmon apple apple ORANGE [martin8@localhost martin8]$ sort frutas ORANGE Persimmon apple apple banana orange {LAS MAYUSCULAS ESTAN ANTES} [martin8@localhost martin8]$ sort -f frutas (ignora mayusculas) apple apple banana
  70. 70. 70 ORANGE orange Persimmon [martin8@localhost martin8]$ sort -f -u frutas (suprime las repetidas) apple banana orange Persimmon [martin8@localhost martin8]$ sort -fur frutas (orden inverso) Persimmon orange banana apple ES LO MISMO ESCRIBIR SORT -f -u -r frutas Ejemplos con pipe [martin8@localhost martin8]$ head -3 frutas|sort Persimmon banana orange [martin8@localhost martin8]$ head -3 frutas|sort -u -f banana orange Persimmon Número de usuarios con procesos activos [martin8@localhost martin8]$ ps -fe|awk '{print $1}'|sort -u|wc -l 8 [martin8@localhost martin8]$ ps -fe|awk '{print $1}'|sort -u UID bin daemon martin6 martin8 nobody root xfs SED Comando para sutitución de texto dentro de un fichero. sed 's/banana/MARTIN GV/' frutas
  71. 71. 71 sed s/cadena a sustituir/nueva cadena/ fichero Para cada linea del fichero procesa el comando y la salida la devuelve a stdout. Por tanto despues de realizar el comando sed el fichero original no se altera. El comando se suele emplear entre comillas aunque en casos simples no es necesario - Varias instrucciones separadas por -e - Crear fichero de scripts - [sed -f fichero fichero_a_sustituir] [martin8@localhost martin8]$ cat frutas banana orange Persimmon apple apple ORANGE [martin8@localhost martin8]$ sed s/banana/BANA/ frutas BANA orange Persimmon apple apple ORANGE Cuando existen espacios si es necesario [martin8@localhost martin8]$ sed 's/banana/MARTIN GV/' frutas MARTIN GV orange Persimmon apple apple ORANGE Varias instrucciones separadas por -e [martin8@localhost martin8]$ sed -e 's/banana/MARTIN GV/' -e 's/ap/AP/' frutas MARTIN GV orange Persimmon APple APple ORANGE Redirecionar la salida a un fichero [martin8@localhost martin8]$ sed 's/ap/AP/' frutas > frutas2 [martin8@localhost martin8]$ cat frutas2 banana orange

×