UT5_ Tareas básicas con Linux_GNU
UT5_ Tareas básicas con Linux_GNU
UT5_ Tareas básicas con Linux_GNU
Comandos de ayuda:
help: Información básica sobre un comando.
man: Manual de referencia completo de un comando.
--help: Ayuda integrada en muchos comandos.
info: Información alternativa cuando. man es insuficiente.
apropos: Búsqueda de comandos por palabra clave en las páginas de manual.
1
Permisos de archivo:
Niveles de permisos: Propietario (u), grupo (g), otros (o).
Tipos de permisos: Lectura (r), escritura (w), ejecución (x).
Directorios:
− Lectura: Listar contenido.
− Escritura: Añadir o eliminar archivos.
− Ejecución: Entrar en el directorio.
Representación de Permisos:
Numérica (octal):
• Lectura: 4
• Escritura: 2
• Ejecución: 1
• Sin permiso: 0
chmod 760 archivo.txt (propietario: rwx, grupo: rw, otros: -)
+ Agregar un permiso
- Quitar un permiso
Ejemplos:
1).Agregar permisos de escritura para el grupo:
chmod g+w archivo.txt
2).Quitar permisos de lectura para otros:
chmod o-r archivo.txt
3).Asignar permisos exactos para el propietario:
chmod u=rwx archivo.txt
2
Aplicar Cambios Recursivamente (Directorios)
Para cambiar permisos en un directorio y todo su contenido:
chmod -R 755 directorio/
Metacaracteres
Son caracteres especiales con significado particular en la línea de comandos.
Facilitan la manipulación de archivos, redirecciones y otras tareas.
*: Se utiliza para hacer coincidir cualquier cadena de caracteres en la expansión de
nombres de archivo (globbing). Por ejemplo, `*.txt` coincide con todos los archivos
que tienen extensión ".txt" en un directorio
?: Representa un único carácter en la expansión de nombres de archivo. Por
ejemplo, `file?.txt` coincidiría con archivos como "file1.txt", "file2.txt", etc
[]: Define un conjunto de caracteres y coincide con cualquier carácter único dentro
de ese conjunto. Por ejemplo, `[aeiou]` coincidiría con cualquier vocal
{}: Se utiliza para generar combinaciones o expansiones de cadenas. Por ejemplo,
`echo {1,2,3}` mostrará "1 2 3". También puede usarse para rangos como `echo
{1..5}` para mostrar "1 2 3 4 5".
$: Indica el inicio de una variable en la mayoría de los casos. Por ejemplo, `$HOME`
representa el directorio de inicio del usuario.
~: Representa el directorio de inicio del usuario. Por ejemplo, `~/Documents` se
expandirá al directorio "Documents" en el directorio de inicio.
\: Se utiliza para escapar el significado especial de un carácter. Por ejemplo, `\$` se
interpreta como el carácter "$" en lugar de una variable.
Comillas:
Comillas dobles ("): Permiten la expansión de variables y algunos metacaracteres.
Ejemplo:
nombre="Juan"; echo "Hola, $nombre"
Salida: Hola, Juan.
Comillas simples ('): Evitan la expansión, tratan todo como texto literal.
Ejemplo:
nombre="Juan"; echo 'Hola, $nombre'
Salida: Hola, $nombre.
Redireccionamiento
El redireccionamiento permite manipular la entrada y salida de los comandos en la
terminal.
Operadores:
>: Redireccionar salida estándar (sobrescribe).
>>: Redireccionar salida estándar (añade).
<: Redireccionar entrada estándar.
|: Tubería (conectar comandos).
2>: Redireccionar errores estándar.
3
&>: Redireccionar salida y errores.
/dev/null: Descartar la salida o entrada.
Tuberías
Las tuberías conectan la salida de un comando con la entrada de otro. Se utiliza el
operador |.
Permiten realizar tareas complejas combinando comandos simples.
Ejemplos:
Contar archivos: ls -l | wc -l
Filtrar procesos: ps aux | grep "nombre_de_usuario"
Ordenar y mostrar líneas: cat archivo.txt | sort | head
Encontrar archivos grandes: du -h | sort -rh | head
Administración de Discos
Particiones:
Las particiones son divisiones lógicas dentro de una unidad de almacenamiento,
como si dividiéramos un pastel en porciones.
Cada partición funciona como una unidad independiente, lo que permite organizar
los datos de manera eficiente.
Volúmenes:
Los volúmenes son la forma en que el sistema operativo gestiona y accede a las
particiones. Un volumen puede ser una única partición o un conjunto de ellas,
incluso abarcando varios discos. Se formatean con un sistema de archivos
específico (como ext4 o NTFS). El sistema operativo monta los volúmenes al iniciar,
permitiéndonos acceder a los datos.
Beneficios de Particiones y Volúmenes:
Organización: Las particiones y volúmenes facilitan la gestión y organización de los
datos.
Rendimiento: Asignar particiones a tareas específicas puede mejorar el rendimiento
del sistema.
Seguridad: Almacenar datos sensibles en particiones separadas aumenta la
seguridad.
4
Eliminación de particiones:
Abrir gdisk: sudo gdisk /dev/sdX.
Ver las particiones existentes: Presionar p.
Seleccionar la partición a eliminar:
• Presionar d.
• Elegir el número de la partición.
• Escribir los cambios: Usar w para guardar y salir.
Crear sistemas de archivos
El comando mkfs (abreviatura de Make File System) se utiliza en sistemas
operativos basados en Unix/Linux para crear un sistema de archivos en un
dispositivo de almacenamiento como un disco duro, una partición o una unidad USB
El comando mkfs permite especificar el tipo de sistema de archivos que se desea
crear y el dispositivo donde se aplicará.
Sintaxis General:
mkfs.<tipo_de_sistema_de_archivos> [opciones] <dispositivo>
Ejemplo: Crear un sistema de archivos ext4 en la partición /dev/sda1:
mkfs.ext4 /dev/sda1
Montaje de unidades
El montaje asocia un sistema de archivos de una unidad a un directorio específico,
permitiendo acceder a sus archivos.
Comando mount:
• mount /dev/sdX /mnt/usb
Monta un dispositivo en /mnt/usb.
/etc/fstab: Configura los montajes automáticos al iniciar el sistema
Gestión de software repositorios
Linux utiliza repositorios para centralizar la instalación, desinstalación y
actualización de software.
Los paquetes son los componentes del software.
Un programa suele ser un conjunto de paquetes.
5
Enlaces en Linux
En Linux, los enlaces son una forma de acceder a archivos o directorios utilizando
un alias o referencia. Existen dos tipos principales de enlaces:
● Enlaces simbólicos (soft links): Son referencias que apuntan al archivo o
directorio original.
● Enlaces duros (hard links): Son otra entrada en el sistema de archivos que
apunta a los mismos datos que el archivo original.
Crear un enlace simbólico:
Usa el comando ln -s para crear un enlace simbólico.
Sintaxis: ln -s archivo_original enlace_simbólico
Ejemplo de uso real: Supongamos que tienes un programa instalado en
/opt/programa/bin/programa y quieres acceder a él fácilmente desde cualquier
directorio:
ln -s /opt/programa/bin/programa /usr/local/bin/programa
Ahora puedes ejecutar el programa directamente escribiendo programa en la
terminal.
Crear un enlace duro
Usa el comando ln para crear un enlace duro.
Sintaxis: ln archivo_original enlace_duro
Ejemplo de uso real: Supongamos que tienes un archivo grande llamado backup.tar
y deseas mantenerlo accesible desde dos ubicaciones diferentes, sin duplicar el
espacio en disco: ln backup.tar /home/usuario/copias/backup.tar
Ahora puedes acceder al archivo desde ambas ubicaciones, y cualquier cambio que
hagas en uno se reflejará en el otro.
Verificar enlaces
Usa el comando ls -l para verificar enlaces.
Sintaxis: ls -l
Ejemplo de salida:
lrwxrwxrwx 1 usuario usuario 12 nov 29 12:00 enlace.txt -> documento.txt
Nota: Los enlaces simbólicos se identifican con una flecha (->). Los enlaces duros
no muestran esta referencia, ya que comparten los mismos datos que el archivo
original.
6
Qué ocurre al borrar enlaces o mover archivos
Borrar un enlace simbólico
Al borrar un enlace simbólico, solo se elimina el alias que apunta al archivo o
directorio original. El archivo o directorio original permanece intacto.
7
Limpiar paquetes no utilizados
sudo apt autoremove
Limpiar el caché de paquetes descargados
sudo apt clean
Usar Snap para instalar Visual Studio Code:
Snap es una herramienta que permite instalar aplicaciones fácilmente en Ubuntu,
como si fuera una tienda de aplicaciones. Es una alternativa a usar los comandos
que hemos intentado antes.
Pasos para instalar Visual Studio Code con Snap:
1. Verificar si Snap está instalado (snap --version)
2. Instalar Snap (sudo apt install snapd -y)
3. Instalar Visual Studio Code con Snap (sudo snap install --classic code)
4. Verificar la instalación (code --version)
5. Abrir Visual Studio Code (code)
Gestión de Repositorios:
¿Qué significa PPA?
Un PPA (Personal Package Archive) es un repositorio mantenido por
desarrolladores externos o comunidades que ofrecen versiones de software no
disponibles en los repositorios oficiales. Son útiles para obtener versiones más
recientes de paquetes específicos.
Listar los repositorios
-Lista los repositorios generales configurados.
cat /etc/apt/sources.list
-Lista los archivos específicos de repositorios adicionales.
ls /etc/apt/sources.list.d/
8
Ver el historial de actualizaciones
Ver el historial de actualizaciones
cat /var/log/apt/history.log
Buscar actualizaciones específicas en el historial
grep "upgrade" /var/log/apt/history.log
Ejercicios resueltos
-Usar ls para explorar directorios
Mostrar el contenido del directorio /etc.
ls /etc
-Listar todos los archivos incluyendo ocultos con ls
Mostrar todos los archivos, incluyendo los ocultos, en el directorio actual.
ls -a
-Mostrar el contenido de un directorio en formato largo con ls
Listar los archivos en formato largo y con detalles adicionales en el directorio /var.
ls -l /var
-Cambiar directorios con cd
Moverte al directorio documentos desde tu directorio actual.
cd documentos
-Volver al directorio anterior con cd
Regresar al directorio anterior al que estabas.
cd -
-Ir al directorio raíz con cd
Moverte al directorio raíz del sistema de archivos.
cd /
-Renombrar un archivo con mv
Renombrar el archivo notas.txt a notas_antiguas.txt en el directorio actual.
mv notas.txt notas_antiguas.txt
-Mover un archivo a otro directorio con mv
Mover el archivo resumen.txt al directorio /home/usuario/documentos.
mv resumen.txt /home/usuario/documentos
-Mover varios archivos con mv
Mover los archivos a.txt, b.txt y c.txt al directorio archivos.
mv a.txt b.txt c.txt archivos/
-Eliminar un archivo con rm
Eliminar el archivo temporal.txt en el directorio actual.
rm temporal.txt
-Eliminar un directorio vacío con rm
Eliminar el directorio vacío pruebas.
rm -d pruebas
9
-Eliminar un directorio con contenido con rm
Eliminar el directorio datos y todo su contenido.
rm -r datos
-Copiar un archivo con cp
Copiar el archivo datos.txt al directorio respaldo.
cp datos.txt respaldo/
-Copiar varios archivos con cp
Copiar los archivos a.txt, b.txt y c.txt al directorio copias.
cp a.txt b.txt c.txt copias/
-Copiar un directorio con cp
Copiar el directorio proyectos y todo su contenido al directorio respaldo.
cp -r proyectos respaldo
-Mostrar tu ubicación actual con pwd
Verificar el directorio donde te encuentras trabajando actualmente.
pwd
-Mostrar el directorio de trabajo tras cambiar de directorio
Cambiar al directorio /usr/local y luego verificar tu ubicación con pwd.
cd /usr/local
pwd
Creación de una Estructura de Directorios y Archivos:
Crea un directorio llamado proyecto dentro de tu directorio personal.
mkdir ~/proyecto
Dentro de proyecto, crea tres subdirectorios: docs, src y bin.
mkdir ~/proyecto/docs
mkdir ~/proyecto/src
mkdir ~/proyecto/bin
Crea un archivo vacío llamado README.md dentro del directorio docs.
touch ~/proyecto/docs/README.md
Crea un archivo llamado main.sh dentro del directorio src.
touch ~/proyecto/src/main.sh
Verifica la estructura de directorios y archivos usando el comando tree (si está
disponible) o ls.
tree ~/proyecto
Si tree no está disponible:
ls -R ~/proyecto
10
Cambia los permisos del archivo README.md para que todos puedan leerlo, pero
solo el propietario pueda escribir en él, utilizando notación octal.
chmod 644 ~/proyecto/docs/README.md
Haz que el directorio bin sea accesible (entrar y listar su contenido) solo para el
propietario, usando notación simbólica.
chmod u+rwx,go-rx ~/proyecto/bin
Misceláneo:
Busca comandos relacionados con la palabra clave "archivo" usando apropos.
apropos archivo
Lista todos los archivos y directorios (incluidos los ocultos) dentro del directorio /etc
ls -a /etc
Crea un archivo vacío llamado notas.txt en el directorio actual.
touch notas.txt
Edita el archivo config.txt con el editor nano. Si no existe, créalo. Incluye el día y tu
nombre de usuario
nano config.txt
Verifica los permisos actuales del archivo notas.txt.
ls -l notas.txt
Metacaracteres:
Lista todos los archivos y directorios en /etc que comiencen con la letra "h".
ls /etc/h*
Muestra todos los archivos en el directorio /var/log con extensiones de archivo de
tres caracteres (por ejemplo, .log, .txt, etc.).
ls /var/log/*.???
Lista todos los archivos en /home que contengan un número en su nombre.
ls /home/*[0-9]*
Lista los archivos en /usr/bin que comiencen con "a" o "b".
s /usr/bin/[ab]*
Lista todos los archivos en /etc cuyo nombre tenga exactamente 5 caracteres.
ls /etc/?????
Lista los archivos ocultos en tu directorio personal.
ls -a ~/.*
Encuentra todos los archivos en /home que comiencen con "test" y terminen con un
número.
ls /home/test*[0-9]
Lista los archivos en /var/log que no tengan una extensión.
ls /var/log/!(*.*)
Lista los archivos y directorios en /usr que contengan un punto en su nombre.
ls /usr/*.*
11
Busca archivos en /opt cuyo nombre comience y termine con la misma letra.
ls /opt/*[a-z]*[a-z]
12
Otras posibles preguntas de examen:
¿Qué comando se utiliza para cambiar el propietario de un archivo o directorio en
Linux?
chown
Borra los ficheros cuyo nombre termine con una vocal del subdirectorio linux,
solicitando confirmación. Usa rutas absolutas. Los posibles errores deben quedar
registrados en un fichero llamado errores.txt en el directorio /tmp
rm ~/sistemas/linux/*[aeiouAEIOU] -i > /tmp/errores.txt
Visualiza el contenido del subdirectorio /etc con formato largo y recursivo, usando
ruta absoluta.
ls /etc -lR /etc
Copia el subdirectorio /tmp las entradas que empiecen por M a la ruta actual. Usa
ruta absoluta para /tmp y relativa para la actual.
cp /tmp/M*
Indica la orden completa para averiguar cuántas entradas existen en el subdirectorio
sistemas. Usa rutas relativas.
ls -A sistemas | wc -l
Desde tu home. Renombra el fichero iPoco1 por linX20. Usa rutas relativas
mv sistemas/linux/iPoco1 sistemas/linux/linX20
Estando en el directorio /home/userxxx, copia los archivos que empiecen por s y
terminan en h del directorio /urs/include al directorio compi_c
cp /usr/include/s*h compiladores/compi_c
¿Cómo eliminarías el subdirectorio linux usando rutas absolutas?
rm -r ~/sistemas/linux
13