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
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
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
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
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
"/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
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
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
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
& 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
& 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
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
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
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
&
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
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
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
.
|-- 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
/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
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
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
|-- 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
[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
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
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
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
[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
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
/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
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
-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
-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
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
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
^ -- 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
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
[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
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
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
-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
[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
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
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
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
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