Está en la página 1de 25

2023

2024

Módulo: Sistemas Operativos Monopuesto

Configuración de Sistemas
Operativos

Miguel Ángel García Blanes


IES Doñana
Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

Contenido de la unidad
1 ¿Qué es un shell de Linux? __________________________________________________________4
2 El comando man de Linux ___________________________________________________________4
3 El comando clear de Linux ___________________________________________________________4

4 El comando ls de Linux ____________________________________________________________4


4.1 Sintaxis _____________________________________________________________________________4
4.1.1 Opciones simples ___________________________________________________________________________ 5

4.2 Actividades __________________________________________________________________________7

5 El comando cd de Linux ____________________________________________________________8


5.1 Sintaxis _____________________________________________________________________________8
5.2 Principales usos del comando cd _________________________________________________________8
5.3 Actividades __________________________________________________________________________9

6 Comando mkdir ___________________________________________________________________9


6.1 Sintaxis _____________________________________________________________________________9
6.2 Principales opciones del comando mkdir __________________________________________________9
6.3 Ejemplos del comando mkdir____________________________________________________________9
6.4 Actividades _________________________________________________________________________10

7 Comando touch __________________________________________________________________11


7.1 Sintaxis ____________________________________________________________________________11
7.2 Principales opciones del comando touch _________________________________________________11
7.3 Actividades _________________________________________________________________________11

8 Comodines ______________________________________________________________________12
8.1 Actividades _________________________________________________________________________12

9 Comando cp _____________________________________________________________________13
9.1 Sintaxis ____________________________________________________________________________13
9.2 Principales opciones del comando cp ____________________________________________________13

10 Comando rm ___________________________________________________________________14
10.1 Sintaxis __________________________________________________________________________14
10.2 Principales opciones del comando rm __________________________________________________14

11 Enlaces _______________________________________________________________________15
12 Introducción a la redirección ______________________________________________________16
12.1 Redirección _______________________________________________________________________16
12.2 Uso de /dev/null ___________________________________________________________________17

Sistemas Microinformáticos y Redes IES Doñana Página 2 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

13 Comando grep _________________________________________________________________18


13.1 Opciones principales ________________________________________________________________18
13.2 Ejemplos de usos __________________________________________________________________18
13.3 Ampliación _______________________________________________________________________20

14 Comando find __________________________________________________________________21


14.1 Comparando con -and, -or y -not ______________________________________________________22
14.2 Utilizar el comando find de Linux para encontrar y procesar archivos ________________________23

15 Tuberías ______________________________________________________________________24

Sistemas Microinformáticos y Redes IES Doñana Página 3 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

1 ¿Qué es un shell de Linux?


Un shell es un intérprete de comandos que expone una interfaz para que el usuario trabaje con el sistema operativo
subyacente.
Permite ejecutar operaciones usando texto y comandos, y proporciona a los usuarios características avanzadas como la
posibilidad de crear scripts.
Esto es importante: los shells te permiten realizar cosas de una manera más optimizada de lo que una GUI (Graphical User
Interface o Interfaz Gráfica de Usuario) podría permitirte hacer. Las herramientas de línea de comandos pueden ofrecer
muchas opciones de configuración diferentes sin ser demasiado complejas de usar.
Hay muchos tipos diferentes de shells (bash, csh, zsh, …). Todos los shells se originan del Bourne Shell, llamado sh. "Bourne"
porque su creador fue Steve Bourne.
Cada shell tiene sus propias características y uso avanzado, pero todos comparten una funcionalidad común: pueden
permitirte ejecutar programas, y pueden ser programadas.

En el resto de este tema veremos a detalle los comandos más comunes.

2 El comando man de Linux


El primer comando que presentaré te ayudará a entender todos los demás comandos. Cada vez que no sepas cómo usar un
comando, escribiremos man <comando> para obtener la ayuda de ese comando.
Las páginas de man son una herramienta esencial para aprender como desarrollador. Contienen tanta información que a
veces es casi excesiva.
Nota: Si el man estuviera en inglés, podemos intentar traducirlo parcialmente: (https://youtu.be/N34kh-
B5Z8U?feature=shared)

3 El comando clear de Linux


Escribe clear para borrar todos los comandos anteriores que se ejecutaron en la terminal actual. La pantalla se borrará y sólo
verás el prompt del sistema en la parte superior.
Una vez que ejecutes el comando, perderás el acceso al desplazamiento para ver la salida de los comandos anteriormente
introducidos.
Así que tal vez quieras usar clear -x en su lugar, que sigue limpiando la pantalla, pero te permite volver a ver el trabajo
anterior desplazándote hacia arriba.
Puedes ver un ejemplo de su uso en: https://www.youtube.com/watch?v=dEjkF_KlB_k

4 El comando ls de Linux
El comando ls (del inglés list, cuya traducción es lista, listado o listar) es un comando que muestra un listado, de los archivos,
enlaces o directorios, de un determinado directorio. Los resultados se muestran por defecto ordenados alfabéticamente.

Nota: En GNU/Linux, existen dos comandos distintos para mostrar el contenido de directorios: ls (list) y dir (directory). Son
dos paquetes individuales, pero casi idénticos en cuanto a su funcionamiento.
La diferencia más notable entre ambos comandos es la forma en la que se expresan los espacios entre palabras de los
nombres de los ficheros: ls encasilla dentro de comillas a los nombres que consisten en más de una palabra mientras que dir
añade guiones invertidos antes de cada espacio.

4.1 Sintaxis
El comando ls responde a la siguiente sintaxis para opciones simples:
➢ Si nos encontramos en el directorio
ls [opciones…]
Ejemplos
$ ls -l
➢ Si queremos listar un directorio en el que no nos encontramos posicionados
ls [opciones…] /ruta/absoluta/del/directorio
ls [opciones…] ./ruta/relativa/del/directorio
Ejemplos
$ ls –l /etc/dhcp

Sistemas Microinformáticos y Redes IES Doñana Página 4 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

$ ls –la ./../Prácticas

