Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comandos Linux
Comandos Linux
Cambia los permisos de un archivo chmod +x miscript chown nobody miscript cp foo foo.backup
chown usuario:grupo fich Cambia el dueo un archivo cp fich1...fichN dir diff [-e]arch1 arch2 du [-sabr] fich file arch find dir test accin grep [-cilnv] archivos head -count fich mkdir dir mv fich1 ...fichN dir mv fich1 fich2 less / more fich(s) expr Copia archivos
Encuentra diferencia entre archivos diff foo.c newfoo.c Reporta el tamao del directorio Muestra el tipo de un archivo Encuentra archivos. Busca patrones en archivos Muestra el inicio de un archivo Crea un directorio. Mueve un directorio archivo(s) a un du -s /home/ file arc_desconocido find . -name .bak print grep mike /etc/passwd head prog1.c mkdir temp mv a.out prog1 mv .c prog_dir
Renombra un archivo.
Visualiza pgina a pgina un more muy_largo.c archivo. less acepta comandos vi. less muy_largo.c
ls -l /usr/bin
Muestra la ruta del directorio pwd actual Borra un fichero. Borra un todo un directorio Borra un directorio vaco Muestra el final de un archivo Edita un archivo. rm foo.c rm -rf prog_dir rmdir prog_dir tail prog1.c vi .profile
Comando/Sintaxis at [-lr] hora [fecha] cal [[mes] ao] date [+form] [mmddhhmm]
Escribe mensaje en la salida echo ` ` Hola mundo' ' estndar Muestra informacin general finger sobre nn@maquina.aca.com.co un usuario en la red
passwd ps [axiu]
Cambia la contrasea.
passwd
Muestra informacin sobre los ps -ux procesos que se estn ejecutando en el ps -ef sistema
who / rwho
conectados al sistema.
Comandos Linux/Unix ms frecuentes
Linux cat
DOS type
Significado Ver contenido de un archivo. Cambio el directorio en curso. Cambia los atributos. Borra la pantalla. Ver contenido de directorio.
cd, chdir cd, chdir chmod clear ls mkdir more mv rmdir rm -r attrib cls dir
md, mkdir Creacin de subdirectorio. more move rd, rmdir deltree Muestra un archivo pantalla por pantalla. Mover un archivo o directorio. Eliminacin de subdirectorio. Eliminacin de subdirectorio y todo su contenido.
Si se hubiese ejecutado el programa y no se hubiese puesto el ampersand, se podra pasarlo a background de la siguiente manera: 1. Se suspende la ejecucin del programa, pulsando Ctrl+Z. 2. Se ejecutamos la siguiente orden: bg
AT&T Bourne shell sh Berkeley "C" shell AT&T Korn shell Otros interpretes csh ksh --
Se observa que, en la ` ` lnea de comandos' ' , se introduce el programa seguido de uno o varios argumentos. As, el intrprete ejecutar el programa con las opciones que se hayan escrito.
Cuando se quiere que el comando sea de varias lneas, se separa cada lnea con el carcter barra invertida (). Adems, cuando se quiere ejecutar varios comandos en la misma lnea, los separa con punto y coma (;). Por ejemplo:
# make modules ; make modules_install
El asterisco () es equivalente a uno o ms caracteres en el nombre de un archivo. Ejm: ls *.c lista todos los archivos con extensin c. El signo de interrogacin (?) es equivalente a un nico carcter. Ejm: ls curso.te? lista el archivo curso.tex completando el ltimo carcter. Un conjunto de caracteres entre corchetes es equivalente a cualquier carcter del conjunto. Ejm: ls curso_linux.t[aeiou]x lista curso_linux.tex seleccionando la e del conjunto. .
HOSTNAME Nombre de la mquina. MAIL PATH PS1 SHELL TERM USER Archivo de correo. Lista de directorios donde buscar los programas. Prompt. Intrprete de comandos por defecto. Tipo de terminal. Nombre del usuario.
Variables de entorno ms usuales
La forma de definir una variable de entorno cambia con el interprete de comandos, se muestra tcsh y bash siendo los dos mas populares en el mbito Linux: bash:
export VARIABLE=Valor
tcsh:
setenv VARIABLE Valor
tcsh:
setenv DISPLAY localhost:0.0
1.3.3 Alias
Un ` ` alias' 'es un nombre alternativo para un comando. As, en lugar de escribir el comando propiamente dicho, escribiramos el alias de dicho comando. Un alias se puede definir por varios motivos, por ejemplo:
Dar
alias
nombres
familiares
comandos
comunes:
md=mkdir
Creara un alias para el comando mkdir, similar al de DOS. Dar nombres a comandos
alias tbz2=tar -cv --use-compress-program=bzip2
largos:
-f
Creara un alias para el comando tar para que use el compresor bzip2 en lugar de gzip. Para no tener que escribir todos los alias siempre que entremos al sistema, escribiramos dicho alias en el archivo /.bash_profile
Entrada: Se desea realizar una transferencia de archivos por ftp automtica. Para ello se va a utilizar el programa ncftp con unas determinadas instrucciones preestablecidas. Se crea un archivo entrada con dichas instrucciones:
open linuxcol.uniandes.edu.co cd /pub/linux/utils get * quit
y se ejecuta el programa: ncftp < entrada . Salida: Se quiere saber los archivos que empiezan por i o I y almacenarlo en un archivo:
ls [iI]* > listado.txt
Es importante resaltar que el carcter de redireccin de salida ` ` ' ' destruir el archivo al cual apunta, si este existe, para ser reemplazado por uno nuevo con los resultados del proceso. Si se desea anexar la informacin a uno ya existente debe usarse doble carcter ` ` ' ' :
y se ejecuta el programa: ncftp < entrada . Salida: Se quiere saber los archivos que empiezan por i o I y almacenarlo en un archivo:
ls [iI]* > listado.txt
Es importante resaltar que el carcter de redireccin de salida ` ` ' ' destruir el archivo al cual apunta, si este existe, para ser reemplazado por uno nuevo con los resultados del proceso. Si se desea anexar la informacin a uno ya existente debe usarse doble carcter ` ` ' ' :
Comandos del sistema Linux/Unix (ejm: ls, cut) Funciones intrnsecas del shell (ejm: kill, nice) Lenguaje de programacin del shell (ejm: if/then/else/fi) (ver tabla de comandos) Programas y/o lenguajes de procesamiento en lnea. (ejm: awk, sed, Perl) Programas propios del usuario escritos en cualquier lenguaje.
El lenguaje de programacin de cada shell provee de una amplia gama de estructuras de control como se muestra en la tabla de commandos de la shell
for name [ in word; ] do list ; done select name [ in word ; ] do list ; done case word in [ pattern [ | pattern ]\ldots ) list ;; ]\ldots esac if list then list [ elif list then list ]\ldots [ else list ] fi $while list do list done $until list do list done [ function ] name () { list; }
Instrucciones bash para programacin shell tbl_instr_bash Un sencillo ejemplo es realizar un backup de solo ciertos directorios (prog_dir1 y prog_dir2), luego comprimirlos usando bzip2 y enviarlos a un area de almacenamiento (digamos una unidad ZIP previamente montada en /mnt/zipdrive), y adems con que el nombre del archivo contenga la fecha del da. Suena difcil? Realmente no lo es.
Se crea un archivo texto con cualquier nombre, por ejemplo mibackup que contenga las instrucciones que se desea ejecutar.
#!/bin/sh # echo "---------- Captura fecha -----------" fecha=date +%Y%m%d # echo "---------- Haciendo Tar -----------" tar cvf backup$fecha.tar prog_dir1 prog_dir2 # echo "----------- Comprimiendo -----------" bzip2 backup$fecha.tar # echo "---------- Envindolos a zip -------" cp ./backup$fecha.tar /mnt/zipdrive # echo "----------- Limpiando --------------" rm -f ./backup$fecha.tar # echo "----------- Final -------------"
y esta listo para ser ejecutado. En el script aqu mostrado es importante resaltar varios principios importantes: la primera lnea determina el shell que se esta usando (sh o bash); las variables no se declaran solo se asignan; su valor es retornado usando el smbolo $. Si desea mas informacin acerca de programacin en shell se puede consultar los manuales en lnea del shell: bash o tcsh
y para ejecutar nuevamente el comando rm *.bak solo es necesario escribir !5. Tambin se puede pedir el ltimo ` ` rm' ' que se ha ejecutado escribiendo !rm. El ltimo comando se repite con doble admiracin ` ` !!' ' . Es posible tambin editar el ltimo comando utilizando el carcter ` ` ^' ' pero este conocimiento se esta volviendo poco til, ya que los nuevos shells permiten viajar por la ` ` historia' 'y editar los comandos usando nicamente las flechas del teclado.
/.bash_profile Archivo(s) de inicializacin personal /.profile /.bash_login utilizado por los shells Ejecuta cuando entra al shell
/.bash_logout Ejecuta cuando sale del shell /.bashrc /.inputrc Archivo personal de inicializacin del shell. Archivo de inicializacin individual.
Archivos de bash
2 Sistema de Archivos
2.1 Organizacin de los directorios
Linux organiza la informacin en archivos, los cuales estn contenidos en directorios. Un directorio puede contener subdirectorios, teniendo as una estructura jerrquica, como en cualquier otro sistema operativo. Las nuevas versiones de Linux (incluido Red Hat) siguen el estndar FSSTND (Linux Filesystem Standard) el cual estipula los nombres, la ubicacin y la funcin de la mayora de los directorios y los archivos del sistema. La siguiente tabla muestra la estructura bsica del sistema de archivos de Linux como es definida por FSSTND. Estructura de directorios de width=10cmimages/struct_dir.eps Linux segn FSSTND fig_struct_dir
Conociendo esta estructura bsica, el usuario/administrador podr moverse ms fcilmente por los directorios, ya que la mayora de stos, tienen un determinado uso. En la siguiente tabla se tiene la descripcin de los directorios ms comunes. Directorio / /boot /bin /dev /etc /etc/rc.d /home /home/ftp Descripcin Raz (root), forma la base del sistema de archivos. Archivos del kernel (compilados). Archivos ejecutables esenciales para todos los usuarios. Archivos de dispositivos. Archivos de configuracin. Archivos de inicializacin (Red Hat). Generalmente, directorios de los usuarios. Contenido del servidor FTP.
/home/httpd Contenido del servidor WWW. /lib /mnt Libreras esenciales y mdulos del kernel. Directorios donde ` ` montar' ' diversos dispositivos temporalmente.
/mnt/cdrom Directorio donde se ` ` monta' ' el CD-ROM. /mnt/floppy Directorio donde se ` ` monta' ' el disquete. /proc /root Informacin sobre partes del sistema. Directorio del usuario principal del sistema.
Archivos ejecutables para tareas de administracin. Temporal. Programas, documentacin, fuentes,...compartidos por todo el sistema Archivos variables del sistema, bitcoras, temporales,...
Directorios de Linux ms frecuentes
La tabla muestra los principales subdirectorios del directorio usr. Directorio /usr/X11R6 /usr/bin /usr/dict /usr/doc /usr/doc/FAQ Descripcin Paquete XFree86 (X-Windows) Release 6. Archivos ejecutables para usuarios. Listados de palabras (diccionarios). Documentacin. F.A.Q. (o P.U.F.).
/usr/doc/HOWTO HOWTO' s. /usr/etc /usr/games /usr/include /usr/info /usr/lib /usr/local /usr/man /usr/sbin /usr/share /usr/src /usr/src/linux Archivos de configuracin del sistema. Juegos. Archivos de encabezado. Sistema de informacin GNU info. Libreras Jerarqua de archivos locales. Manuales. Archivos ejecutables de administracin no vitales. Datos independientes de la arquitectura. Cdigo fuente. Cdigo fuente del kernel de Linux.
Subdirectorios de usr
La tabla muestra los principales subdirectorios del directorio var. Directorio Descripcin
/var/catman /var/lib /var/local /var/lock /var/log /var/named /var/nis /var/preserve /var/run /var/spool /var/spool/at /var/spool/cron /var/spool/lpd /var/spool/mail
Manuales formateados localmente. Informacin del estado de aplicaciones. Variables del aplicaciones en /usr/local. Archivos de cerrojo. Bitcoras del sistema. Archivos del DNS. Base de datos para NIS (Network Inf. Service). Archivos de respaldo despus de una cada para vi o ex. Archivos relevantes a programas corriendo. Colas de trabajos para realizar mas tarde. Archivos creados por comando at. Archivos creados por comando crontab. Archivos de impresora. Archivos de correo de cada usuario.
/var/spool/mqueue Archivos de correo de salida. /var/spool/news /var/spool/smail /var/tmp Archivos de noticias de salida. Archivos de correo de smail. Temporal.
Subdirectorios de var
2.2 Permisos
Linux, como cualquier sistema Unix, es multiusuario, por lo que, los permisos de los archivos estn orientados a dicho sistema. Los permisos de cualquier archivo tienen tres partes: permisos del propietario, permisos del grupo y permisos del resto. As, se ve que un archivo pertenece a un determinado propietario y a un determinado grupo y, dependiendo de los permisos que tenga asociado dicho archivo, se podr tener acceso a l o no. Los permisos son de lectura (r), escritura (w) y ejecucin (x). Estos se definen mediante letras (parecido al comando attrib de DOS). Con el signo ` ` ' ' aadimos un permiso y con el signo ` ` ' ' se lo quitamos. Adems, los permisos pueden ser generales o no, es decir, si se pone sera permiso de ejecucin a todos, sin embargo, si se pone slo el propietario podra ejecutarlo. De este modo, se tiene: para propietario, para grupo y para el resto.
Ejemplo: Se tiene una serie de archivos despus de listar con ls -l el cual muestra el propietario (skina), el grupo (users) y los permisos de izquierda a derecha: propietario, grupo y el resto.
[]$ ls -l -rw-r--r-1 skina users -rw-r--r-1 skina users -rw-r--r-1 skina users -rw-r--r-1 skina users drwxr-xr-x 2 skina users -rw-r--r-1 skina users -rw-r--r-1 skina users drwxr-xr-x 2 skina users drwxr-xr-x 3 skina users -rw-r--r-1 skina users -rw-r--r-1 skina users -rw-r--r-1 skina users parte3_sistemas_archivos.tex []$ 17680 2573 1562 461 1024 949 550 3072 1024 61566 53227 3864 Nov Nov Nov Oct Nov Nov Nov Nov Nov Oct Nov Nov 29 30 29 24 23 30 30 30 30 26 23 30 16:52 19:52 13:47 21:43 01:02 19:26 19:48 22:55 00:09 22:29 01:08 19:56 GNU-GPL.tex Makefile autorizacion.txt biblio.tex bin/ creditos.tex curso_linux.tex images/ install/ lista_paquetes_mdk.tex lista_paquetes_rh.tex parte1.tex
Estos permisos llevan ` ` asociado' 'un nmero: el cuatro para lectura, el dos para la escritura y el uno para la ejecucin. De esta manera, un archivo tiene tres nmeros asignados: propietario, grupo y resto. Por ejemplo, si tenemos un fichero con los permisos 644 correspondera a: el propietario puede leer/escribir, el grupo slo puede leer y el resto slo puede leer. Vemos que, para asignar lectura y escritura, basta con sumar lectura(4)+escritura(2). El comando para modificar los permisos es chmod y tiene la siguiente sintaxis: chmod Por ejemplo se desea que todos las personas puedan ver escribir sobre el archivo creditos.tex, entonces
permisos archivo(s). # chmod a+w creditos.tex
o su equivalente en nmeros
# chmod 666 creditos.tex
Descripcin Sistema de archivos de Linux. Sistema de archivos de DOS. Sistema de archivos de Windows 9X (nombres largos).
iso9660 Sistema de archivos de CD-ROM. nfs Sistema de archivos compartido por red (exportado).
Sistemas de archivos ms comunes
desmontar Decirle a Linux que se ha dejado de utilizar un determinado dispositivo. Para montar un determinado sistema de archivos de un dispositivo, se utiliza el comando mount. La sintaxis es la siguiente:
# mount -t sistema_archivos dispositivo directorio [-o opciones]
donde: sistema_archivos puede ser cualquiera de los que aparece en la tabla anterior; dispositivo puede ser cualquier dispositivo del directorio /dev o, en el caso de nfs, un directorio de otro ordenador; directorio es el directorio donde estar el contenido del dispositivo y opciones pueden ser cualquiera de la tabla siguiente, en el caso de no poner ninguna opcin, mount utilizar las opciones por defecto. Una vez ` ` montado' 'el dispositivo, si no se va a volver utilizar se puede ` ` desmontarlo' ' con el comando umount con la siguiente sintaxis:
# umount directorio
Siempre, despus de utilizar un dispositivo hay que ` ` desmontarlo' ' , para que se almacenen correctamente los datos en dicho dispositivo. Un ejemplo de ello, es el hecho de que, un lector de CD-ROM, que haya sido ` ` montado' ' , no se abrir hasta que no se ` ` desmonte' ' . Opcin Descripcin rw ro exec user suid auto Lectura/escritura. Slo lectura. Se permite ejecucin. Los usuarios pueden ` ` montar' ' /` ` desmontar' ' . Tiene efecto los identificadores de propietario y del grupo. Se puede montar automticamente.
3. CD-ROM:
mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro umount /mnt/cdrom
2.4 /etc/fstab
En ocasiones, cuando se tienen varios dispositivos que se suelen ` ` montar' ' , se puede ahorrar tener que escribir continuamente la oportuna orden mount, simplemente incluyendo una lnea en el archivo /etc/fstab. El archivo /etc/fstab contiene lneas donde se indica qu dispositivo debe ` ` montar' ' , el lugar donde ` ` montarlo' ' , as como el sistema de archivos y las opciones (en este archivo, se pueden poner dos opciones ms: auto y noauto, que indican si se debe ` ` montar' ' automticamente al arrancar el sistema o no, respectivamente). Un ejemplo de /etc/fstab puede ser:
# Dispositivo /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 none /dev/fd0 /dev/fd0 /dev/cdrom Directorio / /home /tmp none /proc /mnt/floppy /mnt/msdos /mnt/cdrom FS ext2 ext2 ext2 swap proc ext2 vfat iso9660 Opciones defaults 1 1 defaults 1 2 defaults,noexec defaults defaults noauto,user,noexec,rw noauto,user,noexec,rw noauto,user,noexec,ro
/dev/sda4 host2:/tmp
noauto,user,noexec,rw defaults
para ` ` montar' 'y ` ` desmontar' 'un disquete, respectivamente. Sin embargo, slo el administrador podra ` ` montar' ' y` ` desmontar' ' el directorio /mnt/host2
3 El compilador GCC
(obtenido de: http://iie.fing.edu.uy/~vagonbar/gcc-make/gcc.htm)