SESIÓN NÚMERO 1 ================= whoami - muestra el nombre del usuario groups - imprime los grupos a los que pertenece el usuario id - muestra los identificadores del usuario y del grupo hostname - da el nombre del servidor pwd - imprime el directorio de trabajo who - muestra los usuarios que se encuentran conectados finger - da información acerca de los usuarios nombre_del_usuario: opcional (si no se pone nada, similar a who) write - permite enviar mensajes a otro usuario nombre_del_usuario: parámetro obligatorio terminal: parámetro opcional mesg - visualiza o permite cambiar el estado de recepción de mensajes y o n: parámetro opcional (si no se pone nada, muestra el estado actual) talk - chat interactivo entre dos usuarios nombre_del_usuario: parámetro obligatorio terminal: parámetro opcional ls - muestra el contenido de un directorio ruta_del_directorio: parámetro opcional (si no, directorio de trabajo) -a: (opcional) muestra los ficheros/directorios ocultos (all) -l: (opcional) da más información (long) -d: (opcional) muestra el nombre y no el contenido de los directorios -i: (opcional) imprime los números de inodo cd - cambia el directorio de trabajo ruta_del_directorio_nuevo: opcional (si no, se va al directorio de conexión) mkdir - crea un nuevo directorio ruta_del_directorio_nuevo: parámetro obligatorio rmdir - borra un directorio, que debe estar vacío ruta_del_directorio_nuevo: parámetro obligatorio chmod - cambia los permisos de un fichero o directorio permisos - código numérico de los permisos que se quieren establecer ruta_del_fichero chown - cambia el propietario de un fichero o directorio nombre_del_propietario ruta_de_fichero chgrp - cambia el grupo al que pertenece el fichero nombre_del_grupo ruta_del_fichero man - muestra la página de manual de una orden nombre_de_la_orden -k clave: (opcional) muestra el título de las páginas de manual donde aparece la clave locale - imprime los locales disponibles o la configuración actual -a: los locales disponibles exit - nos desconecta del servidor SESIÓN NÚMERO 2 ================= vi - editor de textos para gente arriesgada -N opción para que el editor se relaje y sea más amigable nombre_del_fichero pico - editor de textos para pusilánimes nombre_del_fichero gedit - editor de textos gráfico basado en las bibliotecas GTK nombre_del_fichero kate - editor de textos gráfico basado en las bibliotecas Qt nombre_del_fichero sftp - transferencia segura de ficheros nombre_de_usuario@servidor cp - copia de ficheros fichero_origen fichero_destino mv - mueve o renombra un fichero fichero_original destino_nuevo o nombre_nuevo rm - borra un fichero nombre_del_fichero du - muestra lo que ocupa un directorio y su contenido en el disco -h ofrece la información de un modo más legible (con unidades) ln - construye un enlace duro o blando -s (opcional) construye un enlace blando si aparece o duro, si no. destino_del_enlace origen_del_enlace SESIÓN NÚMERO 3 ================= echo - imprime en la pantalla sus argumentos unset - desdefine una variable nombre_de_la_variable which - muestra la ruta del fichero que se ejecuta con una orden orden set - muestra las variables de entorno find - busca ficheros o directorios directorio_de_partida condiciones_de_búsqueda (p. ej.: -name expresión). Opcional. acción (p. ej.: -print) cmp - compara dos ficheros primer_fichero segundo_fichero diff - compara dos ficheros de texto, mostrando las diferencias primer_fichero segundo_fichero SESIÓN NÚMERO 4 ================= cat - muestra el contenido de ficheros ficheros (opcional) sort - filtro de ordenación grep - filtro para seleccionar líneas -v seleccionar lo que no coincide con la expresión expresión_de_selección cut - filtro para seleccionar columnas -c c1[-c2], según caracteres -f f1[-f2] -d carácter, según campos paste - pega varios ficheros en columnas -d carácter, (opcional) separador nombre_de_ficheros uniq - filtro que elimina líneas repetidas seguidas more - saca el contenido página a página head - filtro que muestra las primeras líneas de un fichero tail - filtro que muestra las últimas líneas de un fichero wc - filtro que cuenta líneas, palabras y caracteres date - muestra la fecha y hora actuales tee - filtro que desvía una copia de los datos a un fichero cal - imprime un calendario del mes actual SESIÓN NÚMERO 5 ================= ps - muestra información de los procesos -fcu usuario (opcional) muestra los procesos del usuario -efc (opcional) muestra todos los procesos top - muestra información dinámica de los procesos de más consumo de CPU [[salir con la tecla Q]] sleep - espera un tiempo sin hacer nada segundos jobs - imprime los procesos de segundo plano kill - elimina un proceso %numero_de_proceso_de_segundo_plano fg - trae un proceso a primer plano %numero_de_proceso_de_segundo_plano bg - pone en ejecución un proceso parado de segundo plano %numero_de_proceso_de_segundo_plano exit - abandona la shell y devuelve un valor valor_devuelto shift - mueve los argumentos una posición hacia abajo read - lee una línea tecleada por el usuario y la almacena en REPLY SESIÓN NÚMERO 6 ================= if then elif else fi - bloque condicional true - se ejecuta con éxito false - fracasa test - permite efectuar comparaciones -a ruta: la ruta existe -d ruta: la ruta existe y es un directorio -f ruta: la ruta existe y es un fichero normal -r ruta: la ruta existe y tenemos permiso de lectura -w ruta: la ruta existe y tenemos permiso de escritura -x ruta: la ruta existe y tenemos permiso de ejecución/acceso ruta1 -ot ruta2: ruta1 es anterior a ruta2 ruta2 -nt ruta2: ruta1 es posterior a ruta2 -z cadena: la cadena es nula -n cadena: la cadena no es nula cadena1 = cadena2: ambas cadenas son iguales cadena1 != cadena2: ambas cadenas son diferentes número1 -eq número2: ambos números son iguales número1 -ne número2: ambos números son diferentes número1 -gt número2: el primer número es mayor que el segundo número1 -ge número2: el primer número es mayor o igual que el segundo número1 -le número2: el primer número es menor o igual que el segundo número1 -lt número2: el primer número es menor que el segundo ! expresión: la expresión es falsa expresión1 -a expresión2: ambas expresiones son verdaderas expresión1 -o expresión2: alguna de las expresiones o las dos son verdaderas while do done - bloque de bucle while until do done - bloque de bucle until case in esac - bloque case for in do done - bloque for function { } - permite definir funciones return - permite volver de una función y devolver un valor valor (opcional) SESIÓN NÚMERO 7 ================= chmod(), fchmod() - modifica los permisos de acceso a un fichero #include int chmod(const char *path, mode_t modo); int fchmod(int fildes, mode_t modo); chown(), fchown(), lchown() - cambia el propietario y el grupo de un fichero #include int chown(const char *path, uid_t owner, gid_t group); int lchown(const char *path, uid_t owner, gid_t group); int fchown(int fildes, uid_t owner, gid_t group); Opcional: owner->UID_NO_CHANGE group->GID_NO_CHANGE link() - enlaza a un fichero #include int link(const char *path_destino, const char *path_fuente); unlink() - elimina una entrada de directorio; borra un fichero #include int unlink(const char *path); symlink() - hace un enlace simbólico a un fichero. #include int symlink(const char *path_destino, const char *path_fuente); readlink() - lee el contenido de un enlace simbólico #include int readlink(const char *path, char *buf, size_t bufsiz); Devuelve el número de bytes ocupados en buf o -1. SESIÓN NÚMERO 8 ================= open() - abre un fichero para leer o escribir #include int open(const char *path, int oflag, ... /* [mode_t mode] */ ); Devuelve un descriptor de fichero o -1. oflag: O_RDONLY, O_WRONLY, O_RDWR, O_APPEND, O_CREAT, O_EXCL, O_NONBLOCK, O_TRUNC, ... creat() - crea un nuevo fichero o sobreescribe uno existente #include int creat(const char *path, mode_t mode); close() - cierra un descriptor de fichero #include int close(int fildes); lseek() - mueve el puntero de lectura/escritura de fichero; buscar #include off_t lseek(int fildes, off_t desplazamiento, int dOnde); dOnde: entero, SEEK_SET, SEEK_CUR, SEEK_END. read() - lee de un fichero #include ssize_t read(int fildes, void *buf, size_t nbyte); Devuelve el número de bytes realmente leídos o 0 si se alcanzó el final de fichero. write() - escribe en un fichero #include ssize_t write(int fildes, const void *buf, size_t nbyte); Devuelve el número de bytes realmente escritos. truncate() - trunca un fichero a una longitud especificada. #include int ftruncate(int fildes, off_t longitud); int truncate(const char *path, off_t longitud); lockf() - semáforos y bloqueo de registros en ficheros #include int lockf(int fildes, int funciOn, off_t tamaNo); funciOn: F_ULOCK, F_LOCK, F_TLOCK, F_TEST. Si no se puede bloquear, con F_LOCK se duerme, con F_TLOCK da EACCESS. tamaNo: relativo al punto actual. 0=hasta el final... mmap() - proyecta un fichero en memoria #include void *mmap(void *addr, size_t longitud, int prot, int flags, int fildes, off_t desplazamiento); Si addr es 0, se proyecta donde quiera el sistema operativo. prot: PROT_READ, PROT_WRITE, PROT_EXEC, PROT_NONE. flags: MAP_SHARED. Devuelve un puntero a la zona de memoria donde se ha proyectado o, la macro MAP_FAILED, si hubo error. Se puede cerrar el descriptor de fichero después. munmap() - elimina una proyección de memoria #include int munmap(void *addr, size_t longitud); stat(), fstat(), lstat() - obtiene el estado de un fichero #include #include int stat(const char *path, struct stat *buf); int fstat(int fildes, struct stat *buf); int lstat(const char *path, struct stat *buf); lstat() obtiene la información de un enlace simbólico mientras que stat() y fstat() obtienen la información del objetivo del enlace. Miembros de la estructura stat: dev_t st_dev; /* ID del dispositivo que contiene la */ /* entrada de directorio para este fichero */ ino_t st_ino; /* Número de inodo */ ushort st_fstype; /* Tipo de sistema de ficheros en */ /* que se encuentra el fichero; véase sysfs(2) */ ushort st_mode; /* Tipo de fichero, atributos y */ /* resumen del control de acceso */ ushort st_basemode /* Bits de permisos (véase chmod(1)) */ ushort st_nlink; /* Número de enlaces */ uid_t st_uid; /* ID de usuario del propietario del fichero */ gid_t st_gid; /* ID de grupo del grupo del fichero */ dev_t st_rdev; /* ID del dispositivo; esta entrada está */ /* definida solamente para ficheros especiales */ /* de tipo carácter o bloque */ off_t st_size; /* Tamaño del fichero (en bytes) */ time_t st_atime; /* Fecha del último acceso */ time_t st_mtime; /* Fecha de la última modificación */ time_t st_ctime; /* Fecha del último cambio de estado */ /* del fichero */ /* Medidas en segundos desde las */ /* 00:00:00 GMT, 1 de Enero de 1970 */ long st_blksize; /* Tamaño del bloque del sistema de ficheros */ Al miembro st_mode se le puede aplicar las macros S_ISDIR(), S_ISCHR(), S_ISBLK(), S_ISREG(), S_ISFIFO() o S_ISLNK() para comprobar si el fichero es un directorio, un fichero especial de caracteres, uno de bloques, un fichero normal, uno fifo o un enlace simbólico. access() - determina la accesibilidad de un fichero #include int access(char *path, int modo_de_acceso); modo_de_acceso: R_OK, W_OK, X_OK, F_OK (existencia). Devuelve 0 si hay acceso, -1 si no lo hay. rename() - cambia el nombre de un fichero #include int rename (const char *origen, const char *destino); mkdir() - crea un directorio #include int mkdir(const char *path, modo_t modo); rmdir() - elimina un directorio #include int rmdir(const char *path); chdir(), fchdir() - cambia el directorio de trabajo #include int chdir(const char *path); int fchdir(int fildes); chroot() - cambia el directorio raíz include int chroot(const char *path); getdirentries() - obtiene entradas de directorio en un formato inde- pendiente del sistema de ficheros #include int getdirentries(int fildes, struct direct *buf, size_t nbytes, off_t *basep); nbytes es el tamaño de la memoria reservada en buf. nbytes tiene que ser mayor o igual que el tamaño de bloque del fichero. La estructura de tamaño variable direct consta de los sigtes. miembros: unsigned long d_fileno; /* inodo aprox. */ unsigned short d_reclen; /* longitud de la estructura */ unsigned short d_namlen; /* longitud del nombre */ char d_name[MAXNAMLEN + 1]; /* nombre del fichero */ Se devuelve el número de bytes escritos, 0 si se acabó, -1 error. En basep, se devuelve el despl. de fichero antes de la llamada. SESIÓN NÚMERO 9 ================= fork() - crea un nuevo proceso #include pid_t fork(void); Devuelve 0 al proceso hijo y el pid del hijo al proceso padre. -1, si hay error. getpid(), getppid() obtiene el ID del proceso y del padre del proceso. #include pid_t getpid(void); pid_t getppid(void); execl(), execle(), execlp(), execv(), execve(), execvp() - ejecuta un fichero #include extern char **environ; int execl(const char *path, const char *arg0, ... /* [const char *arg1, ..., const char *argn,] (char *)0 */); int execle(const char *path, const char *arg0, ... /* [const char *arg1, ..., const char *argn,] * (char *)0, * char * const envp[] */); int execlp(const char *file, const char *arg0, ... /* [const char *arg1, ..., const char *argn,] * (char *)0 */); int execv(const char *path, char * const argv[]); int execve(const char *path, char * const argv[], char * const envp[]); int execvp(const char *file, char * const argv[]); Las llamadas que acaban en "p" buscan el fichero en el PATH. Si la llamada tiene éxito, no se devuelve nada. wait(), waitpid() - espera a que un proceso hijo acabe o se pare #include OH #include pid_t wait(int *stat_loc); pid_t waitpid(pid_t pid, int *stat_loc, int options); Valor de pid: -1, todos; >0, el de PID especificado, 0, los del grupo; <-1, a los del grupo |pid|. Macros sobre stat_loc: WIFEXITED() - Verdad si acabó normalmente. WIFSTOPPED() - Verdad si se paró. WIFSIGNALED() - Verdad si acabó por una señal. WEXITSTATUS() - Código retorno. WTERMSIG() - Señal por la que acabó. WSTOPSIG() - Señal por la que se paró. WIFCONTINUED() - Verdad si continuó. Opciones: WNOHANG - no bloqueante. times() - obtiene los tiempos de proceso del proceso y de sus hijos #include clock_t times(struct tms *buffer); Los campos de la estructura tms son: clock_t tms_utime; /* tiempo de usuario */ clock_t tms_stime; /* tiempo de sistema */ clock_t tms_cutime; /* tiempo de usuario, hijos */ clock_t tms_cstime; /* tiempo de sistema, hijos */ Los tiempos se miden en la unidad 1/CLK_TCK segundos. CLK_TCK es una variable configurable del sistema. Ver sysconf(). gettimeofday() - proporciona la fecha y la hora #include int gettimeofday(struct timeval *tp, void *tzp); Campos de la estructura timeval: unsigned long tv_sec; /* segundos desde 1-1-1970 */ long tv_usec; /* y microsegundos */ Poner tzp a NULL. sysconf() - obtiene el valor de las variables configurables del sistema. #include long sysconf(int nombre); Si la variable que se quiere consultar es VAR, hay que poner la macro _SC_VAR en nombre. Consultar man sysconf para las variables. exit() - finaliza un proceso #include void exit(int codret); SESIÓN NÚMERO 10 ================== sigaction() - examina y cambia las acciones de las señales #include int sigaction (int sig, const struct sigaction *acciOn_nueva, struct sigaction *acciOn_vieja); La señal puede ser una de éstas: SIGABRT ii Señal para abortar proceso. SIGALRM i Temporizador. SIGFPE ii Operación aritmética errónea. SIGHUP i Cuelgue de la comunicación. SIGILL ii Instrucción ilegal. SIGINT i Señal de interrupción del terminal. SIGKILL i Matar (no puede interceptarse o ignorarse). SIGPIPE i Escritura en una tubería que nadie quiere leer. SIGQUIT ii Señal de salida del terminal. SIGSEGV ii Referencia a memoria inválida. SIGTERM i Señal para acabar. SIGUSR1 i Señal definida por el usuario número 1. SIGUSR2 i Señal definida por el usuario número 2. SIGCHLD iii Proceso hijo acabado o parado. SIGCONT v Continuar la ejecución, si se paró. SIGSTOP iv Parar la ejecución (no puede interc. o ignorarse). SIGTSTP iv Señal de parada del terminal. SIGTTIN iv Proceso de segundo plano que intenta leer. SIGTTOU iv Proceso de segundo plano que intenta escribir. SIGBUS ii Error de bus. SIGPOLL i Suceso de sondeo. SIGPROF i Expiró el plazo de trazado. SIGSYS ii Llamada al sistema errónea. SIGTRAP ii Interrupción por punto de ruptura (breakpoint). SIGURG i Datos urgentes en un socket. SIGVTALRM i Expiró el plazo del temporizador virtual. SIGXCPU ii Límite de tiempo de CPU excedido. SIGXFSZ ii Límite de tamaño de fichero excedido. Notas: (i) La señal acaba con el proceso por defecto. (ii) La señal acaba con el proceso por defecto y "core" opcional. (iii) La señal es ignorada por defecto. (iv) La señal para el proceso por defecto. (v) El proceso continúa por defecto, si está parado. Para más información, véase signal(5). La estructura sigaction tienen los siguientes campos: void(*)(int) sa_handler SIG_DFL, SIG_IGN o puntero a función. sigset_t sa_mask Conjunto de señales que deben bloquearse adicionalmente cuando se ejecute la manejadora. int sa_flags Flags especiales. Para dar valores a sa_mask, se usan las funciones de librería(3C): #include int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int seNal); int sigdelset(sigset_t *set, int seNal); int sigismember(const sigset_t *set, int seNal); El valor de sa_flags puede ser: SA_NOCLDSTOP: No generar SIGCHLD cuando un hijo se para. SA_RESETHAND: Cuando se llame a la manejadora, restaurar la intercepción de la señal a su valor por defecto. SA_RESTART: Intentar continuar la función que fue interrumpida. SA_NODEFER: La señal no se bloqueará cuando se llame a la mane- jadora a no ser que se especifique otra cosa en sa_mask. Si se ignora la señal SIGCHLD, los hijos no se transformarán en zombies. sigprocmask() - examina y cambia las señales bloqueadas #include int sigprocmask(int quE_cosa, const sigset_t *nuevo, sigset_t *viejo); quE_cosa puede valer: SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK. sigpending() - devuelve las señales bloqueadas de un proceso #include int sigpending(sigset_t *set); sigsuspend() - sustituye temporalmente las señales bloqueadas de un proceso y lo bloquea hasta recibir una de ellas int sigsuspend(const sigset_t *mask); alarm() - programa el despertador de un proceso #include unsigned int alarm(unsigned int sec); Hace que el proceso reciba una SIGALRM transcurridos sec segundos. Si sec=0, se cancela la alarma. Devuelve el tiempo que quedaba para la siguiente señal. pause() - bloquea proceso hasta señal #include int pause(void); Si llega a retornar, devuelve -1 y a errno le asigna EINTR. kill(), raise() - envían una señal a un proceso o a un grupo de procesos #include int kill(pid_t pid, int sig); int raise(int sig); raise() hace que el propio proceso reciba la señal.