NOTA: Podemos listar el contenido de varios directorios en un solo comando, ya que el comando ls aceptará un número
arbitrario de rutas para listar.
Ejemplos
$ ls –l /etc/dhcp /home ./../Redes
4.1.1 Opciones simples
En este apartado vamos a ver algunas de las opciones principales del comando ls, pero si quieres ampliar la información de
este comando puedes hacer uso del man
$ man ls
Opciones:
➢ -l → Muestra el contenido del directorio en formato detallado y ordenado por nombre. La información en modo
detalle nos mostrará, en columnas de izquierda a derecha, la siguiente información:
▪ La primera columna muestra el tipo y los permisos del archivo.
▪ La segunda columna muestra el número de enlaces de referencia del archivo.
▪ La tercera columna muestra el propietario al cual pertenece el archivo.
▪ La cuarta columna muestra el grupo al que pertenece el archivo.
▪ La quinta columna muestra el tamaño, por defecto en bytes.
▪ La sexta columna muestra el mes de la última modificación en el archivo.
▪ La séptima columna muestra el día de la última modificación en el archivo.
▪ La octava columna muestra la hora de la última modificación en el archivo.
▪ La novena columna muestra el nombre del archivo y/o carpeta.

➢ -o → Nos va a permitir ver en detalle el contenido de un directorio al igual que la opción -l, solo que a diferencia de
este, ls -o no nos va a mostrar la columna de grupos (información de grupo) al que pertenecen los elementos
que se listan.

➢ -R → Muestra el contenido del directorio indicado / actual, así como el contenido de los subdirectorios que este
contiene. Es decir, Lista recursivamente el directorio que se le ha indicado

Sistemas Microinformáticos y Redes IES Doñana Página 5 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

➢ -a → Muestra todo el contenido del directorio, incluyendo los archivos ocultos

➢ -A → Muestra todo el contenido del directorio, incluyendo los archivos ocultos. Excepto ‘.’ y ‘..’

➢ -N → Muestra el nombre de los archivos tal y como son, es decir, sin comillas
➢ -h → Muestra los tamaños de archivo en términos de kiB,MiB, etc.

➢ -t → Ordena archivos por fecha.

➢ -S → Ordena archivos por tamaño.

➢ -X → Ordena por extensión de archivo.


➢ -r → Invierte el orden de los archivos

Sistemas Microinformáticos y Redes IES Doñana Página 6 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

➢ -p →Pone una barra al final de cada directorio.

➢ -t → Ordena por fecha de última modificación.


➢ -u → Ordena por fecha de último acceso.
➢ -d → Lista nombres de directorios como otros ficheros, en vez de listar sus contenidos.

➢ --color=[Always | auto | never] → Nos permite mostrar el contenido de un directorio con colores.

4.2 Actividades
Estando en tu directorio personal, realiza las siguientes actividades:
1- Muestra el contenido del directorio en el que te encuentras

2- Repite la actividad anterior, pero mostrando el detalle de los ficheros que contiene y los ficheros ocultos

3- Mostrar todos los ficheros en modo detalle, incluido los ocultos, de tu directorio personal (sin que aparezcan los
directorio . y ..)

4- Muestra de forma detalla los archivos de /etc ordenados por tamaño de menor a mayor

5- Muestra de forma detalla los archivos de /etc ordenados por tamaño de mayor a menor

6- Muestra de forma detalla los archivos de /dev ordenados por fecha de modificación (del más antiguo al más nuevo).
Debe mostrarse el tamaño con las unidades de medidas más adecuadas según el tamaño.

7- Con un solo comando, muestra el contenido de /home, /etc y /dev

8- Muestra el contenido de tu directorio, de forma detallada, sin color

9- Muestra el contenido de tu directorio, de forma detallada, sin color, pero haz que los directorios se muestren con
una barra al final (/)

10- Muestra recursivamente todo el contenido de tu directorio personal

Sistemas Microinformáticos y Redes IES Doñana Página 7 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

5 El comando cd de Linux
Los comandos básicos Linux siempre nos ayudan a trabajar fácil y rápidamente en la terminal, el comando Linux cd es uno de
esos comandos básicos de Linux que siempre vamos a utilizar, ya que nos sirve para cambiar el directorio actual o de trabajo,
es decir, nos va a permitir ubicarnos en una carpeta o directorio específico.

Se puede decir que cd viene de Change Directory o Cambiar Directorio y la forma de usar este comando Linux tiene varios
trucos que iremos viendo a lo largo de esta guía.

5.1 Sintaxis
El comando cd responde a la siguiente sintaxis:

cd [opciones] [dir]
donde dir representa la ruta absoluta o relativa del directorio al que queremos cambiar.

5.2 Principales usos del comando cd


En este punto vamos a ver varias opciones muy interesantes del uso que podemos hacer del comando cd

IMPORTANTE: Teniendo en cuenta que el directorio principal del usuario que inicia la sesión "/home/usuario/" en el prompt
del terminal de comandos es abreviado y mostrado como "~".

➢ Cómo cambiar del directorio actual a un nuevo directorio con comando cd en Linux.
Para esto basta con ejecutar cd más el nuevo directorio deseado, por ejemplo
$ cd ./../Documentos/Trabajo
$ cd ./Descargas
➢ Cómo cambiar a un nuevo directorio usando la ruta completa con comando cd de Linux
Es normal que cuando accedemos a directorios, especialmente los directorios del sistema operativo, estos cuenten
con más subdirectorios dentro de él. Por ejemplo, podemos ir directamente a la ruta /usr/local/lib ejecutando:
$ cd /usr/local/lib
➢ Cómo retornar al directorio anterior en el cual estábamos está trabajando anteriormente con comando cd en
Linux:
Esto es práctico ya que muchas veces debemos ir a un directorio solo para una determinada consulta y luego
debemos retornar nuevamente al directorio inicial de trabajo. En este caso debemos ejecutar lo siguiente:
$ cd -
➢ Cómo cambiar el directorio actual al directorio padre del mismo con comando cd de Linux:
Para realizar este proceso, de retorno al directorio principal, usaremos la siguiente línea:
$ cd ..
Si deseamos subir dos niveles:
$ cd ../..
$ cd ../../
➢ Cómo movernos al directorio de inicio (home) con comando cd en Linux:
Para retornar directamente al directorio home de Linux contamos con alguna de las siguientes opciones
$ cd
$ cd ~
Por ejemplo, si desea navegar al directorio Descargas, que se encuentra dentro de su directorio de inicio, escriba:
$ cd ~/Downloads
También puede navegar al directorio de inicio de otro usuario usando la siguiente sintaxis:
$ cd ~usuario
➢ Cambio del directorio actual a un subdirectorio, el cual contiene espacios en su nombre:
Para tal fin debe utilizarse antes de cada espacio la barra inclinada a izquierda (\), o las comillas tal y como se
muestra en los siguientes ejemplos:
$ cd Directorio\ nuevo
$ cd “Directorio nuevo”
$ cd ‘Directorio nuevo’
$ cd /home/usuario/”Directorio nuevo”
$ cd “/home/usuario/Directorio nuevo”
$ cd /home/usuario/”Directorio nuevo”/otro
$ cd “/home/usuario/Directorio nuevo/otro”

