INTRODUCCION A UNIXINTRODUCCION A UNIX
Luis A. LópezLuis A. López
UPR-RUMUPR-RUM
Enero de 2005Enero de 2005
Introducción a UNIXIntroducción a UNIX
System VSystem VBSDBSD
SolarisSolarisLinuxLinuxHP UXHP UXOpenBSDOpenBSD
FreeBSDFreeBSDTrue64True64IrixIrixMac OS XMac OS X
Introducción a UNIXIntroducción a UNIX
Entrar a un sistema Entrar a un sistema UNIXUNIX telnettelnet ssh (Secure ssh (Secure
shell);puTtyshell);puTty Cambiar passwordCambiar password
passwdpasswd
Introducción a UNIXIntroducción a UNIX
Listado de archivosListado de archivoslsls
Jerarquía de Jerarquía de directoriosdirectorios /
/bin /sbin /usr /etc /lib /lost+foun
d
/mnt /proc /dev
/root /boot /opt
/home
Introducción a UNIXIntroducción a UNIX
ls, listado largo, ls, listado largo, archivos ocultos archivos ocultos (hidden)(hidden)
ls -lals -la
permisos
Referencias al archivo
(“shortcuts”)
dueño grupo
Tamaño (bytes)
fecha
Nombre del archivo
Archivo oculto
Introducción a UNIXIntroducción a UNIX
ls; “wildcards”ls; “wildcards” ls –la n*ls –la n*
Introducción a UNIXIntroducción a UNIX
Cambiar de directorioCambiar de directoriocd nombre de directoriocd nombre de directoriocd .. Cambia a directorio previocd .. Cambia a directorio previocd /sbin cambia a directorio /sbincd /sbin cambia a directorio /sbin
Concepto de PATHConcepto de PATH““camino en la jerarquía de directorios”camino en la jerarquía de directorios”/sbin:/usr/bin/sbin:/usr/bin
Como saber en que directorio estoyComo saber en que directorio estoypwdpwd
Introducción a UNIXIntroducción a UNIX Concepto de “piping” (|)Concepto de “piping” (|)
Combinar mas de un Combinar mas de un comando, la salida de un comando, la salida de un comando sirve como la comando sirve como la entrada de otro comando.entrada de otro comando.
Redirección (>,>>)Redirección (>,>>) >, redirige la salida de un >, redirige la salida de un
comando a un archivo (le comando a un archivo (le reescribe si existe)reescribe si existe)
>> redirige la salida de >> redirige la salida de un comando y le hace un comando y le hace “append” al final del “append” al final del archivoarchivo
ls –la > listadols –la > listado
Introducción a UNIXIntroducción a UNIX
Ver cntenido de archivos de textoVer cntenido de archivos de textomore listadomore listado
cat listadocat listado
less listadoless listado
Introducción a UNIXIntroducción a UNIX
PARTE II: Sistema de archivosPARTE II: Sistema de archivosExplicación de jerarquíaExplicación de jerarquía
/bin,/sbin: binarios (ejecutables) del sistema/bin,/sbin: binarios (ejecutables) del sistema/etc: archivos de configuración/etc: archivos de configuración/lib: librerías estáticas (.a) y dinámicas (.so)/lib: librerías estáticas (.a) y dinámicas (.so)/home: directorios de archivos de los usuarios/home: directorios de archivos de los usuarios/dev:devices del sistema /dev:devices del sistema
(impresoras,terminales,etc)(impresoras,terminales,etc)/usr,/opt:instalación de programas (software) y /usr,/opt:instalación de programas (software) y
sus libreríassus librerías
Introducción a UNIXIntroducción a UNIX
Obtener ayudaObtener ayudaman comando; man comando; man lsman lsInfo comando; Info comando; info lsinfo lsComando --help: ssh --helpComando --help: ssh --help
Crear un directorioCrear un directoriomkdir nombre de directoriomkdir nombre de directoriomkdir –p dir1/dir2/dir3mkdir –p dir1/dir2/dir3
Crea toda la jerarquía del directorio si no Crea toda la jerarquía del directorio si no existe, en este caso, dir1,dir2,dir3existe, en este caso, dir1,dir2,dir3
Introducción a UNIXIntroducción a UNIX
Crear un archivo vacíoCrear un archivo vacío touch nombre de archivotouch nombre de archivo
Copiar archviosCopiar archvios cp file nuevo nombrecp file nuevo nombre
Copia el archivo indicado con otro nombreCopia el archivo indicado con otro nombre cp file dir1/dir2cp file dir1/dir2
Copia el archivo indicado en el directorio dir2 dentro de Copia el archivo indicado en el directorio dir2 dentro de dir1dir1
cp –r dir1 /tempcp –r dir1 /tempCopia recursivamente el directorio Copia recursivamente el directorio dirdir en el directorio en el directorio
temptemp
Introducción a UNIXIntroducción a UNIX
Mover archivosMover archivos mv file nuevo nombremv file nuevo nombre
Le cambia el nombre al archivo indicadoLe cambia el nombre al archivo indicado mv file /tempmv file /temp
Mueve el archivo indicado al directorio /tempMueve el archivo indicado al directorio /temp Borrar archivosBorrar archivos
rm filerm fileBorra permanentemente el archivo indicadoBorra permanentemente el archivo indicado
rm –i filerm –i fileBorra el archivo indicado, pero primero le pregunta si Borra el archivo indicado, pero primero le pregunta si
desea borrarlodesea borrarlorm –r temp: borra temp recursivamente (incluyendo los rm –r temp: borra temp recursivamente (incluyendo los
directorios dentro de temp)directorios dentro de temp)
Introducción a UNIXIntroducción a UNIX
Encontrar archivosEncontrar archivosfind ./ -name test –printfind ./ -name test –print
Busca comenzando en el directoiro donde Busca comenzando en el directoiro donde estoy el archivo llamdao testestoy el archivo llamdao test
find /usr –name libc++.so –printfind /usr –name libc++.so –printBusca en /usr el archivo libc++.soBusca en /usr el archivo libc++.so
locate mkdirlocate mkdirUtilice locate solo para buscar archivos del Utilice locate solo para buscar archivos del
sistemasistema
Introducción a UNIXIntroducción a UNIX
Soft links (“shortcuts”)Soft links (“shortcuts”)ln –s /usr/bin/test testln –s /usr/bin/test test
Hace un “soft” link del archivo /usr/bin/test Hace un “soft” link del archivo /usr/bin/test con el nombre test y lo copia en el directorio con el nombre test y lo copia en el directorio donde estoydonde estoy
Introducción a UNIXIntroducción a UNIX ShellShell
El shell es un interpretador de comandos y a su vez un El shell es un interpretador de comandos y a su vez un lenguaje de programación.lenguaje de programación.
sh,bashsh,bash csh (C shell)csh (C shell) zsh (Z shell)zsh (Z shell) ksh (Korn shell)ksh (Korn shell)
Shell disponiblesShell disponibles more /etc/shellsmore /etc/shells
Cambiar de shell permanetementeCambiar de shell permanetemente chsh /bin/bashchsh /bin/bash
Cambiar de shell temporeramenteCambiar de shell temporeramente /bin/bash (o shell deseado ;. Csh,zsh,ksh,sh)/bin/bash (o shell deseado ;. Csh,zsh,ksh,sh)
Introducción a UNIXIntroducción a UNIX Cómo saber cuál shell estoy usandoCómo saber cuál shell estoy usando
echo $SHELLecho $SHELL Completar comando utilizando TAB (bash y z shell Completar comando utilizando TAB (bash y z shell
solamente)solamente) Saber que comando he usadoSaber que comando he usado
historyhistory Ejecutar comando del historyEjecutar comando del history
!número de comando!número de comando Arreglar problemas con terminalArreglar problemas con terminal
stty erase “^H”stty erase “^H”Le dice a unix que cuando oprima tecla de Le dice a unix que cuando oprima tecla de
borrar (back space o del), ejecute un Control borrar (back space o del), ejecute un Control HH
Introducción a UNIXIntroducción a UNIX
EditoresEditores vivi
i modo de insertari modo de insertarESC modo de comandosESC modo de comandosGuardar: ESC : wGuardar: ESC : wSalir: ESC : qSalir: ESC : qBorrar caracter (modo comando) xBorrar caracter (modo comando) xBorrar línea: ddBorrar línea: dd Ir a una línea en particular: ESC :# de líneaIr a una línea en particular: ESC :# de líneaBuscar texto: ESC /texto a buscar oprima n para Buscar texto: ESC /texto a buscar oprima n para
buscar otra vezbuscar otra vezSearch/Replace: ESC : %s/texto a buscar/nuevo Search/Replace: ESC : %s/texto a buscar/nuevo
texto/texto/Copiar línea: ESC yCopiar línea: ESC yPaste una línea: ESC p UNDO ESC uPaste una línea: ESC p UNDO ESC u
Introducción a UNIXIntroducción a UNIX
Eliminar ^M de los archivos de DOSEliminar ^M de los archivos de DOSESC : %s/oprimir Ctrl V seguido de CTRL ESC : %s/oprimir Ctrl V seguido de CTRL
M//gM//gPICOPICO
pico –w nombre de archivo a editarpico –w nombre de archivo a editarSeguir comandos de la parte inferior de la Seguir comandos de la parte inferior de la
pantallapantallaCut/paste en picoCut/paste en pico
CTRL V^ marcar el principio, luego mover flecha CTRL V^ marcar el principio, luego mover flecha hasta final, oprima CTRL K, CTRL U para Pastehasta final, oprima CTRL K, CTRL U para Paste
Corregir gramática: CTRL TCorregir gramática: CTRL T
Introducción a UNIXIntroducción a UNIX
Permisos de Permisos de archivosarchivos
dueño grupo usuarios
r w x r w x r w x
r=4 w=2 x=1
tipo
Tipo: c,d,l-
•Cambiar permisos. Modo numérico•chmod 755 numeros.txt
•Cambiar permisos modo letras•chmod go +rx nuemros.txt
Introdución a UNIXIntrodución a UNIX ““Sticky bit”Sticky bit”
Permite que otros usuarios Permite que otros usuarios puedan copiar a un puedan copiar a un directorio pero no ver o no directorio pero no ver o no borrar archivos que no le borrar archivos que no le pertenecen.pertenecen.
chmod 1733 tempchmod 1733 temp (temp es (temp es un directorio)un directorio)
En este caso los usuarios y el En este caso los usuarios y el grupo del directorio temp grupo del directorio temp pueden copiar pero no pueden copiar pero no pueden ver ningún archivo pueden ver ningún archivo ni pueden eliminar archivos ni pueden eliminar archivos que no le pertenecen. Esto que no le pertenecen. Esto es útil para que los es útil para que los estudiantes copien sus estudiantes copien sus asignaciones sin que los asignaciones sin que los otros vean los archivos ni otros vean los archivos ni puedan borrarlos.puedan borrarlos.
Introducción a UNIXIntroducción a UNIX
Permiso suidPermiso suidEste permiso permite que el que ejecuta o accesa un Este permiso permite que el que ejecuta o accesa un
archivo con este permiso pueda comportarse como archivo con este permiso pueda comportarse como si fuera el dueño de él, debe utilizarse con cautela.si fuera el dueño de él, debe utilizarse con cautela.
chmod 4755 temp/testchmod 4755 temp/test Como establecer permisos por “default”Como establecer permisos por “default”
umask 022umask 022
El comando umask 022 le indica a UNIX que no le va El comando umask 022 le indica a UNIX que no le va a quitar ningún permiso al dueño, le va a quitar los a quitar ningún permiso al dueño, le va a quitar los permisos de escribir al grupo y al resto de permisos de escribir al grupo y al resto de usuarios.usuarios.
Introducción a UNIXIntroducción a UNIX
Cambiar el dueño del archivoCambiar el dueño del archivochown chown nuevo dueñonuevo dueño archivoarchivo
Cambiar grupo del archivoCambiar grupo del archivochgrp chgrp nuevo gruponuevo grupo archivoarchivoPara ver los grupos disponibles, utilicePara ver los grupos disponibles, utilice more /etc/group more /etc/group
En ambos comandos, si se utiliza con –R En ambos comandos, si se utiliza con –R lo hace recursivolo hace recursivo
Introducción a UNIXIntroducción a UNIX
Parte III: Manejo de archivosParte III: Manejo de archivos Conteo de archivosConteo de archivos
ls –l | wc –l ls –l | wc –l Ver principio de un archivoVer principio de un archivo
head nombre de archivohead nombre de archivo head -20 nombre de archivo: ver las primeras head -20 nombre de archivo: ver las primeras
20 líneas20 líneas Ver final de un archivoVer final de un archivo
tail nombre de archivotail nombre de archivo tail -20 nombre de archivo: ver las últimas 20 tail -20 nombre de archivo: ver las últimas 20
líneaslíneas
Introdución a UNIXIntrodución a UNIX
Buscar texto en un archivoBuscar texto en un archivogrep texto archivo: grep grep texto archivo: grep bashbash /etc/shells/etc/shells
Saber de que tipo es un archivo Saber de que tipo es un archivo (binario, texto, etc)(binario, texto, etc)file nombre de archivofile nombre de archivofile file /etc/shells/etc/shells
Imprimir un archivo de texto: System Imprimir un archivo de texto: System VVlp archivo (a impresora “default”)lp archivo (a impresora “default”)lp –d nombre impresora archivolp –d nombre impresora archivo
Introducción a UNIXIntroducción a UNIX Imprimir un archivo de Imprimir un archivo de
texto: BSDtexto: BSD lpr nombre de archivolpr nombre de archivo
Parte IV: Información del Parte IV: Información del sistemasistema
Particiones del disco y Particiones del disco y su tamañosu tamaño df –kdf –k df –hdf –h en linux y Solaris 9 en linux y Solaris 9
Determinar espacio Determinar espacio utilizado en discoutilizado en disco du –ksdu –ks para resumen para resumen du –kadu –ka para detalle de para detalle de
archivo y espacio archivo y espacio ocupadoocupado
Introducción a UNIXIntroducción a UNIX
Saber qué sistema Saber qué sistema estoy usandoestoy usando unameuname uname –auname –a: brinda : brinda
detallesdetalles Información de un Información de un
usuario en el usuario en el sistemasistema finger nombre de finger nombre de
usuariousuario finger finger luisluis
Introducción a UNIXIntroducción a UNIX
Quién está usando Quién está usando el sistemael sistema whowho ww
Introducción a UNIXIntroducción a UNIX Saber su número de usuarioSaber su número de usuario
idid id id luisluis
Modificar variables de ambienteModificar variables de ambiente PATH: PATH=/usr/sbin:/usr/local/bin:/opt/bin:PATH: PATH=/usr/sbin:/usr/local/bin:/opt/bin:
$PATH$PATHAñade al PATH actual los diretotios indicados. Añade al PATH actual los diretotios indicados. Hay Hay
veces que algunos programas requieren que su PATH esté al principioveces que algunos programas requieren que su PATH esté al principio
export PATH (export PATH (setenv PATH /usr/sbin:/sr/local/bin setenv PATH /usr/sbin:/sr/local/bin en C shellen C shell
LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/lib:/opt/LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/lib:/opt/liblib
Esta variable define el PATH para las librerías Esta variable define el PATH para las librerías dinámicasdinámicas
Export LD_LIBRARY_PATH Export LD_LIBRARY_PATH ((setenv LD_LIBRARY_PATH /usr/lib…setenv LD_LIBRARY_PATH /usr/lib… en en C shell)C shell)
uid=101(luis) gid=10(staff)
Introducción a UNIXIntroducción a UNIX
Como saber el valor de una variableComo saber el valor de una variableecho $variableecho $variableecho $PATHecho $PATH
Para hacer cambios permanentes al valor de las variables hay que editar el archivo Para hacer cambios permanentes al valor de las variables hay que editar el archivo de configuración correspondiente al shell que está usando; en bash, si existe un de configuración correspondiente al shell que está usando; en bash, si existe un archivo llamado archivo llamado .profile.profile en su cuenta, lee ese – puede leer .bashrc también, de lo en su cuenta, lee ese – puede leer .bashrc también, de lo contrario lee contrario lee /etc/profile/etc/profile, en este caso usted no puede modificarlo., en este caso usted no puede modificarlo.
Si utiliza c shell, lee /etc/login o .cshrc si existe en su cuenta. Debe modificar estos Si utiliza c shell, lee /etc/login o .cshrc si existe en su cuenta. Debe modificar estos archivos para los cambios correspondientes. Despues de modificados, para que archivos para los cambios correspondientes. Despues de modificados, para que tengan efecto, puede hacer logout y luego entrar a su cuenta o escribirtengan efecto, puede hacer logout y luego entrar a su cuenta o escribir
source archivo de coniguraciónsource archivo de coniguración source ~/.profilesource ~/.profile source ~/.bashrcsource ~/.bashrc
El ~/ es para indicarle que lo lea desde el root de su cuentaEl ~/ es para indicarle que lo lea desde el root de su cuenta
Introducción a UNIXIntroducción a UNIX Cambiar el PROMPT en bashCambiar el PROMPT en bash
PS1=“\u@\h in \w>”PS1=“\u@\h in \w>” export PS1export PS1 Da el prompt Da el prompt
Parte V: Manejo de programas y procesosParte V: Manejo de programas y procesos Ejecutar un programa en “background”Ejecutar un programa en “background”
Programa &Programa & pine &pine &Esto le libera la terminal desde donde ejecutó el comando para que pueda Esto le libera la terminal desde donde ejecutó el comando para que pueda
seguir usándolaseguir usándola Saber cuántos programas estoy corriendoSaber cuántos programas estoy corriendo
jobsjobs Ejecutar un programa que siga corriendo aún después de hacer Ejecutar un programa que siga corriendo aún después de hacer
logoutlogout programa –nohupprograma –nohup find / -name *.doc –print -nohupfind / -name *.doc –print -nohup
luis@math in ~>
Introducción a UNIXIntroducción a UNIX
Saber qué Saber qué procesos estoy procesos estoy corriendocorriendo ps aux | grep luis ps aux | grep luis
(Linux, BSD (Linux, BSD systems)systems)
ps –ef | grep luis ps –ef | grep luis (Solaris, System V (Solaris, System V systems)systems)
Introducción a UNIXIntroducción a UNIX Matar un procesoMatar un proceso
kill -9 # de procesokill -9 # de proceso kill -9 11491kill -9 11491
Matar todos los procesosMatar todos los procesos kill -1 -1kill -1 -1
Parte VI: Comandos Parte VI: Comandos útilesútiles
Saber la fechaSaber la fecha datedate date 01121059 ( si es root en date 01121059 ( si es root en
el sistema, cambia la fecha y el sistema, cambia la fecha y la hora al 12 de enero de la hora al 12 de enero de 2005 a las 10:59am2005 a las 10:59am
CalendarioCalendario cal : despliega calendario del cal : despliega calendario del
mes en cursomes en curso cal 2005 : calendario del año cal 2005 : calendario del año
en cursoen curso
Introducción a UNIXIntroducción a UNIX
Nota de interésNota de interés Sabemos que nuestro calendario juliano data del 46 AC. Sabemos que nuestro calendario juliano data del 46 AC.
La tierra tarda 365.25 días con 11 minutos y 10 segundos La tierra tarda 365.25 días con 11 minutos y 10 segundos en su órbita alrededor del sol, por lo cual el calendario no le en su órbita alrededor del sol, por lo cual el calendario no le es tan fiel a la posición del sol y las estrellas. es tan fiel a la posición del sol y las estrellas. Para resolver este problema, el papa Gregorio XIII en Para resolver este problema, el papa Gregorio XIII en 1582 decretó que no todos los años centenarios (1600, 1582 decretó que no todos los años centenarios (1600, 1700..., sí, un clérigo que sabía matemáticas!!!) serían 1700..., sí, un clérigo que sabía matemáticas!!!) serían bisiestos, solo squellos que fueran divisibles entre 400. bisiestos, solo squellos que fueran divisibles entre 400. Para ello el papa decretó que se desapareceiran los 10 días Para ello el papa decretó que se desapareceiran los 10 días que se habían acumulado hasta esa fecha por el error del que se habían acumulado hasta esa fecha por el error del calendario. calendario. Los ingleses no adaptaron el cambio hasta 1752 lo Los ingleses no adaptaron el cambio hasta 1752 lo cual había causado que se acumulara un día adicional, por cual había causado que se acumulara un día adicional, por lo que en septiembre de 1752 desaparecieron 11 días del lo que en septiembre de 1752 desaparecieron 11 días del calendario (del 3 al 13 de septiembre), trátelo calendario (del 3 al 13 de septiembre), trátelo cal 9 1752cal 9 1752..
Introducción a UNIXIntroducción a UNIX
CalculadoraCalculadora bcbc
Correo electrónicoCorreo electrónico pinepine mailmail mail –s “Prueba” mail –s “Prueba” [email protected]@math.uprm.edu “Esto es “Esto es
una prueba” .una prueba” . Hacer forward de correoHacer forward de correo
Editar archivo .forward y añadir la nueva Editar archivo .forward y añadir la nueva dirección de correodirección de correo
Introducción a UNIXIntroducción a UNIX
InternetInternetftp nombre de computadoraftp nombre de computadoralynx (www) dirección de weblynx (www) dirección de webwgetwgetPing nombre o ip addressPing nombre o ip address de de
computadora para saber si está computadora para saber si está funcionandofuncionando
NOTA: hay sistemas cuyos firewalls NOTA: hay sistemas cuyos firewalls bloquean el pingbloquean el ping
Introducción a UNIXIntroducción a UNIX
Archivos comprimidos y .tarArchivos comprimidos y .tar Archivos con extensión .gzArchivos con extensión .gz
gunzip files.tar.gz, luego tar –xvf file.targunzip files.tar.gz, luego tar –xvf file.tarPuede hacer tar –zxvf archivo.tar.gzPuede hacer tar –zxvf archivo.tar.gz
Archivos con extensión .ZArchivos con extensión .Zuncompress archivo .tar.Z o .Zuncompress archivo .tar.Z o .Z
Hacer un tar, luego compirmirHacer un tar, luego compirmir tar cvf file.tar directoriotar cvf file.tar directorio tar test.tar ~/temptar test.tar ~/temp gzip test.targzip test.tar, crea test.tar.gz, crea test.tar.gz