SOM - T4 Tareas Basicas
SOM - T4 Tareas Basicas
TEMA
SOM
Tareas Básicas
1. INTRODUCCIÓN
El SISTEMA OPERATIVO es un conjunto de programas que acompañan al ordenador y que permite gestio-
nar tanto el hardware como el software así como las comunicaciones entre el usuario y el equipo.
Un usuario se comunica con el sistema operativo a través de interfaces. Tenemos dos tipos, modo texto
y modo gráfico. El primero de ellos lo hace mediante comandos mientras que el segundo mediante el uso del
ratón, iconos y ventanas.
Modo texto
La utilización del sistema operativo por comandos define a un usuario avanzado o administrador.
El programa para ejecutar comandos en Windows se llama [Link] y recibe el nombre de símbolo de
sistema. También dispone de una versión mejorada llamada Powershell.
La interfaz de comandos de Linux es conocida como shell, una de las mas utilizadas es bash (Bourne
Again Shell). Accedemos a la shell a través del terminal. En Linux Ctrl+Alt+F1 (de F1 a F6) nos lleva a un
terminal en modo texto y Ctrl+Alt+F7 al modo gráfico.
Shell: programa que nos sirve para acceder a los recursos y servicios del S.O.
Modo gráfico
El modo gráfico es conocido como GUI (Graphical User Interface), caracterizado por el uso de imá-
genes y objetos gráficos (ventanas, botonos, iconos, …) y la utilización de periféricos (ratón, pantalla táctil,
teclado, …).
La interfaz gráfica de Windows se llama Aero (en diferentes versiones según sea la versión del Sistema
Operativo), en Linux X11 que se carga mediante X-Window System.
En Linux tenemos dos entornos de escritorio que predominan sobre los demás, GNOME y KDE.
2. DISCOS Y PARTICIONES
GNU/Linux usa un método lógico para nombrar las particiones. En primer lugar, al nombrar las
particiones no tiene en cuenta el tipo de particiones que podamos tener, y en segundo lugar nombra las
particiones de acuerdo al disco en el cual están ubicadas. Así es como se nombran los discos:
• Los dispositivos IDE maestro y esclavo primarios (ya sean discos rígidos, unidades de CDROM o
cualquier otra cosa) se denominan /dev/hda y /dev/hdb respectivamente.
• En la interfaz secundaria, el maestro se denomina /dev/hdc y el esclavo se denomina /dev/hdd.
• Si nuestra computadora contiene otras interfaces IDE (por ejemplo, la interfaz IDE presente en
algunas tarjetas SoundBlaster™), los dispositivos se denominarán /dev/hde, /dev/hdf, etc. También
puede que tenga interfaces IDE adicionales si tiene controladoras RAID.
• Los discos SCSI, SATA se denominan /dev/sda, /dev/sdb, etc. en el orden en que aparezcan en la
cadena SCSI (dependiendo de los ID incrementalmente).
• Los CD-ROM SCSI se denominan /dev/scd0, /dev/scd1, siempre en el orden de aparición de los
mismos en la cadena SCSI.
Las particiones se nombran en base al disco en el cual se encuentran, de la siguiente manera (en el
ejemplo, usamos el caso de particiones en un disco IDE maestro primario):
• Las particiones primarias (o extendidas) se denominan /dev/hda1 a /dev/hda4 cuando están presen-
tes.
• Las particiones lógicas , si existen, se denominan /dev/hda5, /dev/hda6, etc. en el orden de apa-
rición de las mismas en la tabla de particiones lógicas.
Así que ahora podremos citar el nombre de las distintas particiones y discos rígidos cuando los necesi-
temos manipular.
2.1. SWAP
En informática, el espacio de intercambio es una zona del disco (un fichero o partición) que se usa para
guardar las imágenes de los procesos que no han de mantenerse en memoria física. A este espacio se le suele
llamar swap, del inglés "intercambiar".
La memoria de intercambio sirve como RAM adicional. Entonces, en un ordenador que ya tenga mu-
cha memoria RAM, ¿hace falta swap?
Aunque puede funcionar bien sin tener ningún área de intercambio, es muy recomendable crearla.
La razón es que siempre es bueno quitar de la memoria los procesos poco usados, ya que eso permite
usar la RAM para otras tareas, como por ejemplo la memoria caché de las operaciones de entrada/salida,
como el acceso al disco.
Un ejemplo: supongamos que un usuario abre en un programa una imagen muy grande, que le consu-
me el 80% de la memoria RAM, y después, sin cerrarla, se pone a hacer varias búsquedas de ficheros por su
disco duro. Si no se puede llevar a disco ese proceso grande, quiere decir que ha de mantenerse en memoria
física; por tanto, las búsquedas sólo tendrán menos del 20% de la memoria RAM para hacer de caché, y por
eso serán poco eficientes. Con swap, se podría llevar a disco el proceso grande (o al menos una parte), hacer
esas búsquedas usando toda la RAM como caché, y luego restaurar el proceso, si hace falta.
Hay algunos procesos que, debido a la función que realizan, están poco activos, y puede ser recomen-
dable que estén en el área de intercambio para liberar un poco la memoria RAM. Por ejemplo, un servidor
SSH (mecanismo de control remoto del ordenador) tiene que estar siempre activo para atender las posibles
peticiones, pero sólo empezará a trabajar de verdad cuando un usuario se conecte.
Ésta es una discusión típica entre los administradores de sistemas, y una duda común que sale durante
la instalación de un sistema Linux (o cualquier UNIX).
Hay una regla muy conocida que dice que "la swap ha de ser el doble de la memoria RAM instalada",
pero esto ya no es válido hoy en día. Esta regla funcionaba bien antes, cuando siempre se compraba menos
RAM de la que realmente se necesitaba, porque era muy cara. Tener 3 veces más memoria que la física iba
bien para la mayoría de usuarios. Pero en un ordenador nuevo que tenga 1 GB de RAM, no será necesario
gastar 2 GB en una partición de swap, porque probablemente no se usará.
La regla habitual usada para decidir el tamaño del área de intercambio es "pensar en cuánto querrías te-
ner y en cuánto tienes, y poner como swap la diferencia". Por ejemplo, si un usuario necesita abrir ficheros
de hasta 700 MB, pero sólo tiene 256 MB de RAM, entonces lo que le falta (aprox. 500 MB) se ha de poner
como swap, como mínimo. Más swap puede ir bien, pero no será muy usada.
2.2. PARTICIONES
La partición primaria
Es la primera y la mas importante, cualquier disco duro que se vaya a usar para almacenar un SO,
forzosamente debe tener una partición primaria, pues son ellas de quienes se puede iniciar la carga del SO.
La partición extendida
Mientras que solo pueden existir en un disco duro 4 particiones primarias o 3 particiones primarias y 1
Extendida dentro de la partición extendida podemos crear mas espacios, llamados unidades lógicas, por lo
tanto podemos tener 3 particiones primarias, 1 Extendida, y dentro de la extendida un número infinito de
unidades lógicas. Algo mas o menos así:
El sistema de archivos mantiene la estructura de un árbol jerárquico bajo el estándar FHS (Filesystem
Hierarchy Standard), estableciendo una estructura común para los sistemas Linux.
El directorio origen o raíz se representa por / (barra inclinada) y bajo este se localizan todos los demás
archivos accesibles en el sistema operativo.
Por ejemplo, queremos acceder a un CDROM. Este es montado al sistema como un subdirectorio. En
ese subdirectorio se localizará el contenido del dispositivo cuando se encuentre montado y no encontraremos
nada en caso contrario. Para obtener la lista de dispositivos montados en el sistema, simplemente hacemos
uso del comando mount en la consola.
/dev Contiene los dispositivos esenciales (no solo los de almacenamiento, también terminales, micrófonos,
impresoras, etc).
/etc Ficheros de configuración del sistema. El nombre proviene de “etcétera”.
/etc/network Fichero de configuración del servicio de red
/etc/X11 Ficheros de configuración para el X Window
/home Directorios de los usuarios, excepto el del superusuario (root). Estos directorios contienen los ficheros
propios de un usuario. A menudo se constituye una partición de disco separada para ellos.
Contiene todas las bibliotecas (mal traducidas como librerías) para el núcleo y las esenciales que son
/lib
compartidas por los programas alojados /bin y /sbin.
Contiene los puntos de montaje de los medios removibles de almacenamiento, tales como lectores de CD-
/media ROM, Pendrives (memoria USB), e incluso sirve para montar otras particiones del mismo disco duro, por
ejemplo alguna partición desde otro sistema operativo.
Sistema de ficheros montados temporalmente. Es una directorio semejante a /media, pero es usada
/mnt
mayormente por los usuarios. Sirve para montar discos duros y particiones de forma temporal en el sistema.
Paquetes software opcionales, que pueden ser compartidos por los usuarios. Estas aplicaciones, utilizan el
/opt directorio de usuario para guardas sus configuraciones, y de esta forma, cada usuario puede tener una
configuración diferente de la misma aplicación.
/proc Ficheros de texto que identifican procesos activos en el sistema.
/root Directorio personal (home) del usuario root.
Sistema de binarios esencial, comandos y programas exclusivos del superusuario (root), por ejemplo: init,
/sbin
route).
/tmp Ficheros temporales (véase también /var/tmp).
/usr La mayoría de las utilidades y aplicaciones multiusuario.
/var Ficheros variables, tales como logs, archivos spool, bases de datos, archivos de e-mail temporales, y archivos
temporales en general.
/var/log Ficheros de registro, Log. Varios registros, logs.
/var/mail Buzón de mensajes de correo electrónico
/var/tmp Ficheros temporales que, a diferencia de /tmp, no se borran entre sesiones o reinicios del sistema.
4. TAREAS BÁSICAS
Para manejar GNU/Linux se puede hacer de dos formas: una gráfica (si se instaló una interfaz X) y una
texto conocida como consola o terminal.
Si nos remitimos a una consola texto podremos apreciar que en ella se mostrará, el nombre que se le
asignó al sistema en la instalación y la palabra login. Aquí puede entrarse el login de un usuario del sistema.
(Luego se pedirá el password que al ser entrado no se muestra ningún eco en la pantalla. Si ambos son váli -
dos se establecerá la conexión y se mostrará el prompt:
usuario@maquina:~$
Del prompt podemos obtener la siguiente información:
• usuario: El usuario que está manejando la Shell.
• maquina: El nombre del pc que se está manejando.
• ~: Directorio, del sistema de archivos donde se encuentra el usuario.
• $ ó #: Indica si es un usuario normal ($), o es un usuario con privilegios, normalmente root (#)
El programa que se ejecuta en Linux cada vez que un usuario se conecta y que le permite interactuar
con el sistema se conoce como shell. Este es capaz de interpretar una gran gama de comandos y sentencias.
Constituye a su vez un poderoso lenguaje de Scripting (programación).
De los mencionados anteriormente bash es el más empleado en Linux. Este es uno de los más desarro-
llados y está portado para múltiples plataformas. Ofrece entre otras posibilidades las siguientes:
• Auto completar durante la escritura. Al teclear uno o varios caracteres se puede pulsar TAB con el
objetivo de que en caso de que pueda completarse de forma unívoca un comando, nombre de fi-
chero o una variable (en dependencia del contexto), complete de forma automática (se escriba el
resto de la palabra). Si existieran varias posibilidades para completar la palabra, se oirá un sonido y
volviendo a pulsar TAB se mostrarán en pantalla todas las posibilidades existentes.
• Historial de comandos. Esta es una facilidad de muchos otros shells que permite el movimiento a
través de los últimos N comandos ejecutados, en la sesión actual o en las anteriores. N por defecto
es 1000, pero puede modificarse. Para moverse arriba y abajo se suelen utilizar los cursores.
• Poderosas estructuras de control para realizar scripts. (Procesos por lotes). Se pueden usar instruc-
ciones if, for, while, select, etc.
• Definición de funciones y alias para comandos. Las funciones permiten definir subrutinas pro-
gramadas usando el lenguaje de bash y los alias, asociar nombres a llamados a comandos con
ciertas opciones y argumentos de forma más nemotécnica o abreviada.
Una ruta absoluta es aquella que parte del directorio raíz. Las rutas absolutas son válidas en cualquier
caso. Si establecemos como ejemplo paralelo la dirección de la vivienda, la dirección absoluta incluye la
calle y el número de la vivienda, de forma única e independiente.
Una ruta relativa, es una ruta que parte del directorio actual como origen. Esta ruta sólo es válida desde
un directorio actual concreto , es decir es relativa a un directorio. Si seguimos el ejemplo que pusimos para
la dirección de una vivienda, una ruta relativa es como si te indicaran "dos casas más allá de cierta esquina".
Observamos como la dirección "dos casas más allá una cierta esquina" es sólo válida para una calle, y esa
misma dirección referida a otra calle sería otro inmueble distinto.
Ejemplo:
5. COMANDOS BÁSICOS
Los comandos son pequeños programas del sistema operativo.
Reglas:
• Los comandos se escriben en minúsculas
• Entre el comando y cada uno de los parámetros hay un espacio en blanco
• Las opciones se escriben poniendo un guión delante y se pueden agrupar poniendo un único guion
delante de ellas.
pwd
Comando Función
pwd
El comando pwd indica el camino absoluto del directorio en el cual nos encontramos
actualmente
Ejemplos
$ pwd nos devuelve algo como /home/alumno/doc
cd
Comando Función
Sintaxis cd [directorio]
Ejemplos Resultado
$ cd /tmp Cambia al directorio /tmp
$ cd Cambia al directorio base (home) del usuario
$ cd ~ (alt + 126) cambia al directorio home del usuario actual
mkdir
Comando Función
Opciones Explicación
-p Crear los directorios intermedios si no existen
Ejemplos
$ mkdir datos Crea el directorio datos
$ mkdir /bin Crea el directorio bin en el raíz
$ mkdir -p docs/linuxdocs/howtos/pdf Se crean los directorios intermedios si no
existen
rmdir
Comando Función
Opciones Explicación
-p Borra los directorios intermedios si están vacíos
-v Informa de todos los borrados que han sido exitosos
Ejemplos
$ rmdir datos Borra el directorio datos
$ rmdir /bin Borra el directorio bin en el raíz
$ rmdir -p docs/linuxdocs/howtos/pdf Borra el directorio
docs/linuxdocs/howtos/pdf y todos los
directorios intermedios si están vacíos
ls
Comando Función
ls Permite listar el contenido de un directorio
Opciones Explicación
-l muestra la salida en formato largo
-R lista recursivamente un directorio.
-a lista además los ficheros ocultos (sus nombres comienzan con punto)
-h muestra el tamaño de los ficheros en forma más legible (Ej.: 16M, 4k,)
Ejemplos
$ ls -hl /etc
$ ls -R /usr
$ ls -al
$ ls -ali ..
Un grupo de opciones que se suele utilizar bastante es lia (ls –lia)
touch
Comando Función
touch Este comando se utiliza para cambiar la fecha de acceso y/o modificación a un archivo
Sintaxis touch [opciones] archivo
Ejemplos
~$ touch fich1 Si el argumento archivo corresponde al nombre de un
archivo que no existe (fich1 en el ejemplo), touch creará
el archivo con dicho nombre y sin ningún contenido.
cp
Comando Función
cp Permite copiar un fichero en otro, o varios ficheros en un directorio
cp [opciones] <fuente> <destino>
Sintaxis cp [opciones] <ficheros> <directorio>
Opciones Explicación
-r Copia recursivamente un directorio
Ejemplos
$ cp usrbin/*sh /tmp copia los ficheros terminados en sh en tmp
mv
El comando mv mueve un fichero hacia otro, o varios ficheros hacia un directorio. Este permite a su
vez renombrar ficheros o directorios.
Sintaxis:
mv [opciones] <origen> <destino>
mv [opciones] <ficheros> <directorio>
Algunas opciones:
-u : actualiza (upgrade) el destino con el origen solo si este es más
reciente.
Ejemplos:
$ mv [Link] [Link] # renombra un fichero
$ mv *.txt /tmp # mueve ficheros terminados en .txt al directorio
/tmp
$ mv -u program.c src/ # actualiza el fichero destino si es menos
reciente que el fuente
rm
Sintaxis:
rm [opciones] <ficheros | directorios>
Algunas opciones:
-r: borra recursivamente un directorio.
Ejemplos:
$ rm prueba
$ rm -i bin/*
$ rm -rf temp/
cat
El comando cat concatena (conCATenate) ficheros y los imprime en la salida estándar. Si solo se da el
origen a cat, utiliza como salida la pantalla. Es decir, cat hola muestra por pantalla el fichero hola. Si solo se
da la salida a cat (cat > fichero) utiliza como entrada el teclado.
Ejemplo:
# cat /etc/passwd /etc/shadow
$ cat > fichero
$ cat < origen > destino
vi
El editor vi es el editor estándar de Unix. Es orientado a comandos. Existe una versión conocida como
vim (Vi IMproved) muy poderosa que permite la edición de múltiples ficheros, ayuda en línea, selección vi-
sual, varios niveles de deshacer, etc.
Básicamente vi posee dos modos de interacción: el de inserción (edición) y el de comandos. Para pasar
al modo comando se pulsa Esc y para pasar al de inserción se pulsa i.
Algunos comandos útiles en vi (pulsando ESC para pasar al modo de comandos, que veremos en la
última línea de la pantalla).
dd - borra la línea actual.
ndd - borra n líneas desde la posición actual.
dw – borra la palabra actual
nyy – copia las n líneas siguientes
p – pega lo copiado
u - deshace el último comando.
:q! - sale sin salvar.
:w - salva.
:wq - salva y sale.
/expre – busca la expresión que le pongas. Después n, repite la
búsqueda
more y less
Comando Función
Los comandos more y less paginan (dividen en páginas) uno o varios ficheros y los
muestran en la terminal (pantalla).
more Se diferencian en las facilidades que brindan. Por ejemplo more es más restrictivo en
cuanto al movimiento dentro del texto, mientras que less no limita este aspecto pues acepta
less el empleo de todas las teclas de movimiento tradicionales. Cuando se alcanza el final del
último fichero a paginar, more termina automáticamente, no así less. También more muestra
sucesivamente el porcentaje del fichero visto hasta el momento. Tanto less como more pro-
veen una serie de comandos para moverse con facilidad dentro del texto paginado.
more [opciones] [ficheros]
Sintaxis less [opciones] [ficheros]
Ejemplos
$ less /etc/passwd
$ more /etc/passwd
$ cat fichero | less
Algunas teclas que podemos usar mientras usamos estos programas son:
Teclas Explicación
q Permite interrumpir el proceso y salir.
/p
Realiza búsquedas del patrón p dentro del texto. Para repetir la búsqueda del mismo patrón
sólo es necesario escribir /.
[n]b En more: permite regresar n páginas (por defecto n es 1).
[n]f
En more: se adelantan n páginas y
En less: n líneas.
tail y head
Comando Función
tail Los comandos tail y head muestran respectivamente el final y el comienzo (10 líneas
head por defecto) de uno o varios ficheros. De no especificarse al menos un fichero toman la en-
trada estándar.
tail [opciones] [ficheros]
Sintaxis head [opciones] [ficheros]
Opciones Explicación
-f
Para el caso de tail se ejecuta de forma sostenida, osea, se continúa visualizando el final del
fichero hasta que se interrumpa el proceso (Ctrl-c).
-<n> Imprime las n últimas (primeras) líneas en lugar de las diez establecidas por defecto.
Ejemplos
# tail -f /var/log/messages
# tail -20 /var/log/secure
# head -50 /var/spool/mail/pepe
grep
Comando Función
grep El comando grep busca patrones en ficheros. Por defecto devuelve todas las líneas que
contienen un patrón (cadena de texto) determinado en uno o varios ficheros.
Sintaxis grep [opciones] <patrón> [ficheros]
Opciones Explicación
-c Devuelve sólo la cantidad de líneas que contienen al patrón
-r Busca en un directorio de forma recursiva
-n Muestra el número de cada línea que contiene el patrón
Ejemplos
$ grep linux /usr/share/doc
$ grep root /etc/passwd
$ cat /etc/passwd | grep juan
$ ls –lia | grep “carta roja”
# grep -n error /var/log/messages
find
Comando Función
El comando find es uno de los más poderosos en un sistema Linux. Permite buscar de
find forma recursiva en un directorio a todos los ficheros que cumplan ciertas condiciones. Las
condiciones pueden estar relacionadas con el nombre de los ficheros, el tamaño, los permi-
sos, el tipo, las fechas de acceso y modificación, etc.
Sintaxis find [camino] [opciones]
Opciones Explicación
-namePermite especificar patrones para los nombres de los ficheros a buscar.
-size +/-<n> Permite indicar el tamaño máximo y/o mínimo de los ficheros a buscar.
-exec <comando> ;
Permite definir un comando a ejecutarse para cada resultado de la búsqueda. La
cadena {} se sustituye por el nombre de los ficheros encontrados
Ejemplos
$ find /etc -name '*.conf' # busca en /etc todos los ficheros con
extensión conf
$ find / -size +10240k -size -20480k # busca ficheros tamaño entre 10M y 20M
# find / -name core -exec rm -i “{}” “;” # busca todos los ficheros que se llamen
core y los borra
tar
Comando Función
Opciones Explicación
-c Permite crear (empaquetar) buscar.
-x Permite extraer (desempaquetar)
-v Activa el modo debug, para visualizar todos los mensajes
-f <fichero> Agrupa o desagrupa en o hacia un fichero
-z Comprimir o descomprimir con gzip además de empaquetar
-j Comprimir o descomprimir con bzip2 además de empaquetar
-t Lista el contenido de un fichero tar
-C Especificar el directorio de destino cuando se descomprime
Ejemplos
$ tar cvf [Link] ficheros Empaquetar ficheros en [Link]
gzip y gunzip
Comando Función
gzip El comando gzip sólo comprime fichero a fichero, no empaqueta ni comprime varios
ficheros o directorios
Sintaxis gzip [opciones] <fichero/directorio>
Comando Función
gunzip Descomprime
Sintaxis gunzip [opciones] <fichero/directorio>
Opciones Explicación
Ejemplos
$ gzip ficheros Comprime todos los ficheros uno a uno
zip y unzip
Comando Función
Comando Función
unzip Descomprime
Sintaxis unzip [opciones] <fichero/directorio>
Opciones Explicación
-r Dado un directorio comprime todos sus ficheros recursivamente
Ejemplos
$ zip [Link] ficheros Comprime todos los ficheros
rar
Comando Función
Opciones Explicación
Ejemplos
$ rar a ficheros [Link] Comprime todos los ficheros
Comando Función
cut Permite visualizar caracteres o campos concretos de todas las líneas de un fichero
cut -cRango archive
Sintaxis cut [-dcaracter] –fRANGO archivo
Opciones Explicación
-cRANGO Selecciona los caracteres dentro del RANGO
-dcarácter Especifica el separador de campos
-fRANGO Selecciona los campos dentro del rango
Para una aplicación que envíe correos electrónicos a toda la lista de amigos, podría ser interesante ob-
tener las direcciones de todos ellos a partir del archivo amigos:
cut –d% -f4 amigos
Si, además, se deseara tener el nombre de cada amigo, la orden adecuada sería:
cut –d% -f1,4 amigos
Sintaxis:
sort [-ru] archivo
Modificadores:
• -r Orden descendente
• -u Elimina las filas duplicadas
• -ru Orden descendente eliminando las filas duplicadas
El ordenamiento se realiza en base a los valores numéricos de los caracteres ASCII, por ello, el carác-
ter Z (mayúscula) irá antes del carácter a (minúscula) en el archivo ordenado de forma ascendente.
Cuando se utiliza sin ningún modificador, tr lee el archivo fichero y reemplaza los caracteres conteni-
dos en el conjunto inicial por los caracteres del conjunto final. Se visualiza el resultado pero no se modifica
el archivo original.
Con el modificador –d, lee el archivo fichero y elimina los caracteres contenidos en el conjunto inicial.
Se visualiza el resultado, pero no se modifica el archivo original.
Ejemplos 1:
tr '%' '&' < amigos >amigos_2
Cambia el carácter % (separador de campos) del archivo amigos por el carácter & y guarda el re-
sultado en el archivo amigos_2. El contenido de amigos no varía, mientras que el de amigos_2 se puede vi-
sualizar con la orden cat.
Ejemplos 2:
tr '[A-Z]' '[a-z]' < amigos
Cambia todos los caracteres en mayúsculas por caracteres en mayúsculas, visualiza el resultado, pero
no guarda los cambios.
Ejemplos 3:
tr –d '@' < amigos >>amigos
Elimina todos los caracteres @ del fichero amigos y guarda el resultado añadiéndolo al final del
mismo. No se visualiza el resultado por pantalla porque se redirecciona la salida (>>).
env
$PATH Contiene una lista separada por dos puntos de directorios en los cuales el intérprete de coman-
dos buscará los archivos ejecutables que no se invocan con una ruta. echo $PATH
$HOME Contiene la ubicación del directorio de usuario. De esta manera, los dos comandos siguientes
tienen el mismo efecto.
6.2. METACARÁCTERES
• * sustituye a cualquier carácter o conjunto de carácteres
• ? sustituye a un solo carácter.
• [ ] se especifica que carácter o caracteres se sustituirán en esa posición.
• [!] Permite la negación de algún carácter.
Ejemplo:
mkdir uno ; mkdir dos; ls
Ejemplo:
mkdir datos && ls
6.4. TUBERÍAS
Las tuberías en GNU/Linux enlazan la salida de un comando con la entrada de otro, lo que nos permite
realizar tareas complejas en la línea de comandos. Una tubería se escribe con el carácter | (Alt Gr+1).
Veamos un ejemplo:
6.5. REDIRECCIONAMIENTOS
Los comandos toman su entrada de algo conocido como entrada estándar y envían su salida a la salida
estándar (a menudo abreviado como "stdin o standar input" y "stdout o standar output"). Además existe una
salida especial para los mensajes de error de cada programa (stderr o standar error).
El intérprete de comandos configura el sistema de forma que la entrada estándar es el teclado y la sali-
da la pantalla.
Operando Resultado
orden < archivo orden utiliza como datos los contenidos en archivo.
orden > archivo Guarda en archivo los resultados de orden. Si archivo ya existe, lo sobreescribe.
orden >> archivo Añade los resultados de orden al final de archivo. Si no existe, lo crea.
orden utiliza como datos los que se escriban en las líneas siguientes hasta encontrar
orden << etiqueta
una línea que contenga etiqueta.
Envía el resultado de orden1 como dato para orden2 utilizando una tubería o pipe
orden1 | orden 2
(mediante el carácter | ).
Ejemplo:
ls /etc > [Link] el resultado del listado lo meterá en un fichero
mkdir /datos 2>fichero si hay error el resultado lo manda al fichero
date >> [Link] Añade la fecha al fichero. Podemos hacerlo varias
veces.
En el área de la programación, las expresiones regulares son un método muy eficaz para rea-
lizar búsquedas dentro de cadenas de caracteres y también para validar formatos específicos en una
cadena dada (como fechas o identificadores).
Para poder utilizar estos patrones al programar es necesario tener acceso a un motor de
búsqueda con capacidad de utilizarlas. Estos motores pueden ser de dos tipos:
• Motores para el usuario final: programas que permiten realizar búsquedas sobre el
contenido de un archivo o de un texto cualquiera. Es necesario aprender a redactar las ex-
presiones regulares adecuadas para poder sacarles el rendimiento deseado. Algunos de los
más frecuentes son: grep, sed, PowerGrep, RegexBuddy, EditPad Pro…
• Motores para el programador: permiten automatizar el proceso de búsqueda de modo
que sea posible utilizarlo múltiples veces para un propósito específico. Algunas de las
herramientas de programación que soportan las ER son: AWK, Java, JavaScript, Perl,
PCRE, PHP, Python, Net Framework…
Aunque por lo general las expresiones regulares utilizan un lenguaje común en todas las
herramientas y su sintaxis es relativamente uniforme, cada lenguaje usa su propio dialecto. Por este
motivo, el contenido de esta entrada en el blog del curso debería servir simplemente de guía o intro-
ducción a los patrones de búsqueda y tener siempre presente estas posibles diferencias que podamos
encontrar.
Las expresiones regulares se construyen como las expresiones aritméticas, usando operadores
para combinar expresiones más pequeñas y están formadas por un conjunto de caracteres (un grupo
de letras, números o signos) o por meta-caracteres, que representan otros caracteres y permiten una
búsqueda contextual.
Los meta-caracteres no se representan a ellos mismos, sino que son interpretados de una
forma especial, ya que tienen un significado propio. Los más utilizados son: . * ? + [ ] ( )
{} ^ $ | \
\s
Cualquier carácter individual de espacio en blanco: espacios, tabulaciones, saltos de
línea o saltos de página.
\S Cualquier carácter individual que no sea un espacio en blanco.
\t Tabulación.
\v Tabulación vertical.
\a Representa una campana o “beep” que se produce al imprimir este carácter.
\e Tecla “Esc” o “Escape”.
\w
Cualquier carácter alfanumérico, incluido el guión bajo (o de subrayado). Es
equivalente a [A-Za-z0-9_]
\W Cualquier carácter que no sea alfanumérico. Es equivalente a [^A-Za-z0-9_].
\x Para representar caracteres ASCII o ANSI si conocemos su código.
\u
Para representar caracteres Unicode si conocemos su código. (No todos los motores
lo soportan).
Ejemplos:
Algunos de los patrones más frecuentes a la hora de hacer validaciones de datos son:
Cualquier letra en
[a-z]
minúsculas:
Número entero: ^(?:\+|-)?\d+$
Correo electrónico: /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/
^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:
URL:
(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\’\/\\\+&%\$#_]*)?$
IP: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
Contraseña segura: (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$
Fecha: ^\d{1,2}\/\d{1,2}\/\d{2,4}$
Hora: ^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$
Número de tarjeta de ^((67\d{2})|(4\d{3})|5[1-5]\d{2})|(6011))(-?\s?\d{4})
crédito: {3}|(3[4,7])\d{2}-?\s?\d{6}-?\s?\d{5}$
Número de teléfono: ^[0-9]{2,3}-? ?[0-9]{6,7}$
Código postal: ^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$
Certificado de ^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}
identificación fiscal: (-|\.)? [0-9A-Z]|\d{8}(-|\.)?[A-Z])$
8. MÁS COMANDOS ÚTILES:
Comando Función
lsblk -fm Listar información de todos los dispositivos de bloques (particiones)
sudo fdisk -l Lista particiones
sudo free Uso de la memoria
lscpu Muestra información sobre el procesador del sistema
Disco y Particiones
mount monta y desmonta particiones
fdisk Gestor de particiones
df Muestra información del espacio utilizado en disco
lsblk lista información de los dispositivos de bloque
Nos permite enumerar todos los discos y particiones en nuestro sistema. Además podemos ad-
ministrarlos y realizar operaciones como añadir o eliminar particiones, o incluso cambiar el
cfdisk
tamaño de estas. Por último, que no menos importante, nos permite cambiar el tipo de
partición
enumera las particiones y permite administrarlas. Además muestra información de las marcas
parted
y modelos de los discos, incluso el tipo de conexión, como por ejemplo SATA, SCSI, etcétera.
uname muestra información sobre el sistema (uname -r versión del kernel; uname -m arquitectura)
lsmod Muestra información sobre los módulos del kernel cargados
lscpi Lista los dispositivos pci
lsusb Lista los dispositivos usb
lshw información hardware del sistema
dmidecode -q información hardware del sistema
uptime tiempo que lleva el sistema encendido
last últimos usuarios conectados
lastb últimos intentos de conexión al sistema fallidos
cat /proc/cpuinfo mostrar información de la CPU.
cat /proc/interrupts mostrar las interrupciones.
cat /proc/meminfo verificar el uso de memoria.
cat /proc/swaps mostrar ficheros swap.
cat /proc/version mostrar la versión del kernel.
cat /proc/net/dev mostrar adaptadores de red y estadísticas.
cat /proc/mounts mostrar el sistema de ficheros montado.
cat /proc/partitions Mostrar las particiones
Ficheros importantes
/etc/passwd
/etc/shadow Fichero que contiene las contraseñas encriptadas de los usuarios
/etc/group Fichero donde se almacena la información de los grupos
/etc/gshadow Fichero donde se almacena la información segura de un grupo
/etc/fstab