NOTA: TAB: El tabulador permite autocompletar lo que se está escribiendo

Sistemas Microinformáticos y Redes IES Doñana Página 8 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

5.3 Actividades
IMPORTANTE: Antes de comenzar a realizar las actividades, asegúrate de tener creado un nuevo usuario, cuyo “username”
sea alias1 (Cambia alias por el valor que te corresponda)
Ayuda: https://youtu.be/lYJHmD0kKGE
Suponiendo que actualmente te encuentras en tu directorio personal, realiza las siguientes actividades.
11- Muévete al directorio dhcp que se encuentra en la carpeta etc de la raíz (usando ruta absoluta)

12- Desplázate al directorio /var/log (usando rutas relativas)

13- Desplázate de la forma más rápida al directorio en el que te encontrabas anteriormente.

14- Sube al directorio padre.

15- Sitúate en el directorio personal de la forma más rápida posible.

16- Utilizando ~, muévete al home, (directorio personal), de alias1 (debes ejecutar el comando usando sudo delante del
comando)

17- Utilizando ~, muévete al directorio Escritorio de tu directorio personal

6 Comando mkdir
El comando mkdir (make directory) nos sirve para crear directorios en el sistema de ficheros, tanto con una ruta relativa
como con una ruta absoluta. El modo de empleo es:
$ mkdir [opcion] NuevoDirectorio
$ mkdir [opcion] NuevoDirectorio1 NuevoDirectorio2 …

6.1 Sintaxis
El comando mkdir responde a la siguiente sintaxis:
mkdir [opciones] [directorio1]
mkdir [opciones] [directorio1] [directorio2] [etc]

6.2 Principales opciones del comando mkdir


El comando mkdir tiene varias opciones, pero aquí solo citaremos algunas de las más importantes. Para ver más información
de este comando y sus opciones, podremos usar el man
$ man mkdir
Opciones:
Establece los permisos de los directorios creados a
modo. (Se verá más adelante cuando estudiemos los
permisos)
-m, --mode=modo
Ejemplo:
$ mkdir -m 755 personal
$ mkdir --mode=755 personal
Crea los directorios intermedios si es necesario
-p, --parents Ejemplo:
$ mkdir –p ./personal/facturas
Muestra un mensaje por cada directorio creado.
Ejemplo:
-v, --verbose $ mkdir –v ./personal/facturas
$ mkdir –vp ./personal/recibos/enero
$ mkdir –vm 755 ./fotos

6.3 Ejemplos del comando mkdir


➢ Crear directorios simples..
Podemos crear directorios simples en nuestro directorio actual o en cualquier otra ubicación del sistema. Para ello
usaremos rutas absolutas o relativas. Por ejemplo
$ mkdir-v personal
$ mkdir-v ./personal
$ mkdir-v ../Escritorio/personal

Sistemas Microinformáticos y Redes IES Doñana Página 9 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

➢ Crear directorios que contienen espacios en su nombre


Al igual que explicamos en un documento anterior, podremos usar la barra invertida (\), comilla simple (‘) o comilla
doblre (“) para indicar que el espacio formará parte del nombre del directorio. Por ejemplo:
$ mkdir-v “Mi primera carpeta personal”
$ mkdir-v ‘Mi segunda carpeta personal’
$ mkdir-v Mi\ segunda\ carpeta\ personal
$ mkdir-v ./Documentos/Redes\ Locales
$ mkdir-v “./Documentos/Redes Locales”
$ mkdir-v ./Documentos/”Redes Locales”
➢ Cómo crear varias carpetas con un solo comando:
El comando mkdir nos permite crear varias carpetas en el mismo comando. Dichas carpetas puedes estar en
ubicaciones diferentes, sólo es necesario indicar la ruta absoluta/relativa de su ubicación. Por ejemplo:
➢ $ mkdir-v personal fotos
$ mkdir-v ../Escritorio/Fotos ../Escritorio/Videos ./Documentos/Apuntes
➢ Como crear estructuras complejas rápidamente
Para crear estructuras complejas de una forma rápida podremos hacer uso de los caracteres llaves ({}). Vamos a
verlo con un ejemplo.
Supongamos que queremos crear la estructura de directorios adjunta:
Para crear esta estructura podremos ejecutar:
$ mkdir –p ./a/b ./a/c
O hacerlo más rápidamente de la siguiente manera:
$ mkdir –p ./a/{b,c}

Vamos a ver otros ejemplos para entenderlo mejor:

$ mkdir –vp ./a/{b,c/{d,e}}

$ mkdir -vp ./a/{b,c/{d/{dl,d2},e},f}

6.4 Actividades
Suponiendo que actualmente te encuentras en tu directorio personal, realiza las siguientes actividades.
18- Créate en tu directorio personal, una nueva carpeta llamada “tmp1” (usando ruta absoluta)

19- Créate en tu directorio personal una nueva capeta llamada “tmp2” y una carpeta “bórrame” en tmp1 (creada en una
actividad anterior)
Debes usar un único comando y rutas relativas

