#LyX 2.3 created this file. For more info see http://www.lyx.org/ \lyxformat 544 \begin_document \begin_header \save_transient_properties true \origin unavailable \textclass book \use_default_options true \maintain_unincluded_children false \language spanish \language_package default \inputencoding auto \fontencoding global \font_roman "default" "default" \font_sans "default" "default" \font_typewriter "default" "default" \font_math "auto" "auto" \font_default_family default \use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 100 \font_tt_scale 100 100 \use_microtype false \use_dash_ligatures false \graphics default \default_output_format default \output_sync 0 \bibtex_command default \index_command default \paperfontsize default \spacing single \use_hyperref false \papersize default \use_geometry false \use_package amsmath 1 \use_package amssymb 1 \use_package cancel 1 \use_package esint 1 \use_package mathdots 1 \use_package mathtools 1 \use_package mhchem 1 \use_package stackrel 1 \use_package stmaryrd 1 \use_package undertilde 1 \cite_engine basic \cite_engine_type default \biblio_style plain \use_bibtopic false \use_indices false \paperorientation portrait \suppress_date false \justification true \use_refstyle 1 \use_minted 0 \index Index \shortcut idx \color #008000 \end_index \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \paragraph_indentation default \is_math_indent 0 \math_numbering_side default \quotes_style swiss \dynamic_quotes 0 \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \html_math_output 0 \html_css_as_file 0 \html_be_strict false \end_header \begin_body \begin_layout Standard Un sistema operativo es una capa de software situada entre el hardware y las aplicaciones, que se encarga de \begin_inset Quotes cld \end_inset enmascarar \begin_inset Quotes crd \end_inset la complejidad del software a usuarios y programadores, administrando: \end_layout \begin_layout Itemize La CPU, que se comparte entre los procesos y el núcleo del SO. \end_layout \begin_layout Itemize La memoria, que también se comparte, impidiendo que un proceso acceda a la de otro indebidamente. \end_layout \begin_layout Itemize Los dispositivos, que también se comparten, protegiendo de accesos indebidos y ofreciendo una interfaz uniforme a los distintos tipos de dispositivos. \end_layout \begin_layout Standard Ejemplos: Windows (2000, XP, Vista...), Linux (Ubuntu, Fedora...), Unix, FreeBSD, MacOS, etc. Una distribución de un sistema operativo incluye al núcleo del SO junto con software adicional. Tipos de SO: De propósito general, de servidores, de tiempo real, integrados, de tarjeta inteligente, de supercomputadores, etc. Conceptos: \end_layout \begin_layout Description Usuario Persona que trabaja en el sistema. \end_layout \begin_layout Description Sesión Periodo de tiempo en el que un usuario interactúa con el sistema. \end_layout \begin_layout Description Programa Código ejecutable almacenado en disco. Concepto estático. \end_layout \begin_layout Description Proceso Programa en ejecución, que necesita recursos. Concepto dinámico con estado cambiante. Unidad de trabajo del SO. \end_layout \begin_layout Description Fichero Unidad lógica de almacenamiento de datos persistentes. Secuencia de bytes con un formato determinado. \end_layout \begin_layout Description Programas \begin_inset space ~ \end_inset del \begin_inset space ~ \end_inset sistema Programas que suelen acompañar al SO, como administrador de archivos, intérprete de comandos, programas para información de estado, aplicaciones básicas o utilidades de programación. \end_layout \begin_layout Description \series bold Interfaz \begin_inset space ~ \end_inset de \begin_inset space ~ \end_inset usuario \series default Permite al usuario dar órdenes al sistema. \end_layout \begin_deeper \begin_layout Description \lang english GUI \begin_inset space ~ \end_inset ( \emph on Graphical \begin_inset space ~ \end_inset User \begin_inset space ~ \end_inset Interface \emph default ) \lang spanish Presenta una visión intuitiva del sistema. Se basa en un gestor de ventanas que permite arrancar y terminar aplicaciones y trabajar con varias al mismo tiempo. \end_layout \begin_layout Description Línea \begin_inset space ~ \end_inset de \begin_inset space ~ \end_inset comandos Órdenes tecleadas. Permite llamar a \series bold órdenes internas \series default reconocidas por el intérprete y \series bold programas externos \series default , en su propio ejecutable. \end_layout \end_deeper \begin_layout Section Funcionamiento de un SO \end_layout \begin_layout Subsection El arranque \end_layout \begin_layout Standard Al encender, la CPU ejecuta un programa en ROM ( \series bold iniciador ROM \series default o \series bold ROM BIOS \series default ) que realiza un autodiagnóstico rápido del hardware y lee el \series bold disco \series default el programa \series bold cargador \series default , que posiblemente permita seleccionar entre varios SO. Este se encarga de cargar el kernel del SO en memoria, que toma el control, establece sus estructuras internas básicas (tabla de procesos, memoria, E/S, etc.) y ejecuta el \series bold proceso inicial \series default , que empieza a lanzar procesos auxiliares y \series bold demonios \series default (para impresión, red, etc.) según esté configurado y, finalmente, lanza uno (o varios) procesos de login, que permiten al usuario autenticarse y comenzar a trabajar. \end_layout \begin_layout Subsection Interrupciones \end_layout \begin_layout Standard Las \series bold interrupciones \series default son un mecanismo que permite pasar el control al núcleo del SO. Tipos: \end_layout \begin_layout Itemize \series bold Interrupciones software \series default , \series bold llamadas al sistema \series default o \series bold traps: \series default Las inicia un proceso para llamar a un servicio del sistema. \end_layout \begin_layout Itemize \series bold Interrupciones hardware: \end_layout \begin_deeper \begin_layout Itemize \series bold Excepciones \series default o \series bold desvíos: \series default Las produce un error en la ejecución, como una instrucción errónea, acceso indebido, error numérico, etc. \end_layout \begin_layout Itemize \series bold Interrupciones \series default propiamente dichas: Las causa un evento externo como el reloj del sistema o un dispositivo de E/S, y llegan a la CPU mediante el bus de control. \end_layout \end_deeper \begin_layout Standard Algunos tipos de llamadas al sistema: \end_layout \begin_layout Itemize \series bold Procesos: \series default Creación y terminación de procesos e hilos... \end_layout \begin_layout Itemize \series bold Acceso a dispositivos: \series default Apertura, cierre, lectura y escritura de ficheros y dispositivos de E/S... \end_layout \begin_layout Itemize \series bold Gestión de la memoria: \series default Solicitud y liberación de espacio... \end_layout \begin_layout Itemize \series bold Manipulación del sistema de ficheros: \series default Creación y borrado de ficheros y directorios, movimiento por directorios, manipulación de permisos, acceso a metadatos... \end_layout \begin_layout Itemize \series bold Otros: \series default Sincronización y comunicación entre procesos... \end_layout \begin_layout Subsection El subsistema de gestión de procesos \end_layout \begin_layout Standard Los SO permiten la \series bold multiprogramación \series default , el uso compartido de la CPU entre varios procesos, y de esta forma permite múltiples usuarios. Periódicamente, el reloj interrumpe al proceso en ejecución para ejecutar código del kernel, que cambia el \series bold contexto \series default para ejecutar otro proceso. Los procesos van avanzando con sensación de simultaneidad, y los que quedan a la espera de E/S ceden la CPU a otro proceso. La parte del kernel encargada de optimizar el uso de CPU es el \series bold planificador \series default o \series bold \emph on scheduler \series default \emph default . \end_layout \begin_layout Standard Todos los procesos son creados por otro, llamado \series bold proceso padre \series default , siendo la raíz de la jerarquía el proceso inicial (en Linux, \family typewriter init \family default ), y terminan de forma voluntaria o externa. Los procesos también pueden ser monitorizados, y se autorizan intentos de comunicación entre procesos. \end_layout \begin_layout Subsection El subsistema de gestión de memoria \end_layout \begin_layout Standard La RAM es compartida por todos los procesos y el propio kernel, el cual aísla a unos procesos de otros ubicándolos en \series bold espacios de direccionamiento \series default independientes. Cada proceso tiene un \series bold espacio de direcciones virtual \series default , que es mapeado por el sistema (con ayuda del hardware) a distintas \series bold direcciones físicas \series default . Si es necesario, parte del espacio virtual de un proceso se mantiene en disco. El SO se encarga de controlar las zonas de memoria libres y ocupadas, asignar y recuperar espacio y mover datos y código entre la RAM y el disco según sea necesario. \end_layout \begin_layout Subsection El subsistema de gestión de E/S \end_layout \begin_layout Standard El SO oculta las particularidades de distintos tipos de dispositivos. Por ejemplo, mientras que el usuario ve un sistema de ficheros organizado jerárquicamente, el disco en el que este está almacenado, con el que interactúa el SO, se muestra como una inmensa tabla de sectores de 512 bytes cada uno. \end_layout \begin_layout Standard Los dispositivos se manejan mediante una \series bold controladora \series default , un CI en el propio dispositivo que lo controla físicamente y acepta comandos elementales, y un \series bold manejador de dispositivo \series default o \series bold \begin_inset Quotes cld \end_inset driver \begin_inset Quotes crd \end_inset \series default , un software ejecutado por el kernel del SO en \series bold modo privilegiado \series default (uso no restringido del procesador) que se comunica con la controladora. \end_layout \begin_layout Standard Las operaciones de E/S tardan un cierto tiempo en ejecutarse, por lo que al enviar un comando a la controladora, el SO suspende el proceso en ejecución y otorga la CPU a otro proceso, de forma que cuando termina la transferencia de datos, se envía una \series bold interrupción \series default al procesador, causando que el SO vuelva a tomar el control y despierte al proceso bloqueado. \end_layout \begin_layout Section Linux \end_layout \begin_layout Standard Es un clon de Unix creado por Linus Torvalds en 1991. Su código fuente está disponible bajo GPL (puede usarse, modificarse y distribuirse libremente). Es multiplataforma, pues funciona en gran cantidad de procesadores por estar escrito casi todo en C, multiusuario, multitarea y multinúcleo. Usa memoria virtual con espacios de direccionamiento diferentes, y soporta múltiples sistemas de archivos, protocolos de red e infinidad de dispositivos. Existen múltiples distribuciones y miles de aplicaciones disponibles, libres y comerciales. \end_layout \begin_layout Standard Se accede al sistema mediante nombre de usuario y contraseña, y solo el usuario \family typewriter root \family default tiene el control total. El \emph on prompt \emph default de la línea de comandos, configurable, proporciona información del usuario, la máquina y el directorio actual: \end_layout \begin_layout Standard \align center \family typewriter \emph on usuario \emph default @ \emph on máquina \emph default : \emph on directorio_actual \emph default $ \end_layout \begin_layout Standard La interfaz gráfica más común es X-Window, que actúa como proceso \begin_inset Quotes cld \end_inset servidor \begin_inset Quotes crd \end_inset al que se conectan las aplicaciones gráficas \begin_inset Quotes cld \end_inset cliente \begin_inset Quotes crd \end_inset . Su diseño en red permite ejecutar aplicaciones gráficas remotas siempre que en nuestra máquina se ejecute el servidor X. Este captura los eventos de teclado y ratón y los envía a la aplicación, a la vez que muestra la salida gráfica de la misma en ventanas. Se arranca con \family typewriter startx \family default , aunque la mayoría de distribuciones ya lo ejecutan al inicio. \end_layout \begin_layout Standard El principal cliente de X-Window es el gestor de ventanas, que determina la apariencia del escritorio y ventanas. En Linux son populares KDE y GNOME, que cuentan con aplicaciones de todo tipo las cuales son compatibles entre sí por funcionar con X, aunque existen muchos más, como otros más ligeros. \end_layout \begin_layout Subsection La línea de comandos \end_layout \begin_layout Standard La consola de texto, terminal, intérprete, línea de comandos o \emph on shell \emph default de Linux es un programa denominado \family typewriter bash \family default . Permite usar, configurar, personalizar y monitorizar el sistema de forma muy avanzada, y realizar tareas repetitivas mediante \begin_inset Quotes cld \end_inset guiones shell \begin_inset Quotes crd \end_inset o \emph on scripts \emph default , series de órdenes que se almacenan en un archivo para ser ejecutadas posterior mente con una sola orden. \end_layout \begin_layout Standard Los caracteres \family typewriter /| \backslash !?*<>&~()[];# \family default , así como el espacio, tienen un significado especial en \family typewriter bash \family default , por lo que no es conveniente usarlos en nombres de archivos y directorios. \end_layout \begin_layout Standard Los comandos se especifican como \begin_inset Quotes cld \end_inset \family typewriter [parámetros...] \family default \begin_inset Quotes crd \end_inset . Los comandos que aceptan varias opciones (con \family typewriter - \begin_inset Formula $(letra)$ \end_inset \family default ) permiten ponerlos separados por espacios o juntos, en cuyo caso solo se indica el guión en el primero. \end_layout \begin_layout Standard El tabulador completa una ruta o una orden cuando ya hemos escrito suficientes caracteres para distinguirla. Las teclas arriba y abajo permiten navegar por el historial de órdenes, al que podemos acceder con \family typewriter CTRL-R \family default y tecleando una subcadena, con el comando \family typewriter history \family default o con \family typewriter ! \emph on número_de_orden \family default \emph default . \end_layout \begin_layout Standard Para evitar la interpretación de cualquier caracter reservado, se introduce \family typewriter \backslash \family default delante o se encierra todo (el parámetro o parte de él) entre comillas simples o dobles (la interpretación de estas, y del \family typewriter \backslash \family default , también pueden ser anuladas por \family typewriter \backslash \family default ). \end_layout \begin_layout Standard Para salir de la línea de comandos se usa el comando interno \family typewriter exit \family default . Linux tiene una serie de terminales virtuales. Para acceder a una, se pulsa \family typewriter CTRL-ALT-F \begin_inset Formula $n$ \end_inset \family default , donde \begin_inset Formula $n$ \end_inset es el número de la terminal. En una de ellas está la interfaz gráfica, en el caso de Ubuntu, en la 7. Para copiar y pegar en dichas terminales virtuales, se marca el texto a copiar de principio a fin pulsando el botón izquierdo del ratón y después, con el cursor situado donde se quiere pegar el texto, se pulsa el botón central. \end_layout \begin_layout Subsection Órdenes de ayuda \end_layout \begin_layout Itemize \family typewriter man \emph on page \family default \emph default : Muestra un manual de la orden que se le indica como parámetro, del que se sale pulsando \family typewriter q \family default . \end_layout \begin_layout Itemize \family typewriter info \emph on page \family default \emph default : Misma función, aunque funciona de forma distinta. \end_layout \begin_layout Itemize \family typewriter help \emph on command \family default \emph default : Muestra algo de información sobre un comando interno. \end_layout \begin_layout Itemize También se puede obtener información llamando al comando con \family typewriter -h \family default , \family typewriter -? \family default o \family typewriter --help \family default . \end_layout \begin_layout Subsection El sistema de ficheros \end_layout \begin_layout Standard Todo el almacenamiento se considera un sistema único de ficheros jerárquico que parte del directorio raíz ( \family typewriter / \family default ) y cuyas entradas pueden ser ficheros (regulares, por caracteres, por bloques o enlaces simbólicos) u otros directorios. \end_layout \begin_layout Itemize Los \series bold enlaces simbólicos \series default son \begin_inset Quotes cld \end_inset punteros \begin_inset Quotes crd \end_inset a otras entradas del sistema de ficheros, que almacenan la ruta de estas. Si el archivo original cambia de lugar o es eliminado, el enlace queda \begin_inset Quotes cld \end_inset colgando \begin_inset Quotes crd \end_inset , apuntado a nada. \end_layout \begin_layout Itemize Los \series bold enlaces físicos \series default o \series bold duros \series default se diferencian en que el fichero creado originalmente es indistinguible del enlace, de forma que solo al borrar el último enlace se libera el espacio en disco. Sin embargo, no se puede crear un enlace físico a un fichero en otro disco. \end_layout \begin_layout Standard Al indicar una ruta, se usa el caracter \family typewriter / \family default para separar directorios y ficheros. El punto ( \family typewriter . \family default ) en un nombre de archivo se usa opcionalmente para agrupar archivos que serán abiertos con la misma aplicación, diferenciando por \series bold extensiones \series default , y si se pone al principio de un archivo o directorio, este cuenta como \series bold oculto \series default . \end_layout \begin_layout Standard Una ruta que empiece por \family typewriter / \family default es \series bold absoluta \series default y parte de la raíz. Cualquier otra ruta es \series bold relativa \series default y parte del directorio actual. El directorio actual se denota por \family typewriter . \family default , el directorio \begin_inset Quotes cld \end_inset padre \begin_inset Quotes crd \end_inset de otro por \family typewriter .. \family default y el directorio \begin_inset Quotes cld \end_inset home \begin_inset Quotes crd \end_inset (del usuario que ha iniciado sesión) por \family typewriter ~ \family default . Los nombres de archivos diferencian mayúsculas de minúsculas. \end_layout \begin_layout Standard Los directorios importantes son los siguientes: \end_layout \begin_layout Itemize \family typewriter /bin \family default : Programas básicos del sistema. \end_layout \begin_layout Itemize \family typewriter /usr/bin \family default : Aplicaciones y otros programas. \end_layout \begin_layout Itemize \family typewriter /sbin \family default : Programas de administración (para superusuario). \end_layout \begin_layout Itemize \family typewriter /lib \family default : Bibliotecas del sistema. \end_layout \begin_layout Itemize \family typewriter /usr/lib \family default Bibliotecas de aplicaciones. \end_layout \begin_layout Itemize \family typewriter /etc \family default : Ficheros de configuración. \end_layout \begin_layout Itemize \family typewriter /home \family default : Directorios de usuarios. En general, cada usuario tiene una carpeta \family typewriter /home/ \family default . \end_layout \begin_layout Itemize \family typewriter /tmp \family default : Ficheros temporales. \end_layout \begin_layout Itemize \family typewriter /dev \family default : Dispositivos. \end_layout \begin_layout Itemize \family typewriter /proc \family default : Visión dinámica del sistema. \end_layout \begin_layout Standard Los dos últimos directorios mencionados no existen en el disco, sino que el SO proporciona esta percepción por comodidad. A veces \family typewriter /tmp \family default tampoco está en disco, sino que solo existe en la RAM. \end_layout \begin_layout Standard Los discos \begin_inset Quotes cld \end_inset tal cual \begin_inset Quotes crd \end_inset se representan como archivos, que habitualmente se denominan \family typewriter /dev/sda \family default , \family typewriter /dev/sdb \family default , etc., y sus particiones \family typewriter /dev/sda1 \family default , \family typewriter /dev/sda2 \family default , etc., y \family typewriter /dev/null \family default indica un archivo virtual que descarta todo lo que se escribe en él. \end_layout \begin_layout Standard En \family typewriter bash, \family default si un parámetro es una ruta, podemos usar comodines, y el parámetro se sustituye por la lista de rutas de archivo que cumplen la condición (si existen). \end_layout \begin_layout Itemize \family typewriter * \family default : Cero o más caracteres. \end_layout \begin_layout Itemize \family typewriter ? \family default : Un caracter. \end_layout \begin_layout Itemize \family typewriter [ \begin_inset Formula $a$ \end_inset - \begin_inset Formula $z$ \end_inset ] \family default : Un caracter en el rango. \end_layout \begin_layout Itemize \family typewriter [! \begin_inset Formula $a$ \end_inset - \begin_inset Formula $z$ \end_inset ] \family default : Un caracter que no esté en el rango. \end_layout \begin_layout Itemize \family typewriter { \begin_inset Formula $n1$ \end_inset , \begin_inset Formula $n2$ \end_inset , \begin_inset Formula $\dots$ \end_inset \family default }: Cualquier secuencia de caracteres de la lista. \end_layout \begin_layout Standard Comandos: \end_layout \begin_layout Itemize \family typewriter pwd \family default . Indica el directorio en que nos encontramos (ruta completa). \end_layout \begin_layout Itemize \family typewriter cd [-|dir] \family default . Cambia al directorio especificado (o a \family typewriter ~ \family default ). Si se indica \family typewriter - \family default , vuelve al último directorio en que estuvimos. \end_layout \begin_layout Itemize \family typewriter ls [-dlrRaStu] [dir] \family default . Lista las entradas del directorio \family typewriter dir \family default o del actual: \end_layout \begin_deeper \begin_layout Itemize \family typewriter -l \family default : Formato largo. En vez de mostrar solo el nombre, muestra el total y a con \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset ti \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset nua \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset ción, para cada archivo: \end_layout \begin_deeper \begin_layout Itemize Tipo ( \family typewriter - \family default : Archivo; \family typewriter d \family default : Directorio; \family typewriter l \family default : Enlace simbólico; \family typewriter c \family default : Fichero por caracteres; \family typewriter b \family default : Fichero por bloques) y permisos. \end_layout \begin_layout Itemize Número de enlaces duros. \end_layout \begin_layout Itemize Usuario. \end_layout \begin_layout Itemize Grupo. \end_layout \begin_layout Itemize Tamaño (bytes). \end_layout \begin_layout Itemize Fecha y hora de modificación. \end_layout \begin_layout Itemize Nombre. \end_layout \end_deeper \begin_layout Itemize \family typewriter -R \family default : Lista recursiva. Muestra también el contenido de todos los subdirectorios. \end_layout \begin_layout Itemize \family typewriter -a \family default : Muestra también las entradas ocultas (cuyo nombre empieza por \family typewriter . \family default ). \end_layout \begin_layout Itemize \family typewriter -S \family default : Ordena por tamaño. \end_layout \begin_layout Itemize \family typewriter -t \family default : Ordena por fecha y hora de última modificación. \end_layout \begin_layout Itemize \family typewriter -u \family default : Ordena por fecha y hora de último acceso. \end_layout \begin_layout Itemize \family typewriter -U \family default : Ordena por fecha y hora de creación. \end_layout \begin_layout Itemize \family typewriter -r \family default : Invierte el orden escogido por \family typewriter -S|t|u|U \family default . \end_layout \begin_layout Itemize \family typewriter -d \family default : Lista la entrada correspondiente al subdirectorio indicado en lugar de las entradas que este contiene. \end_layout \end_deeper \begin_layout Itemize \family typewriter cat [file] \family default . Muestra el contenido del \family typewriter file \family default , o de la entrada estándar. \end_layout \begin_layout Itemize \family typewriter more [file] \family default . Igual pero permite mostrarlo poco a poco. \end_layout \begin_layout Itemize \family typewriter less [file] \family default . Igual pero permite desplazarse arriba y abajo y buscar palabras con \family typewriter / \begin_inset Formula $palabra$ \end_inset \family default . \end_layout \begin_layout Itemize \family typewriter hexdump -C [file] \family default : Muestra el contenido de \family typewriter file \family default , o de la entrada estándar, en he \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset xa \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset de \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset ci \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset mal con formato. \end_layout \begin_layout Itemize \family typewriter find [path] [match] [expr] \family default . Busca en \family typewriter path \family default (o en el directorio actual) y sus subdirectorios, archivos que cumplan los criterios ( \family typewriter match \family default ) (o todos) y hace lo que indique la expresión ( \family typewriter expr \family default ) (o muestra el nombre por la salida). \end_layout \begin_deeper \begin_layout Itemize Criterios: \end_layout \begin_deeper \begin_layout Itemize \family typewriter -name \begin_inset Formula $nombre$ \end_inset \family default : Nombre de la entrada (se pueden usar comodines, pero de forma que no los sustituya la \emph on shell \emph default ). \end_layout \begin_layout Itemize \family typewriter -iname \begin_inset Formula $nombre$ \end_inset \family default : Similar pero sin distinguir mayúsculas y minúsculas. \end_layout \begin_layout Itemize \family typewriter -user \begin_inset Formula $usuario$ \end_inset \family default : Usuario al que pertenece. \end_layout \begin_layout Itemize \family typewriter -group \begin_inset Formula $grupo$ \end_inset \family default : Grupo al que pertenece. \end_layout \begin_layout Itemize \family typewriter -type [c|b|d|l|f] \family default : Tipo de fichero (igual que en \family typewriter ls -l \family default , salvo que \family typewriter f \family default para fichero regular). \end_layout \begin_layout Itemize \family typewriter -mtime [+|-] \begin_inset Formula $n$ \end_inset \family default : Modificado hace más ( \family typewriter + \family default ), menos ( \family typewriter - \family default ) o exactamente \begin_inset Formula $n$ \end_inset días. \end_layout \begin_layout Itemize \family typewriter -atime [+|-] \begin_inset Formula $n$ \end_inset \family default : Igual pero con el último acceso. \end_layout \begin_layout Itemize \family typewriter -amin [+|-] \begin_inset Formula $n$ \end_inset \family default : Igual que \family typewriter -atime \family default pero en minutos. \end_layout \begin_layout Itemize \family typewriter -size [+|-] \begin_inset Formula $n$ \end_inset \family default : Tamaño de más ( \family typewriter + \family default ), menos ( \family typewriter - \family default ) o exactamente \begin_inset Formula $512n$ \end_inset bytes. \end_layout \begin_layout Itemize \family typewriter ! \family default : Negación de lo siguiente. \end_layout \begin_layout Itemize \family typewriter -o \family default : Disyunción lógica. \end_layout \begin_layout Itemize \family typewriter -a \family default : Conjunción lógica (por defecto cuando se usan varios criterios). \end_layout \end_deeper \begin_layout Itemize Expresiones: \end_layout \begin_deeper \begin_layout Itemize \family typewriter -printf \begin_inset Formula $\dots$ \end_inset \family default : Imprime la secuencia de caracteres que se indica. Secuencias de escape: \family typewriter %s \family default : Tamaño; \family typewriter %u \family default : Usuario; \family typewriter %p \family default : Ruta completa; etc. \end_layout \end_deeper \end_deeper \begin_layout Itemize \family typewriter which \emph on command \family default \emph default . Muestra la ubicación en el sistema de ficheros de un comando externo. La lista de directorios donde la \emph on shell \emph default busca comandos externos se denomina \family typewriter PATH \family default y se puede consultar con \family typewriter echo $PATH \family default . \end_layout \begin_layout Itemize \family typewriter touch \family default . Crea un fichero o, si ya existía, actualiza su fecha de modificación. \end_layout \begin_layout Itemize \family typewriter cp [-iprRu] srcfile ... destfile|destdir \family default . Copia un fichero a otro, o varios ficheros a un directorio. \end_layout \begin_deeper \begin_layout Itemize \family typewriter -R \family default , \family typewriter -r \family default : Copia recursiva, para copiar directorios. \end_layout \begin_layout Itemize \family typewriter -i \family default : Pide confirmación si el fichero de destino ya existía, para evitar sobreescrib irlo. \end_layout \begin_layout Itemize \family typewriter -p \family default : Conserva la fecha de modificación al copiar. \end_layout \begin_layout Itemize \family typewriter -u \family default : No se copia si el destino tiene una fecha de modificación igual o posterior al origen. \end_layout \end_deeper \begin_layout Itemize \family typewriter mv srcfile|dirfile ... destfile|destdir \family default . Como \family typewriter cp \family default pero cambia la posición del archivo en vez de copiarlo. Se puede usar para cambiar el nombre de un fichero o directorio. \end_layout \begin_layout Itemize \family typewriter rm [-ifrv] file|dir ... \family default . Elimina ficheros y directorios. \end_layout \begin_deeper \begin_layout Itemize \family typewriter -v \family default : Muestra los nombres de las entradas conforme se eliminan. \end_layout \begin_layout Itemize \family typewriter -i \family default : Pide confirmación para cada entrada. \end_layout \begin_layout Itemize \family typewriter -r \family default : Borrado recursivo, para eliminar directorios. \end_layout \begin_layout Itemize \family typewriter -f \family default : Nunca pide confirmación. \end_layout \end_deeper \begin_layout Itemize \family typewriter mkdir dir \family default . Crea un directorio vacío en la ruta especificada. \end_layout \begin_layout Itemize \family typewriter rmdir dir \family default . Elimina el directorio indiciado si está vacío. \end_layout \begin_layout Itemize \family typewriter tar ... \family default . Para manipulación de archivos. Estos suelen tener la extensión \family typewriter .tar \family default o \family typewriter .tar.gz \family default (comprimido, también \family typewriter .tgz \family default ). \end_layout \begin_deeper \begin_layout Itemize \family typewriter tar c[zv][f archive] [files|dirs ...] \family default . Comprime los ficheros y directorios indicados. \end_layout \begin_layout Itemize \family typewriter tar t[zv][f archive] \family default . Lista los contenidos del archivo. \end_layout \begin_layout Itemize \family typewriter tar x[zv][f archive] \family default . Extrae el contenido del archivo, recuperando también los permisos, estructura de directorios, etc. \end_layout \begin_layout Itemize \family typewriter z \family default : Indica compresión GZip ( \family typewriter \SpecialChar endofsentence gz \family default ). \end_layout \begin_layout Itemize \family typewriter v \family default : Muestra los archivos conforme se comprimen o descomprimen. \end_layout \begin_layout Itemize \family typewriter f archive \family default : Indica el nombre del archivo. \end_layout \end_deeper \begin_layout Itemize \family typewriter ln [-s] target link \family default . Crea un enlace llamado \family typewriter link \family default al fichero \family typewriter target \family default . Si \family typewriter link \family default es un directorio existente, se crea dentro el enlace con el nombre de \family typewriter target \family default . \end_layout \begin_deeper \begin_layout Itemize \family typewriter -s \family default : El enlace es simbólico (si no se especifica, se crea un enlace duro). En tal caso, la ruta del fichero \family typewriter target \family default se indica de forma relativa al directorio en que está \family typewriter link \family default . \end_layout \end_deeper \begin_layout Itemize \family typewriter df \family default . Informa del espacio total y libre en todos los sistemas de archivos montados. \end_layout \begin_layout Itemize \family typewriter du [-hs] dir ... \family default . Muestra lo que ocupan realmente en el disco los directorios indicados junto con todos sus ficheros y subdirectorios de forma recursiva. \end_layout \begin_deeper \begin_layout Itemize \family typewriter -h \family default : Muestra en unidades más legibles como KB, MB o GB, en vez de en bloques de 1024 bytes. \end_layout \begin_layout Itemize \family typewriter -s \family default : Muestra sólo el tamaño total para cada argumento en lugar de mostrar lo que ocuparía cada entrada dentro de estos. \end_layout \end_deeper \begin_layout Subsection Usuarios, grupos y permisos \end_layout \begin_layout Standard Existen tres tipos de \series bold usuarios \series default : normales; del sistema, vinculados a ciertas tareas del SO, y \family typewriter root \family default o \series bold superusuario \series default , que tiene control total y en el prompt aparece con \family typewriter # \family default en vez de \family typewriter $ \family default . La información sobre los usuarios se guarda en \family typewriter /etc/passwd \family default y las contraseñas cifradas en \family typewriter /etc/shadow \family default . Los usuarios se pueden organizar en \series bold grupos \series default , con diferentes permisos. Cada usuario tiene un grupo principal, pero puede pertenecer a varios. La información se almacena en \family typewriter /etc/group \family default . \end_layout \begin_layout Standard Un usuario puede tener tres permisos sobre un fichero o directorio: \end_layout \begin_layout Itemize \begin_inset Formula $r$ \end_inset : Lectura. \end_layout \begin_layout Itemize \begin_inset Formula $w$ \end_inset : Escritura. \end_layout \begin_layout Itemize \begin_inset Formula $x$ \end_inset : Ejecución de un fichero o acceso al contenido de un directorio. \end_layout \begin_layout Standard Cada entrada del sistema de ficheros lleva asociado un usuario y un grupo, y existen permisos distintos para el usuario, el grupo y \begin_inset Quotes cld \end_inset el resto \begin_inset Quotes crd \end_inset . Se suelen indicar con tres secuencias \family typewriter rwx \family default (para usuario, grupo y resto, en orden), de forma que para los permisos que no se concedan se sustituye la letra por un \family typewriter - \family default . Así es como se indica en \family typewriter ls -l \family default . Comandos: \end_layout \begin_layout Itemize \family typewriter chmod perms file|dir \family default . Cambia los permisos de un fichero o directorio. El campo \family typewriter perms \family default indica los permisos en octal, asignando 1's a los permisos que se desea conceder y 0's al resto, en el orden en que se muestran en \family typewriter ls -l \family default . \end_layout \begin_layout Itemize \family typewriter chown user file|dir \family default . Cambia el propietario de un fichero o directorio. Requiere permisos de superusuario. \end_layout \begin_layout Itemize \family typewriter chgrp group file|dir \family default . Igual pero con el grupo. \end_layout \begin_layout Itemize \family typewriter whoami \family default . Muestra nuestro nombre de usuario. \end_layout \begin_layout Itemize \family typewriter who \family default . Muestra los usuarios actualmente conectados, con sus horas y lugares (terminale s) de inicio de sesión. \end_layout \begin_layout Itemize \family typewriter w \family default . Similar, pero además muestra qué está ejecutando cada usuario. \end_layout \begin_layout Itemize \family typewriter groups \family default . Muestra a que grupos pertenecemos. \end_layout \begin_layout Itemize \family typewriter sudo command pars ... \family default . Ejecuta el comando dado como superusuario (pide contraseña). \end_layout \begin_deeper \begin_layout Itemize \family typewriter -s \family default : Si se indica esto (sin especificar un comando), simplemente cambia a su \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset per \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset u \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset sua \begin_inset ERT status open \begin_layout Plain Layout \backslash - \end_layout \end_inset rio. \end_layout \end_deeper \begin_layout Itemize \family typewriter login user \family default . Cambia al usuario especificado (pide su contraseña). \end_layout \begin_layout Subsection Los procesos \end_layout \begin_layout Standard Los comandos separados por \family typewriter ; \family default se ejecutan uno detrás de otro, y situar \family typewriter & \family default detrás de un comando (o entre dos comandos, en cuyo caso afecta al de la izquierda) lanza un proceso en segundo plano, ejecutando lo que va delante sin esperar o permitiendo usar la shell sin que termine de ejecutarse. \family typewriter bash \family default muestra entonces el PID (identificador de proceso, entero único para cada uno). \family typewriter CTRL-C \family default \begin_inset Quotes cld \end_inset mata \begin_inset Quotes crd \end_inset a un proceso en primer plano, y \family typewriter CTRL-Z \family default lo pausa (lo \begin_inset Quotes cld \end_inset duerme \begin_inset Quotes crd \end_inset ). \end_layout \begin_layout Standard El directorio virtual \family typewriter /proc \family default se consulta como un sistema de ficheros normal, pero realmente lo mantiene el núcleo en tiempo real, y contiene un subdirectorio por cada PID de proceso activo, con información sobre el mismo como ficheros abiertos, mapa de memoria, etc. También contiene: \end_layout \begin_layout Itemize \family typewriter /proc/cpuinfo \family default : Información sobre la CPU. \end_layout \begin_layout Itemize \family typewriter /proc/meminfo \family default : Información sobre la memoria. \end_layout \begin_layout Itemize \family typewriter /proc/version \family default : Versión del núcleo. \end_layout \begin_layout Itemize \family typewriter /proc/sys \family default : Directorio con los parámetros de distintos subsistemas del núcleo. Si se tienen los permisos, se puede hasta cambiar el comportamento del núcleo en tiempo de ejecución. \end_layout \begin_layout Itemize \family typewriter kill [-9] PID \family default : Lanza una señal para terminar el proceso con el PID indicado. Este puede \begin_inset Quotes cld \end_inset capturar \begin_inset Quotes crd \end_inset dicha señal evitando su finalización (puede ser útil en ciertos casos). Si aun así se desea terminar dicho proceso, la opción \family typewriter -9 \family default manda una señal \begin_inset Quotes cld \end_inset no capturable \begin_inset Quotes crd \end_inset . \end_layout \begin_layout Standard Cada proceso tiene una entrada estándar ( \family typewriter stdin \family default , por defecto el teclado), una salida estándar ( \family typewriter stdout \family default , por defecto la pantalla) y una salida estándar de error ( \family typewriter stderr \family default ). En \family typewriter bash \family default , detrás de un comando, \family typewriter > \begin_inset Formula $archivo$ \end_inset \family default redirige \family typewriter stdout \family default a un archivo, que sobreescribe en caso de existir, y \family typewriter >> \begin_inset Formula $archivo$ \end_inset \family default hace lo mismo pero, si el archivo ya existe, en vez de sobreescribirlo añade la salida al final. Igualmente, \family typewriter 2> \family default y \family typewriter 2>> \family default hacen lo mismo pero con \family typewriter stderr \family default , y < \family typewriter \begin_inset Formula $archivo$ \end_inset \family default toma \family typewriter stdin \family default de ese archivo. \end_layout \begin_layout Standard Otra forma de comunicación entre procesos son las \series bold tuberías \series default que permiten redireccionar el \family typewriter stdout \family default de un fichero con el \family typewriter stdin \family default del siguiente. En \family typewriter bash \family default se indican con \family typewriter / \family default . Existe un repertorio de comandos útiles, llamados \series bold filtros \series default , especialmente diseñados para comunicarse mediante tuberías. \end_layout \begin_layout Standard Comandos: \end_layout \begin_layout Itemize \family typewriter ps [-Af] \family default . Lista los procesos activos. \end_layout \begin_deeper \begin_layout Itemize \family typewriter -A \family default : Muestra todos los procesos en lugar de solo los lanzados desde ese terminal. \end_layout \begin_layout Itemize \family typewriter -f \family default : Muestra información adicional de interes, como el PID, el consumo de CPU, el PID del proceso padre (PPID), hora de lanzamiento, etc. \end_layout \end_deeper \begin_layout Itemize \family typewriter top \family default . Monitoriza en tiempo real los procesos activos, mostrando información de ellos similar a \family typewriter ps -Af \family default . \end_layout \begin_layout Itemize \family typewriter fg \family default : Pasa el último proceso pausado (despertándolo) o el último en ser iniciado en segundo plano al primer plano. \end_layout \begin_layout Itemize \family typewriter bg \family default : Despierta un proceso pausado pasándolo al segundo plano. \end_layout \begin_layout Standard \begin_inset Note Comment status open \begin_layout Itemize \family typewriter sort [-n] \family default . Ordena alfabéticamente las líneas de la entrada. \end_layout \begin_deeper \begin_layout Itemize \family typewriter -n \family default : Ordena numéricamente. \end_layout \end_deeper \begin_layout Itemize \family typewriter grep \family default . Muestra solo las líneas de la entrada que contengan cierto patrón. \end_layout \begin_layout Itemize \family typewriter cut -c \family default \begin_inset Formula $start$ \end_inset \family typewriter - \begin_inset Formula $end$ \end_inset \family default . Muestra solo las columnas \begin_inset Formula $start$ \end_inset – \begin_inset Formula $end$ \end_inset de cada fila. \end_layout \begin_layout Itemize \family typewriter head [- \begin_inset Formula $n$ \end_inset ] \family default . Muestra solo las primeras \begin_inset Formula $n$ \end_inset (10) líneas. \end_layout \begin_layout Itemize \family typewriter tail [- \begin_inset Formula $n$ \end_inset ] \family default . Muestra solo las últimas \begin_inset Formula $n$ \end_inset (10) líneas. \end_layout \begin_layout Itemize \family typewriter uniq \family default . Elimina líneas repetidas. \end_layout \begin_layout Itemize \family typewriter wc [-lcw] \family default . Cuenta las líneas ( \family typewriter -l \family default ), caracteres ( \family typewriter -c \family default ) y/o palabras ( \family typewriter -w \family default ). \end_layout \begin_layout Itemize \family typewriter tr \family default . Ejemplos: \end_layout \begin_deeper \begin_layout Itemize \family typewriter tr "-z" "A-Z" \family default . Convierte minúsculas a mayúsculas. \end_layout \begin_layout Itemize \family typewriter tr -d "0-9" \family default . Elimina caracteres numéricos. \end_layout \begin_layout Itemize \family typewriter tr -d -c "0-9" \family default . Elimina caracteres no numéricos o espacios. \end_layout \end_deeper \end_inset \end_layout \begin_layout Subsection Otros comandos \end_layout \begin_layout Itemize \family typewriter date \family default . Devuelve la fecha y hora actuales. \end_layout \begin_layout Itemize \family typewriter cal \family default . Calendario del mes/año actual. \end_layout \begin_layout Itemize \family typewriter clear \family default . \begin_inset Quotes cld \end_inset Limpia \begin_inset Quotes crd \end_inset la pantalla del terminal. \end_layout \begin_layout Itemize \family typewriter reset \family default . Resetea el terminal (para cuando se queda con caracteres extraños, como tras hacer \family typewriter cat \family default de un fichero binario). \end_layout \begin_layout Itemize \family typewriter expr \family default . Para cálculos aritméticos. Ejemplo: \family typewriter expr 101 + 12 \family default . \end_layout \begin_layout Itemize \family typewriter xargs ... \family default . Toma lo que se le pasa como parámetros (algún comando), le añade lo que le llega por la entrada estándar, lo interpreta como comando + parámetros y lo ejecuta. \end_layout \begin_layout Itemize \family typewriter split [-d] -b \begin_inset Formula $n$ \end_inset [file [prefix]] \family default . Divide el archivo \family typewriter file \family default (o la entrada estándar) en trozos de tamaño \begin_inset Formula $n$ \end_inset (por defecto bytes salvo que le suceda una \family typewriter k \family default (KB), etc.) cuyo nombre empieza por \family typewriter prefix \family default (o \family typewriter x \family default ). \end_layout \begin_deeper \begin_layout Itemize \family typewriter -d \family default : Usa sufijos numéricos en vez de por letras. \end_layout \end_deeper \end_body \end_document