Introducción a Unix y programación Shell

Objetivo: Entregar herramientas básicas para trabajar a nivel de usuario en máquinas Unix (Solaris, Linux)

Cambio de Password: passwd
Sistema de archivos en Unix
    Los archivos en Unix están organizadfos en directorios. Éstos son también archivos. En la raiz se encuentra el directorio /.
       Bajo la raiz se encuentras varios directorios como bin, home, usr. Bin contiene muchos programas correspondientes a comandos comunes en Unix. Usr contiene datos requeridos por esos y otros comandos. Home contiene contiene los archivos asociados con los usuarios del sistema. Éstos están organizados en directorios bajo home con el nombre del login.

    Abreviaciones:

    Consideraciones: Tipeo de Comandos
    Pra ejecutar programas normalmente los tipeamos. El programa que esta corriendo y acepta nuestro tecleo y ejecuta el programa indicado es llamado shell.  Hay varios shell disponibles con diferentes caracteristicas. El shell por defecto en ELO se llama bash. Otros son  tcsh y csh.
    Algunos caracteres especiales:
     ^C es usado patra abortar programas
     ^D  es usado para ingresar un fin de archivo.
     ^H Backspace
     ^B  Mueve el curso Backwards (hacia atrás)
    ^F Mueve el cursor Forwards (hacia adelante)
    ^P regresa al comando previamente tipeado.
    ^N Es lo opuesto a ^P. Avanza al próximo (next) y más reciente comando.
    ^Z Pausa el programa y permite retornar  al shell. Para volver al programa pausado da el comando: fg

Algunos Comando Básicos en Unix
pwd:    Print de Working Directory
mkdir:     Crear un nuevo directorio (make a directory)
ls:    listar el contenido del directorio de trabajo.
cd: cambio de directorio
cp: copia uno o más archivos.
cat file1..filen  : lista el contenido de archivos
exit: termina el shell actual.
mv file1 file2    Renombra file1 como file2.   file2 puede estar en un directorio diferente.
ls -a    : por defecto los nombre que comienzan con "." son considerados ocultos. -a (por all) los muestra dotos.
ls -l    : es la forma larga o completa del comando ls.
ls -F:
more file1 .. filen    : lista los archivos con pausa entre pantallas completas.
rlogin machine    : para "logearse" en otra máquina.
rm file1.. filen:   Remueve los archivos.
rm -i file1..filen    : pregunta por confirmacion antes de remover los archivos.
rm -r file1..filen    : remueve los archivos en forma recursiva.
rmdir diretorio    :    Remueve un directorio.
who: lista a todos los usuarios "logeados" en la máquina que estás usando.
man    comando:   entrega informacion de uso del comando indicado.

Permisos

Unix permite tres categorias de permisos a archivos:  read, write, y execute.
Las categorias de usuarios son: dueño del archivo, grupo al que pertenece el archivo, y todos los otros usuarios que tienen cuenta en el sistema. Las abreviaciones para éstos son: u (de user),  g ( de group), y  o ( de others).

Ejemplo: en respuesta al comando ls -l en uno de mis directorios podemos ver:

-rwx------   1 agustin  users        4723 Mar  6 09:56 UnixIntro.html
-rwx------   1 agustin  users        6903 Mar  6 09:57 index1s01.html
drwx------   1 agustin  users         512 Mar  2 11:25 tareas
drwx------   1 agustin  users         512 Mar  6 08:29 trabajos

La primera posición: - o d representan archivos o directorios. En general indica el tipo de archivo, hay otros como l (link), b y c.
Luego vienen los permisos para cada uno de las categorias de usuarios. Los permisos aparecen en orden rwx,  los accesos aparecen rpimero usuario, luego grupo y otros.
La precencia de - indica denegción de ese permiso para esa categoria de usuarios.

Interprestación de r,w, y x
    Para archivos: r otorga permiso de lectura. w de escritura, y x de ejecución.
    Para directorios: los directrorios en Unix son también archivos.
        Permiso de lectura r significa que es posible listar el contenido del directorio.
        Permiso de escritura: w significa que es posible crear archivos en el directorio.
        Permiso de ejecución: x significa que es posible acceder al directorio, por ejemplo a través del comando cd.

    Comando chmod: permite cambiar los permisos de archivos.
        patrón: chmod [opciones] categoria_de_usuarios (+|-) permisos archivos
        + agrega perso y - lo remueve.
        La categoria de usuarios puede ser una o mas de las letras ugoa  y los permisos pueden ser uno o más de las letras rwx.

    Atención con umask: permite definir los permisos por defecto al crear archivos.
        Formato umask [cuantro_digitos_ en octal ]
        Los últimos tres representan las negaciones correspondientes a cada categoria de usuarios.
        Estrategia 1: restricción severa (umask 077 o simplemente umask 77) y debemos relajar lo qeu deseamos compartir.
        Estrategia 2: restricción relajada (umask 022 o umask 22) y debemos restringir lo privado.

    Obtención de ayuda: ayuda en-linea   man  y otros utilitarios que ofrezca la versión del sistema operativo con que trabajes.

    Editor de archivos de texto: opciones vi, emacs, otros (mc). Yo uso primcipalmente emacs porque:
    1.- emacs tiene elementos que lo integran a UNIX. Por ejemplo es posible compilar programas desde emacs y saltar directamente a los errores de compilación.
    2.- emacs está disponible gratis para en todas las plataformas UNIX y para WinXX.
    3.- emacs se puede personalizar para trabajar con archivos tipo como  *.c, *.cc, *.java, *.txt, etc.

Personalizando el ambiente UNIX
    Archivo .bash   Este es un archivo de comandos ejecutado al momento de ejecutar un nuevo shell (bash). Permite personalizar el ambiente de cada shell. Aquí se definen cosas como alias, se define el prompt y cualquier otra definición.