20- Con un único comando, y sin usar {}, crea en tmp1 un directorio “Apuntes” y dentro de este una carpeta “Sistemas”.

21- Con un único comando y haciendo uso de las llaves ({}) créate en tmp2 la siguiente estructura:

22- Con un único comando y haciendo uso de las llaves ({}) créate en tmp2 la
siguiente estructura (parte ya estará creada de la actividad anterior):

MUCHO CUIDADO CON LOS ESPACIOS (Debes usar: barra invertida o


comillas)

Sistemas Microinformáticos y Redes IES Doñana Página 10 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

23- Con un único comando y haciendo uso de las llaves ({}) créate en tmp3 la siguiente estructura:

7 Comando touch
El comando touch nos sirve para actualizar la fecha de acceso y modificación de un archivo/directorio. Por defecto pone la
fecha y hora actual.
En caso de que el fichero indicado en el comando no exista, lo creará, salvo que le indiquemos lo contrario.

7.1 Sintaxis
El comando touch responde a la siguiente sintaxis:
touch [opción]… archivo….

7.2 Principales opciones del comando touch


El comando touch tiene varias opciones, pero aquí solo citaremos algunas de las más importantes. Para ver más información
de este comando y sus opciones, podremos usar el man
$ man touch
Opciones:
Sólo modifica la fecha de acceso
Ejemplo:
-a
$ touch -a ./tema1.txt
$ touch -a ./act1.txt ./act2.txt
-c --no-create No crea ningún fichero nuevo
-d, --date=STRING $ touch -d 2022-03-25 ./act1.txt
Formato de fecha YYYY-MM-DD $ touch –date=2022-03-25 ./tema1.txt
Sólo cambia la fecha de modificación
Ejemplo:
-m
$ touch -m ./tema1.txt
$ touch -m ./act1.txt ./act2.txt

7.3 Actividades
Suponiendo que actualmente te encuentras en tu directorio personal, realiza las siguientes actividades.
24- Créate en un fichero vacío en tu directorio personal llamado alias1.txt

25- Créate, con un solo comando los ficheros alias1.txt en el escritorio y alias1.txt en Documentos

26- Créate en tu directorio personal los ficheros alias2.txt, alias3.txt,alias5.txt, de la forma más corta posible

27- Actualiza la fecha de acceso del fichero alias1.txt de tu directorio personal, para que sea la fecha y hora actual

28- Actualiza la fecha de modificación de los ficheros alias1.txt del Escritorio y alias1.txt de documentos, para que sea la
fecha y hora actual

29- Actualiza la fecha de acceso y modificación del fichero alias1.txt de tu directorio personal para que sea 31 de enero
de 2023

Sistemas Microinformáticos y Redes IES Doñana Página 11 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

8 Comodines
Los comodines son patrones de búsqueda. Un patrón es una secuencia de caracteres que nos permite seleccionar palabras,
frases o secuencias de caracteres.
Así, por ejemplo, un patrón, te puede ser de utilidad para seleccionar todos aquellos archivos de un directorio, que
comiencen por una determinada letra o secuencia de letras.

A continuación, vamos a ver un listado de los comodines más utilizados:

? →Representa un único carácter. Así por si ejecutas ls /dev/sda? te listará todos los archivos que sean igual a /dev/sda mas
un único carácter, que puede ser cualquier letra o número.

* →Este comodín representa desde nada, hasta cualquier cantidad de caracteres y dígitos.

[] → En este caso, este comodín representa un rango, ya sea de caracteres o de números. Siguiendo con el ejemplo anterior…

{} → Esto en realidad es más un conjunto de comodines separados por comas. Igual que en casos anteriores, podrías ejecutar
la siguiente orden…

[!] → El funcionamiento de este comodín es similar a [], salvo que representa justo lo contrario. Es decir, se trata de listar
todo aquello que no esté en ese rango.

8.1 Actividades
Suponiendo que actualmente te encuentras en tu directorio personal, realiza las siguientes actividades.
30- Muestra los archivos que hay en /dev que comienzan por tty y luego tienen dos caracteres

31- Muestra los archivos que hay en /dev que comienzan por tty y luego tienen dos caracteres, el primero de ellos
puede ser cualquier digito, pero el segundo sólo puede ser el 1 o 2

32- Muestra los archivos que hay en /dev que comienzan por tty y luego tienen dos caracteres, el primero de ellos
puede ser cualquier digito, pero el segundo no puede ser ni 1 ni 2

33- Muestra los archivos que hay en /dev que contienen un 1 por el medio del nombre (aunque también podría tenerlo
al principio o al final).

Sistemas Microinformáticos y Redes IES Doñana Página 12 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

9 Comando cp
El comando cp se usa para copiar objetos como archivos, directorios, enlaces simbólicos, etc. del sistema de archivos como
UNIX.
cp (viene del inglés copy -> copiar).

En este apartado vamos a ver algunos ejemplos de uso junto con los modificadores que lo acompaña.

9.1 Sintaxis
El comando cp responde a la siguiente sintaxis:
cp [opciones] file …
cp [OPTION]... [-T] ORIGEN DESTINO
cp [OPTION]... ORIGEN... DIRECTORIO_DESTINO
cp [OPTION]... -t DIRECTORIO_DESTIN ORRIGEN...

9.2 Principales opciones del comando cp


El comando cp tiene varias opciones, pero aquí sólo citaremos algunas de las más importantes. Para ver más información de
este comando y sus opciones, podremos usar el man
$ man cp
Opciones:
-d, -P, --no-dereference No sigue los enlaces simbólicos de los elementos ORIGEN
Si el destino existe intenta sobrescribirlo con los nuevos ficheros
-f, --force Ejemplo:
$ cp -f ./actividad1.txt ./Documentos
Muestra un mensaje de confirmación por cada fichero a antes de
sobrescribir.
Ejemplo:
-i, --interactiva
$ cp -i ./actividad1.txt ./Documentos
$ cp -i act1.txt act2.txt ./Documentos
$ cp -it ./Documentos act1.txt act2.txt
Crea un enlace duro en lugar de una copia
Ejemplo:
-l, --link
$ cp -l ./actividad1.txt ./Documentos
$ cp -lT ./actividad1.txt ./Documentos/act1.txt
-L, --dereference Sigue los enlaces simbólicos de los elementos ORIGEN
No sobrescribe ficheros:
Ejemplo:
-n, --no-clobber $ cp -n ./actividad1.txt ./Documentos
$ cp -nT ./actividad1.txt ./Documentos/act1.txt
$ cp -nt ./Documentos act1.txt act2.txt
Realiza una copia recursiva de directorios
-R, -r, --recursive Ejemplo:
$ cp -R ./Carpeta1 ./Escritorio
Crea un enlace simbólico en lugar de una copia
-s, --symbolic-link $ cp -s ./actividad1.txt ./Documentos
$ cp -sT ./actividad1.txt ./Documentos/act1.txt
Muestra información de lo que está haciendo en cada comento el comando.
-v, --verbose Ejemplo:
$ cp -v ./actividad1.txt ./Documentos

Sistemas Microinformáticos y Redes IES Doñana Página 13 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

10 Comando rm
El comando rm se usa para eliminar los ficheros, aunque por defecto no elimina directorios
rm (viene del inglés remove -> eliminar o borrar).

Nota: Para ser más precisos, rm elimina las referencias a los objetos del sistema de archivos

En este artículo vamos a ver algunos ejemplos de uso junto con los modificadores que lo acompaña, así como el cuidado que
se debe tener al momento de usarlo.

10.1 Sintaxis
El comando rm responde a la siguiente sintaxis:
rm [opciones] file …

10.2 Principales opciones del comando rm


El comando rm tiene varias opciones, pero aquí sólo citaremos algunas de las más importantes. Para ver más información de
este comando y sus opciones, podremos usar el man
$ man rm
Opciones:
Eliminará o borrará los archivos con fuerza, independientemente de sus permisos,
y también ignorará los archivos no existentes.
-f, --force
Ejemplo:
$ rm -vf ./Directorio1/*
Hace que el comando solicite confirmación al usuario antes de eliminar cada
archivo.
-i, --interactive
Ejemplo:
$ rm -vi ./Directorio1/*.txt
Preguntar una vez antes de eliminar más de tres archivos o cuando se eliminan de
forma recursiva. Esta opción es menos intrusiva que -i , pero aún brinda protección
contra la mayoría de los errores.
-I
Ejemplo:
$ rm -vI ./Directorio1
$ rm -vrI ../Documentos/Apuntes
Elimina directorios y su contenido de forma recursiva.
Ejemplo:
-R, -r, --recursive
$ rm -vr ./Directorio1
$ rm -vr ./Escritorio/Tema ../Documentos/apuntes/*.pdf
Eliminar directorios vacíos. Esta opción le permite eliminar un directorio sin
especificar -r | -R | --recursive , siempre que el directorio esté vacío.
En otras palabras, rm -d es equivalente a usar rmdir
-d, --dir
Ejemplo:
$ rm -vd ./micarpetavacia
$ rmdir ./micarpetavacia
Muestra información de lo que está haciendo en cada comento el comando.
-v, --verbose Ejemplo:
$ rm -v ./Descargas/*.deb

Sistemas Microinformáticos y Redes IES Doñana Página 14 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

11 Enlaces
En los siguientes enlaces puedes encontrar información del comando usado para crear enlaces
- https://es.joecomp.com/ln-command-linux
- https://www.freecodecamp.org/espanol/news/tutorial-de-enlace-simbolico-en-linux-como-crear-y-remover-un-
enlace-simbolico/
- https://www.fpgenred.es/GNU-Linux/ln.html

Sistemas Microinformáticos y Redes IES Doñana Página 15 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

12 Introducción a la redirección
Los flujos, la redirección y las tuberías son algunas de las herramientas más potentes de la línea de comandos en Linux. Linux
trata la entrada y salida de comandos como un flujo de datos que podemos manipular.
Normalmente la entrada estándar es el teclado y la salida estándar la pantalla, pero se pueden redirigir estos flujos de
entrada y salida hacia otros comandos o archivos.
La tubería ‘|’ se utiliza para redirigir la salida de un comando hacia otro. Esto supone una magnífica herramienta de conexión
entre comandos, lo cual permite realizar tareas complejas combinando varias herramientas sencillas. (Lo veremos más
adelante).
Para empezar a entender el redireccionamiento hay que comprender primero los diferentes tipos de flujos de entrada y
salida con los que podemos trabajar en Linux.
Todo comando en Linux posee tres canales básicos por donde fluye la información y estos canales son:
• Entrada Estándar / Standard Input (stdin): es el mecanismo por el cual un usuario le indica a los programas la
información que estos deben procesar. Esta información suele introducirse por el teclado.
Ejemplos:
$cat
$wc

Al ejecutar estos ejemplos sin argumentos el comando espera


a que el usuario inserte información para posteriormente
procesarla, dicha información de entrada debe ser
proporcionada por la entrada estándar, en este caso por el
teclado.
• Salida Estándar / Standard Output (stdout): es el método por el cual el programa puede comunicarse con el
usuario. Por defecto la salida estándar es la pantalla donde se ejecutan dichos comandos.
Ejemplos:
$ ls -l /etc/hosts /etc/passwd
-rw-r--r-- 1 root root 251 feb 23 15:52 /etc/hosts
-rw-r--r-- 1 root root 1635 feb 27 19:05 /etc/passwd

$ head -10 /etc/shells


# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh

Al terminar de procesar la información dada como argumentos el comando mostrará un mensaje en la pantalla
donde se ha ejecutado. Dicha pantalla o ventana será la salida estándar del comando ejecutado.
• Error Estándar / Standard Error Output ( stderr ): es utilizado para mostrar mensajes de error que surjan durante el
transcurso de su ejecución. Al igual que stdout, stderr será la pantalla donde se procesaron las instrucciones.
Ejemplos:
$ rm esteArchivoNoExiste
rm: no se puede borrar «esteArchivoNoExiste»: No existe el fichero o el directorio

$ rmdir /carpetaInexistente
rmdir: fallo al borrar «/carpetaInexistente»: No existe el fichero o el directorio
De igual forma stderr devolverá mensajes que indicarán los errores de los comandos ejecutados.

12.1 Redirección
Para redireccionar la salida estándar de un comando a un archivo se utiliza el símbolo > después del cual debe indicarse el
nombre del archivo que se creará:
$ cat /etc/passwd > copia_passwd

Sistemas Microinformáticos y Redes IES Doñana Página 16 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

Importante: Si el archivo copia_passwd existe previamente, se sobrescribirá. Para agregar los valores sin borrar el contenido
existente, se utiliza >> .
Para redireccionar el contenido de un archivo a la entrada estándar de un comando se utiliza <. En este caso, el flujo de datos
va de derecha a izquierda. Este tipo de redirección se suele utilizar con comandos como tr que no lee archivos directamente.
Normalmente se suele redireccionar la salida estandar pero si se quiere redireccionar la salida de errores podemos utilizar 2>
. Para redireccionar ambos simultáneamente, se usa &>.
$ ls x* z*
ls: z*: No such file or directory
xaa xab
Muestra un error porque no existe ningún archivo que empiece por z y muestra los archivos que empiezan por x
$ ls x* z* > stdout.txt 2> stderr.txt
Se ejecuta el mismo comando anterior, pero redirigiendo la salida de errores al fichero stderr.txt, y la salida estándar al
fichero stdout.txt
$ ls w* y*
ls: w*: No such file or directory
yaa yab
Se ejecuta ls de nuevo en el directorio y muestra un error porque no existe ningún archivo que empiece por w y muestra los
archivos que empiezan por y.
$ ls w* y* >> stdout.txt 2>> stderr.txt
Se ejecuta el mismo comando anterior pero redirigiendo la salida de errores al fichero stderr.txt, y la salida estándar al
fichero stdout.txt . Como estos ficheros contenían información se ha utilizado el redireccionador >> y 2>> para agregar el
contenido y no sobrescribirlo.
$ cat stdout.txt
xaa
xab
yaa
yab
Se muestra el contenido del fichero al que hemos redireccionado la salida estándar. Como se observa contiene la salida
estándar de las dos ejecuciones del comando ls.
$ cat stderr.txt
ls: z*: No such file or directory
ls: w*: No such file or directory
Se muestra el contenido del fichero al que ha redireccionado la salida de errores. Como se observa contiene la salida de
errores de las dos ejecuciones del comando ls.

12.2 Uso de /dev/null


En el siguiente enlace, puedes ver información interesante del dispositivo de salida /dev/null

https://blog.desdelinux.net/que-es-devnull-y-como-puede-ayudarte/

Sistemas Microinformáticos y Redes IES Doñana Página 17 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

13 Comando grep
El comando grep es considerado como uno de los comandos más útiles en Linux y sistemas operativos tipo Unix por su
potente buscador de patrones o palabras en archivos. Ya viene instalado en todos los sistemas Linux, por lo que no es
necesario instalarlo manualmente.
Su sintaxis es la siguiente:
grep [Opciones] [Cadena de búsqueda o patrón] [Ruta del archivo]
A primera vista, puede parecer un comando poco útil, sin embargo, los administradores de sistemas que manejan muchos
servicios con varios archivos de configuración, lo usan para consultar o buscar líneas específicas dentro de esos archivos.
Ahora que ya conocemos un poco más el uso que tiene, vamos a ver algunos ejemplos para entenderlo mejor.

13.1 Opciones principales


Podemos estudiar con más detalle las distintas opciones del comando grep, haciendo uso del man; sin embargo, las opciones
más importantes y comunes son:
• -i: la búsqueda no distinguirá entre mayúsculas/minúsculas. Es decir, si quieres buscar la palabra “coche”, será lo
mismo que “Coche”, “COCHE”, …
• -c: solo mostrará el número de líneas que coinciden con el patrón/palabra buscada
• -r: habilita la búsqueda recursiva en el directorio actual
• -R: como -r pero sigue todos los enlaces simbólicos.
• -n: Muestra las líneas que coinciden con el patrón buscado, precedida del número de línea que ocupa dentro del
fichero.
• -v: con esta opción, se nos muestran las líneas que no coinciden con el patrón que hemos buscado
• -w: fuerza que sólo encuentre palabras concretas
• -h: elimina el prefijo del nombre del archivo Unix en la salida.
• -l: muestra sólo nombres de archivos con las líneas seleccionadas.
• --color= never | always | auto.: muestra los patrones coincidentes en colores.

13.2 Ejemplos de usos


Como dijimos al comienzo, vamos a mostrar algunos ejemplos de de uso del comando grep para poder asimilar mejor su
funcionalidad.
• Buscar las líneas de todos los ficheros que hay en /etc que contenga el texto ssh:
$grep ssh /etc/*

• Buscar las líneas de todos los ficheros que hay en /etc que contenga el texto ssh (sin mostrar los mensajes de error
que se puedan producir:
$grep ssh /etc/* 2> /dev/null

• Buscar las líneas de todos los ficheros que hay en /etc que contenga el texto ssh ignorando mayúsculas /minúsculas
(sin mostrar los mensajes de error que se puedan producir:
$grep –i ssh /etc/* 2> /dev/null

Sistemas Microinformáticos y Redes IES Doñana Página 18 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

• Muestra el número de líneas de los ficheros que hay en /etc y comienzan por ld que contengan el texto ssh
ignorando mayúsculas /minúsculas (sin mostrar los mensajes de error que se puedan producir:
$grep –ic ssh /etc/ld* 2> /dev/null

• Muestra el número de líneas de los ficheros que hay en /etc y comienzan por ld que contengan el texto ssh
ignorando mayúsculas /minúsculas (sin mostrar los mensajes de error que se puedan producir:
$grep –ic ssh /etc/ld* 2> /dev/null
• Muestras las líneas del fichero /etc/group que contienen la palabra sudo
$grep sudo /etc/group

• Muestras las líneas del fichero /etc/group que contienen la palabra sudo indicando el número de línea en la que se
encuentra
$grep –n sudo /etc/group

• Muestras las líneas de los ficheros que hay en /etc y comienzan por gro que contienen la palabra sudo indicando el
número de línea en la que se encuentra

• Muestras las líneas de los ficheros que hay en /etc y comienzan por gro que contienen la palabra sudo indicando el
número de línea en la que se encuentra. (No debe aparecer el nombre del fichero en el que se ha encontrado)

• Muestras las líneas del fichero /etc/group que comienzan por sa (independientemente de cómo se haya escrito)
$grep –i ^sa /etc/group

Sistemas Microinformáticos y Redes IES Doñana Página 19 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

• Muestras las líneas del fichero /etc/group que contienen magarcia (independientemente de cómo se haya escrito)
$grep –i magarcia /etc/group

• Muestras las líneas del fichero /etc/group que comienzan por magarcia (independientemente de cómo se haya
escrito)
$grep –i ^magarcia /etc/group

• Muestras las líneas del fichero /etc/group que terminen por magarcia (independientemente de cómo se haya
escrito)
$grep –i magarcia$ /etc/group

• Muestras las líneas del fichero /etc/group que terminen por magarcia (independientemente de cómo se haya
escrito) y sin resaltar en color la coincidencia
$grep –i –color=never magarcia$ /etc/group

13.3 Ampliación
En el siguiente enlace, puede encontrar información más amplia sobre el comando grep
https://www.zeppelinux.es/el-comando-grep/#an_n3111

Sistemas Microinformáticos y Redes IES Doñana Página 20 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

14 Comando find
El comando find de Linux es extremadamente potente, esto es, si logras usarlo adecuadamente, no hay nada mejor para
hacer todo tipo de búsquedas de archivos y carpetas.

Hay por supuesto otros comandos de búsqueda como awk, sed y grep pero están más enfocados a buscar "dentro" de los
archivos. El comando find es mucho más útil para encontrar archivos y directorios.
La sintaxis es muy simple:
find [ opciones ][ ruta ] [ criterios_de_búsqueda ] [ acción ]
Opciones:
-P | -L -P Nunca sigue los enlaces simbólicos (opción por defecto). Cuando find examina o imprime
información sobre archivos, y el archivo es un enlace simbólico, se tomará la información del
enlace simbólico en sí, y no del destino al que apunta
-L Seguir enlaces simbólicos. Cuando find examina o imprime información sobre archivos, y el
archivo es un enlace simbólico, se tomará la información del archivo al que apunta el enlace y
no del enlace en sí.

Ruta
La ruta es cualquier directorio que se quiera indicar y desde donde se va a iniciar la búsqueda. Por ejemplo "/etc",
"/home/itteacher", "/", "."
Si no se indica la ruta, se toma en cuenta entonces el directorio activo, es decir el directorio de trabajo actual (.)

Nota: Es posible indicar más de un directorio de búsqueda. Por ejemplo:

$ find /home/itteacher /home/magarcia…..

Criterios de búsqueda
-type [f|d|l] Busca archivos de un tipo dado (f regular, d directorio, I enlace simbólico)
-name nombre Encuentra los archivos cuyo nombre coincida con el dado (-iname para que no distinga entre
mayúsculas y minúsculas).
-inmae nombre Encuentra los archivos cuyo nombre coincida con el dado (no distingue entre May / Mín)
-user usuario Encuentra los archivos cuyo propietario coincida con el indicado
-group grupo Encuentra los archivos cuyo grupo coincida con el indicado
-amin n Encuentra ficheros a los que se ha accedido hace n minutos
-mmin n Encuentra ficheros modificados hace n minutos
-perm mode Encuentra ficheros con los permisos indicados (octal o simbólico)
-size n[ckMG] Encuentra ficheros del tamaño indicado -- c (byte), k (kilobyte), M (megabyte), G (gigabyte)
-empty Encuentra ficheros vacíos.

Varias opciones aceptan argumentos numéricos (n). Estos pueden ser indicados de tres maneras posibles:
▪ +n → Busca valores mayor que n
▪ -n → Busca valores menor que n
▪ n → Busca exactamente el valor n

A continuación, vamos a ver algunos ejemplos para entender mejor este comando:

Sistemas Microinformáticos y Redes IES Doñana Página 21 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

Ejemplos
Busca todos los archivos cuyo nombre sea "apuntes" desde el
find -name apuntes
directorio actual
Igual que el anterior, pero sin distinguir entre mayúsculas y
find . -iname apuntes
minúsculas.
Busca todos los archivos cuyo nombre sea "apuntes" desde el
find /home/itteacher -name apuntes
directorio /home/itteacher
find / -name "[0-9]*" Busca ficheros desde el raíz que comiencen por un dígito
Busca ficheros desde el raíz que comiencen por un vocal (sin
find / -iname "[aeiou]*"
distinguir May/mín.)
find / -name "[aA]*.txt" Busca ficheros que empiezan por A ó a y terminan en .txt
Busca desde /home todos los ficheros que pertenecen a
find /home -user itteacher
itteacher
find /home -user itteacher –name “*tema*” Igual que el anterior, pero cuyo nombre contenga tema
find /etc /home –group smr Busca en el árbol /etc y /home, los ficheros que pertenecen al
grupo smr.
find / -mmin -30 -type f Busca ficheros regulares que han sido modificados en los últimos
30 minutos
find / -mmin 30 -type f Busca ficheros regulares que han sido modificados, exactamente,
hace 30 minutos
find / -mmin +15 -type d Busca directorios que han sido modificados hace más de 15
minutos
find / -mmin +10 -mmin -30 -type d Busca ficheros regulares que han sido modificados hace más de
10 minutos, pero menos de 30.

14.1 Comparando con -and, -or y -not


El comando find también incluye operadores booleanos que le proporcionan una mayor potencia.
Dichos operadores son -and o –a, -or o -o y -not o !

NOTA: Si usamos varios criterios, y no empleamos los comparadores lógicos, se usará el -and
Ejemplos de usos:
Busca todos los archivos que hay en /home y todos sus subdirectorios que comiencen con 'apuntes' (sin distinguir
mayúsculas/minúsculas), y que hayan sido modificados o cambiados en las últimas dos horas (120 minutos).
$ find /home -iname 'apuntes*' -and -mmin -120

Busca todos los archivos que hay en /home y todos sus subdirectorios que comiencen con 'tema' y después siga un ‘_’ o un ‘-‘
y que NO pertenezcan al usuario itteacher.
$ find /home -name 'tema[_-]*' -not -user itteacher

Busca todos los archivos que hay en /home y todos sus subdirectorios que contengan la palabra mayo, (sin importar si lleva
mayúsculas o minúsculas), o cualquier otro archivo que encuentre que pertenezca al grupo 'smr'.
$ find /home -iname '*mayo*' -or -group smr

Sistemas Microinformáticos y Redes IES Doñana Página 22 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

A continuación, vamos a ver algunos ejemplos más del comando find


find /home -size +15000k -name "*.jpg" Busca archivos mayores a 15 megas de tipo jpg
find . -size +1000k -and -size -10000k Busca archivos con tamaño comprendido entre 1MB y 10MB
find . -size -1000k -or -size +10000k Busca archivos con tamaño inferior a 1MB, o mayores que 10MB
find . –empty Busca archivos vacíos
find . -size 0c
Busca archivos que tienen todos los permisos para todos los
find . -perm 777
usuarios
Busca los ficheros que tienen los permisos 650, o los que
find . -perm 650 –o -user itteacher
pertenezcan al usuario itteaher
find . -perm 664 Busca los ficheros que tienen los permisos 664
Busca los archivos que tengan permiso de lectura y escritura
para su propietario y grupo, y que otros usuarios pueden leer, sin
find . -perm -664
tener en cuenta cualquier bit de permiso adicional (por ejemplo,
el ejecutable)
Busca archivos con permisos de escritura para su propietario o
find . -perm /220
su grupo. (con que sea para uno de los dos, ya lo mostraría).
find . -perm 664 Busca los ficheros que NO tienen los permisos 664

14.2 Utilizar el comando find de Linux para encontrar y procesar archivos


El comando find también nos permite buscar y hacer alguna acción con los ficheros que encuentra y que cumplen con los
criterios de búsqueda. Por ejemplo, si queremos que todos los archivos que encuentre con permiso 777 pasen a 755, es decir
que sólo pueda modificar el usuario del directorio, deberemos usar find del siguiente modo:

find /var/www -perm 777 -exec chmod 755 {} \;

Ten en cuenta que la ejecución del comando se produce sin preguntar. Dependiendo de los parámetros de búsqueda
seleccionados y del comando dado, la ejecución del comando find con el parámetro “-exec” puede causar graves daños al
sistema.

Para limitar el riesgo, existe el parámetro “-ok” que es similar al parámetro “-exec”. Esto fuerza la confirmación interactiva
del procesamiento de cada archivo individual encontrado:

find /var/www -perm 777 -ok chmod 755 {} \;

Sistemas Microinformáticos y Redes IES Doñana Página 23 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

15 Tuberías
Quizás la utilidad más potente de la entrada/salida estándar es la posibilidad de encadenar comandos a través del uso de
“tuberías” (pipes), que permiten que la salida de un comando sirva como entrada a otro.
Por ejemplo, si queremos ver el contenido del directorio /usr/bin podemos utilizar el comando ls como sigue:
$ ls /usr/bin
El problema es que este directorio contiene demasiados ficheros y éstos desaparecen de la pantalla muy rápidamente al
visualizarlos. Para solucionarlo, sería útil tener alguna forma de visualizar textos que dividiera la visualización en páginas a
través de las cuales pudiéramos navegar con mayor comodidad.
El comando more realiza una función como la que hemos descrito. Así, si deseamos visualizar página a página el contenido de
un fichero llamado README situado en /usr/share/doc/, podemos hacer lo siguiente:
$ more /usr/share/doc/README
El comando visualiza el contenido del fichero, pero deteniéndose cuando el texto ocupa toda la página e indicando con un
texto en la parte inferior el porcentaje del total que se ha mostrado hasta el momento. Pulsando la barra espaciadora
podemos ir viendo el resto de páginas y, pulsando la tecla ‘q’ finalizar la visualización.
Aunque el comando more parece adecuado para el problema que planteamos antes, la cuestión es ¿cómo lo aplicamos al
resultado de visualizar el contenido de un directorio con ls si necesita que le proporcionemos un fichero como argumento? La
solución consiste en encadenar la salida del comando ls y usarla como entrada para el comando more a través de una
“tubería”. Para ello utilizaremos el símbolo ‘|’de la siguiente forma:
$ ls /usr/bin | more
Como resultado, obtenemos la salida que proporciona ls pero dividida en páginas.

Con el comando less puedes hacer lo mismo que con more, pero con la ventaja de que puedes avanzar y retroceder en el
archivo. Prueba a repetir los ejemplos aquí usados, cambiando more por less.

Supongamos ahora que queremos ver el contenido del directorio /usr ordenado inversamente por nombre. Para ello
podremos conectar la salida del comando ls con el comando sort.
$ ls /usr | sort –r

En el caso d que la información obtenida como resultado, fuera muy extensa, podríamos pasarlo a un paginador (more o less)
$ ls /usr | sort –r | more

Puedes utilizar el operador | (pipe) entre dos comandos para dirigir el stdout del primero al stdin del segundo. Podrás
construir un conducto más largo agregando más comandos y más operadores de conductos. Cualquiera de los comandos
puede tener opciones o argumentos.
command1 | command2 paramater1 | command3 parameter1 parameter2 | command4

Sistemas Microinformáticos y Redes IES Doñana Página 24 de 25


Configuración de Sistemas Operativos Sistemas Operativos Monopuesto

Sistemas Microinformáticos y Redes IES Doñana Página 25 de 25

También podría gustarte