Mostrando entradas con la etiqueta grep. Mostrar todas las entradas
Mostrando entradas con la etiqueta grep. Mostrar todas las entradas

domingo, 6 de julio de 2025

Sistemas Operativos 5.- Administración de dispositivos


 ¿Te pierdes entre tantos temas? 📚✨ Descubre todo lo que ofrece este blog en un solo vistazo [👉 Ver índice completo]

ADMINISTRACIÓN DE DISPOSITIVOS.


INTRODUCCIÓN.

Como vamos a tratar a continuación de la administración de dispositivos, antes de seguir con el resto del tutorial, es necesario añadir un nuevo disco virtual a la máquina virtual que tengamos. A continuación te explico cómo hacerlo paso a paso, tanto si usas VMware como VirtualBox:


En VMware (Workstation o Player)

  1. Apaga la máquina virtual si está encendida.

  2. Selecciona la máquina virtual en el panel principal.

  3. Haz clic en "Edit virtual machine settings" (Editar configuración de la máquina).

  4. En la ventana que se abre, haz clic en "Add...".

  5. Selecciona "Hard Disk" y haz clic en "Next".

  6. Elige el tipo de disco (por defecto está bien) y pulsa "Next".

  7. Elige "Create a new virtual disk" y pulsa "Next".

  8. Elige el tamaño del disco (por ejemplo, 5 GB), y marca "Store virtual disk as a single file" si lo prefieres.

  9. Pulsa "Finish" y luego "OK" para cerrar la configuración.

💡 Consejo: El nuevo disco aparecerá como /dev/sdb, /dev/sdc, etc., dentro de Linux, dependiendo del orden de los discos.

En VirtualBox

  1. Apaga la máquina virtual si está encendida.

  2. Selecciona la máquina en la lista y haz clic en "Configuración" (icono de engranaje).

  3. Ve a la sección "Almacenamiento".

  4. En el árbol de almacenamiento, selecciona el controlador SATA (o IDE si lo estás usando).

  5. Haz clic en el icono de disco con un símbolo "+" (Agregar disco duro).

  6. Elige "Crear un nuevo disco" y haz clic en "Siguiente".

  7. Selecciona el tipo de disco (por defecto, VDI) y pulsa "Siguiente".

  8. Elige almacenamiento dinámico o tamaño fijo, según prefieras.

  9. Define el tamaño (por ejemplo, 5 GB) y pulsa "Crear".

  10. Finalmente, haz clic en "Aceptar" para guardar los cambios.

El sistema de archivos de Debian, Ubuntu y Similares.

En Ubuntu (y Linux en general), el sistema de archivos tiene una estructura jerárquica que comienza en la raíz / y se organiza en carpetas y subcarpetas. A diferencia de Windows, no se usan letras como C: o D:, sino puntos de montaje que se asignan a cada disco o partición.

Todos los discos y dispositivos se representan como archivos especiales en el directorio /dev. Por ejemplo:

  • /dev/sda → Primer disco (normalmente el principal)

  • /dev/sda1 → Primera partición del primer disco

  • /dev/sdb → Segundo disco

  • /dev/sdb1 → Primera partición del segundo disco

  • /dev/sdb2 → Segunda partición del segundo disco

  • Y así sucesivamente...

🗂️ Tipos comunes de sistemas de archivos en Linux:

  • ext4: El más usado en Linux, especialmente para la raíz /.

  • iso9660: Para CD-ROM.

  • msdos y vfat: Compatibles con sistemas FAT de Windows.

  • ntfs: Para particiones NTFS de Windows.

  • nfs: Para compartir archivos en red.

  • udf: Para discos CD-RW y DVD.

  • vboxsf: Para compartir carpetas con el host en VirtualBox.


AÑADIR CORRECTAMENTE UN DISCO DURO.

Si hemos añadido el nuevo disco duro correctamente a nuestra máquina Linux, lo primero que tenemos que comprobar es que efectivamente este nuevo disco duro está añadido. Para ello desde la consola de Linux ejecutaremos como root el comando:


  • sudo fdisk -l //nos muestra los discos duros y particiones del sistema.


sudo fdisk -l

Como ves en mi ejemplo tengo el disco principal /dev/sda con tres particiones y el nuevo disco duro que he añadido, que aparece correctamente conectado como /dev/sdb y que por el momento no tiene ninguna partición.


TRABAJAR CON LAS PARTICIONES.

Todas las operaciones que podemos realizar con las particiones se hace a través del comando fdisk.


Crear una partición.

Para crear una partición usaremos el comando:

sudo fdisk disco_duro. //en mi caso /dev/sdb

Vamos a ver con un ejemplo como crear dos particiones de 2,5 gb cada una.

sudo fdisk disco_duro

Como ves la opción a elegir es la “n” de nueva y prácticamente basta con escoger las opciones por defecto. En mi caso solo he modificado el tamaño de las particiones para que sean aproximadamente de 2,5GB. El programa almacena los cambios en memoria, pero no los ejecuta realmente hasta que no tecleas la letra “w” (escribir cambios).

Modificar el tipo de sistema de archivos de cada partición.

Por defecto cuando creas una partición esta es de tipo Linux y está en memoria hasta que se graban con la opción “w”. Los sistemas más utilizados son :

ext4 → Linux → 83

ntfs → Windows → 07

Recuerda estos números porque los vamos a necesitar. Realmente no porque en el transcurso del proceso puedes teclear la opción “L” para ver los tipos de archivos admitidos, pero es más rápido saberlos. En el ejemplo anterior voy a poner que la primera partición /dev/sdb1 sea, por ejemplo, exfat y la segunda partición del nuevo disco /dev/sdb2 sea de tipo linux ext4.

El comando es:

sudo fdisk disco_duro // en mi caso /dev/sdb

En este caso la opción a elegir es “t” de tipo.

fdisk opcion t

Borrar una partición.

Para borrar una partición usaremos el comando:

sudo fdisk disco_duro

y utilizaremos la opción “d” de delete/borrar. El sistema nos pedirá el número de partición a borrar y cuando estemos seguros de los cambios lo confirmaremos con la opción “w”

Por ejemplo para borrar la partición primera del disco que he añadido:

borrar particion

En resumen, para trabajar con las particiones de un disco duro usaremos siempre el comando:

sudo fdisk disco_duro

con las opciones:

  • n” → crear una nueva partición.

  • d” → borrar una partición.

  • p” → ver las particiones primarias.

  • l” → listas de sistemas de archivos.

  • w” → guardar los cambios.

  • q” → salir del programa sin guardar los cambios.

Una vez creadas las particiones en un disco nuevo, para poder utilizarlas tenemos aunque hacer algunas cosas. La primera de ellas es dar formato a estas particiones.

FORMATEAR UNA PARTICIÓN.

En el ejemplo que estoy utilizando, tengo solamente una partición que esta preconfigurada para linux – ext4. Sin embargo, por la razón que sea, a mi me interesa formatearla en ntfs. Para ello usaremos el comando:

sudo mkfs -t tipo_formato partición_a_formatear

Por ejemplo:

formatear una partición

El tipo puede ser el que ten interese, ext4, ntfs etc, también puedes utilizar los números que vimos antes el 83 para ext4 o el 07 para ntfs.

En lugar de usar mkfs -t tipo, puedes usar directamente los comandos correspondientes a cada sistema. Aquí tienes una tabla con los más comunes:

Sistema de archivos

Comando

Ejemplo

ext2

mkfs.ext2

mkfs.ext2 /dev/sdX1

ext3

mkfs.ext3

mkfs.ext3 /dev/sdX1

ext4

mkfs.ext4

mkfs.ext4 /dev/sdX1

XFS

mkfs.xfs

mkfs.xfs /dev/sdX1

Btrfs

mkfs.btrfs

mkfs.btrfs /dev/sdX1

ReiserFS

mkfs.reiserfs

mkfs.reiserfs /dev/sdX1

FAT32

mkfs.vfat

mkfs.vfat -F 32 /dev/sdX1

exFAT

mkfs.exfat

mkfs.exfat /dev/sdX1

NTFS

mkfs.ntfs o mkntfs

mkfs.ntfs /dev/sdX1 o mkntfs /dev/sdX1

📌 Reemplaza /dev/sdX1 por la partición que quieras formatear. Asegúrate de que no esté montada antes de proceder.

Pero para poder trabajar con las particiones, además de crearlas y formatearlas tenemos que montarlas.

Montaje de las particiones.

Ya casi lo tenemos todo listo para poder utilizar la partición, solo nos queda montarla. Vamos a ver como se puede hacer como root y como un usuario normal.

Como Root.

Lo primero que vamos a ver es si tenemos la partición creada y formateada correctamente. Para ello podemos utilizar el comando lsblk o sudo fdisk -l.

lsblk

Como ves en la imagen tengo la partición segunda del disco 2 (sdb2) creada correctamente

En segundo lugar crearemos un punto de montaje, es decir crearemos una carpeta desde donde se accederá al contenido de la partición. Por ejemplo:

sudo mkdir /mnt/miparticion

Para finalizar montaremos la partición en ese directorio con el comando:

sudo mount partición punto_montaje

En mi ejemplo sería:

montaje de una partición

Para comprobar que la unidad está montada correctamente podemos utilizar el comando lsblk o df -h o mount | grep nombre_particion.

ver si una partición está montada

La partición ya está montada. No obstante como la ha montado el root a no ser que modifiques los permisos del directorio, los miembros del grupo root y el resto solo podrán leer y ejecutar, ya que los permisos por defecto cuando creas un directorio en Linux son:

drwxr-xr-x

Es decir el root puede hacer todo lo que quiera sobre el directorio, y el grupo y el resto pueden leer y ejecutar, pero no modificar el contenido.

Al final de este post pondré como puedes modificar los permisos de los archivos o directorios con el comando chmod siendo root.

Para desmontar una partición usaremos el comando:

sudo umount [partición|punto_montaje]

En mi ejemplo bien:

sudo umount /dev/sdb2

o

sudo umount /mnt/miparticion

Recalcar que para desmontar una partición no puedes estar dentro del punto de montaje, es decir no puedes estar dentro de ese directorio o usando la misma.

Como Usuario.

Lo más importante es saber que, un usuario monta lo que le permite el root en el fichero /etc/fstb (solo modificable por el root)

La estructura de la línea que debemos añadir al fichero /etc/fstab para permitir montar una partición al usuario es la siguiente:

partición punto de montaje tipo características

Siendo las características que podemos poner las siguientes:

auto/noauto → para que la partición se monte automáticamente al iniciar el sistema.

user/nouser → permite que la partición pueda ser montada por un usuario o que no pueda

ro/rw → read only (solo para lectura) o read write (leer y escribir)

exec/noexec → permite programas ejecutables o no

defaults → opciones por defecto. Las opciones por defecto son las siguientes:

Opción

Significado

rw

Montar con permisos de lectura y escritura.

suid

Permitir la ejecución de binarios con el bit setuid o setgid.

dev

Interpretar dispositivos especiales (como /dev/null) en la partición.

exec

Permitir la ejecución de binarios.

auto

Montar automáticamente al arrancar el sistema (a menos que se use noauto).

nouser

Solo root puede montar la partición.

async

Escritura asíncrona (mejora el rendimiento).

Vamos a ver en mi ejemplo como modificar el fichero /etc/fstab para que se monte automáticamente y cualquier usuario pueda leer y escribir en el. Para ello haré que mi partición de /dev/sdb2 sea de tipo ext4 y luego haré lo siguiente:

  1. Como root creamos el punto de montaje. Para que cualquier usuario pueda crear algo en esa partición hay que darle permisos de escritura +w o 777 a los grupos y a otros en la carpeta que albergara el punto de montaje.

    crear directorio para el punto de montaje


  2. Una vez creada la carpeta que contendrá el punto de montaje, editamos como root el archivo /etc/fstab, la estructura es la misma siempre:

                        Partición -> Punto de Montaje ->  tipo -> características

archivo fstab

Guardamos los cambios y o bien reiniciamos el sistema o como root podemos ejecutar el comando:

sudo mount -a // que montará automáticamente todo lo que este en el archivo fstab

  1. y ya podemos con cualquier usuario crear archivos nuevos o carpetas en el punto de montaje.

    creación nuevo archivo


Si en el root utiliza en las características del archivo /etc/fstab “noauto” y deja el resto igual el usuario tendrá que montar manualmente la partición bien con:

mount partición // mount /dev/sdb2 en el ejemplo

mount Punto de montaje // mount /Punto_Montaje en el ejemplo.


Moviendo datos directamente de o desde dispositivos.


Aunque habitualmente consideramos que los datos en nuestros ordenadores están organizados en archivos y carpetas, también podemos pensar en ellos en su forma más básica o “en bruto”. Por ejemplo, un disco duro está compuesto por una gran cantidad de “bloques” de datos que el sistema operativo interpreta como directorios y archivos. No obstante, si pudiéramos manejar un disco simplemente como una gran serie de bloques sin estructura, podríamos llevar a cabo acciones muy útiles, como la clonación completa de dispositivos.

El programa "dd" realiza esta tarea y se utiliza para clonar discos. 

dd if=input_file of=output_file status=progress

Imaginemos que tenemos dos discos duros del mismo tamaño y queremos copiar exactamente el primer disco en el segundo. Si conectamos ambos al ordenador y están asignados a los dispositivos /dev/sdb y /dev/sdc respectivamente, podríamos clonar el primer disco en el segundo usando lo siguiente:

dd if=/dev/sdb of=/dev/sdc status=progress

Opcionalmente, si sólo estuviera conectado a nuestro ordenador el primer dispositivo, y quisiéramos crear una imagen suya, podríamos copiar su contenido en un archivo normal para restáuralo o copiarlo luego:

dd if=/dev/sdb of=flash_drive.img

¡IMPORTANTISIMO! El comando dd es muy útil pero peligroso. Aunque su nombre deriva de “data definition” (definición de datos), a veces se le llama “destroy disk” (destruye discos) porque los usuarios a menudo escriben mal las especificaciones if o of. ¡Siempre comprueba dos veces tus especificaciones de entrada y salida antes de pulsar intro!


El comando chmod.

El comando chmod en Linux se utiliza para cambiar los permisos de acceso a archivos y directorios.

Permisos básicos en Linux

Cada archivo/directorio tiene tres tipos de permisos para tres tipos de usuarios:

Tipos de permisos:

  • r → lectura (read)

  • w → escritura (write)

  • x → ejecución (execute)

Tipos de usuarios:

  • u (user): el dueño del archivo

  • g (group): el grupo al que pertenece el archivo

  • o (others): todos los demás

  • a (all): todos los anteriores (user + group + others)


Sintaxis básica

chmod [opciones] modo archivo
+ poner permiso
- quitar permiso

Formato simbólico (letras)

Este formato usa letras y símbolos:

chmod u+x archivo.txt

Significa: añadir permiso de ejecución (+x) al usuario (u) dueño del archivo.

Otros ejemplos:

chmod g-w archivo.txt     # quita escritura al grupo
chmod o=r archivo.txt     # deja solo lectura para otros
chmod a+rw archivo.txt    # da lectura y escritura a todos

Formato numérico (más usado)

Cada permiso tiene un valor numérico:

Permiso

Valor

r

4

w

2

x

1

Se suman para cada tipo de usuario:

chmod 754 archivo.txt

Esto significa:

  • 7 (4+2+1) → el dueño tiene lectura, escritura y ejecución.

  • 5 (4+0+1) → el grupo tiene lectura y ejecución.

  • 4 (4+0+0) → otros solo lectura.

Otros ejemplos comunes:

  • chmod 777 → todos tienen todos los permisos (¡inseguro!)

  • chmod 644 → dueño puede leer y escribir, grupo y otros solo leer

  • chmod 755 → dueño todo, grupo y otros solo leer y ejecutar (típico para scripts)

Opción útil

  • -R → cambia permisos de forma recursiva (para directorios):

chmod -R 755 mi_carpeta/

Comado FIND.

Es un comando que sirve para buscar cosas. Su síntesis básica es:
find [ruta] [opciones] [acción]
Las opciones más habituales son las siguientes:
-name	nombre que se busca.
-user	creado por un determinado usuario
-type tipo de archivo bien sea f,d,l etc.

🔍 Ejemplos prácticos

1. Buscar por nombre

find /home/usuario -name "archivo.txt"

🔹 Busca exactamente archivo.txt en /home/usuario.


2. Buscar por extensión o patrón

find . -name "*.pdf"

Busca todos los archivos PDF desde el directorio actual (.).


3. Buscar sin importar mayúsculas/minúsculas

find . -iname "foto.jpg"

Coincide con foto.jpg, FOTO.JPG, Foto.Jpg, etc.


4. Buscar solo directorios o solo archivos

find . -type d       # solo directorios  
find . -type f       # solo archivos

5. Buscar por tamaño

find . -size +100M     # archivos de más de 100 megas
find . -size -1k       # archivos de menos de 1 kilobyte

6. Buscar por fecha de modificación

find . -mtime -7       # modificados en los últimos 7 días
find . -mtime +30      # modificados hace más de 30 días

7. Buscar y ejecutar una acción (como borrar)

find . -name "*.tmp" -delete           # borra archivos .tmp
find . -name "*.log" -exec rm {} \;    # otra forma de borrarlos
  • {} representa cada archivo encontrado.

  • \; indica el final del comando.


🔐 Buscar por permisos

find . -perm 777          # archivos con permisos 777
find . -perm -u=x         # archivos ejecutables por el dueño

🧠 Resumen rápido

Opción

Qué hace

-name

Busca por nombre

-iname

Nombre sin distinguir mayúsculas

-type f/d

F = archivo, D = directorio

-size

Por tamaño

-mtime

Por fecha de modificación

-perm

Por permisos

-exec

Ejecuta un comando por archivo

-delete

Borra archivos directamente

Comando DU

Sirve para: Ver cuánto ocupa un archivo o carpeta en el disco.

Sintaxis básica:

du [opciones] [ruta]

🔹 Opciones más útiles

Opción

Qué hace

-h

Muestra el tamaño en formato legible (MB, GB)

-s

Muestra solo el total, no cada subcarpeta

--max-depth=N

Limita la profundidad de carpetas a mostrar

-a

Incluye archivos individuales en la salida

-c

Muestra el total final


📊 Ejemplos prácticos

📁 Ver tamaño total de una carpeta:

du -sh /home/usuario

📂 Ver tamaño de subcarpetas hasta 1 nivel:

du -h --max-depth=1 /home/usuario

Ver tamaño de un archivo:

du -h archivo.iso

📈 Ver qué ocupa más (ordenado):

du -h --max-depth=1 | sort -hr

🧠 Consejos

  • Combínalo con sort para detectar qué carpeta ocupa más espacio.

  • Usa -s si solo te interesa el total, sin detalles.

  • Usa --max-depth=2 si quieres ver subniveles.


martes, 24 de junio de 2025

Sistemas Operativos 3.- Operaciones Básicas en Linux

¿Te pierdes entre tantos temas? 📚✨ Descubre todo lo que ofrece este blog en un solo vistazo [👉 Ver índice completo]

Comandos Básicos de Linux: Guía para Principiantes


2.1 Comandos Básicos de Linux

En este capítulo vamos a desarrollar una pequeña chuleta para poder manejarnos básicamente a través de la terminal de Linux.


Manejo de Directorios

pwd - print working directory

Este comando muestra la ruta completa del directorio actual en el que estás trabajando.
Es útil cuando navegas por muchas carpetas y necesitas saber exactamente dónde estás ubicado dentro del sistema de archivos.

comando pwd

cd - change directory

Por defecto, la secuencia de entrada en linux, nos sitúa en nuestro directorio de entrada o de trabajo (un  directorio  llamado  igual que  el  usuario,  dentro  del  directorio  /home).  Pero  al  igual  que  otros  sistemas operativos podemos cambiar de directorio mediante el mandato cd directorio. Si  no  introducimos  ningún  nombre  de  directorio,  el  mandato cd, sin  argumentos  vuelve  a  nuestro directorio de trabajo. Si queremos volver al directorio de nivel superior basta con utilizar cd ..

Comportamientos comunes:

  • Ir al directorio Personal (home):

    cd 

Que es equivalente a:

   cd ~

  • Cambiar a un subdirectorio:

    cd nombre_directorio

  • Volver al directorio anterior (última ubicación)

    cd -

  • Subir un nivel en el árbol de directorios:

    cd ..

  • Ir al directorio raíz del sistema:

    cd /

El nombre de un fichero o de un directorio se puede referenciar de forma relativa o absoluta.

  • Forma relativa: El nombre hace referencia a ficheros o directorios desde el directorio en el que nos encontramos.
  • Forma absoluta: El nombre hace referencia a todo el camino desde la raíz. Ejemplo: si nos encontramos en nuestro directorio de entrada y queremos ir al directorio /etc

Relativa: Referencia desde tu ubicación actual (ej. cd Documentos).

ruta relativa

Absoluta: Referencia desde la raíz (ej. cd /home/usuario/Documentos).

ruta absoluta

mkdir - make directory

Para crear un directorio (carpeta) es necesario utilizar la orden mkdir nombresDeDirectorio

  • Si queremos crear un solo directorio:

crear un directorio

  • Si queremos crear varios directorios:
crear varios directorios

  • Crear una estructura de directorios anidados (incluye carpetas padre sino existen)

crear directorios recursivos si no existe el padre

rmdir - Remove Directory

Para borrar un directorio es necesario utilizar la orden rmdir nombresDeDirectorio, es necesario que ese directorio este vacío. ⚠️ Si el directorio contiene archivos o subdirectorios, rmdir no lo eliminará. En ese caso, se debe usar rm -r, pero recuerda utilizarlo con precaución.

eliminar directorios

Comandos Básicos

date

Permite consultar la fecha y hora del sistema.

comando date

who / whoami

who: este comando muestra los usuarios conectados a la máquina.

comando who

whoami: Muestra tu nombre de usuario.

comando whoami

ls (Listar archivos)

Este comando muestra el contenido de un directorio. Este comando tiene varias opciones:

ls: Muestra contenido del directorio actual.

ls

Opciones útiles:

ls -a: Muestra además los archivos ocultos (aquellos cuyo nombe empieza con un ".")

ls -a

ls -F: para saber que archivos de un directorio son archivos normales, cuales directorios y cuales enlaces. (los que terminan con / = directorio, los que terminan con * = ejecutable -código- y los que terminan con @ son enlaces simbólicos) .

ls -f

ls -t: Ordena por fecha (más reciente primero).

ls -t

ls -t -r: muestra primero la información más antigua.

ls -t -r

ls -R:
muestra toda la información del directorio en el que me encuentro.

ls -R

ls -l: nos muestra más información (el nombre con sus características) sobre el contenido del del directorio donde me encuentro.

ls -l

Por ejemplo, para el fichero anterior llamado “fichero1” muestra una fila con siete columnas:
Columna 1 - está compuesta por dos partes: 
  • El primer carácter que nos informa sobre el tipo de información que es:
                        -    fichero ordinario
                        d   directorio
                        l     enlace simbólico
  • los 9 siguientes caracteres nos indican los permisos, estos caracteres se agrupan de tres en tres. Los tres primeros son los permisos para el propietario (r w -), los tres siguientes los permisos para el grupo (r --) y los tres últimos los permisos para el resto de usuarios (---). Los permisos pueden ser de lectura (r), escritura (w) y ejecución (x)
Columna 2 - número de enlaces duros.
Columna 3 - indica el nombre del propietario del fichero.
Columna 4 - grupo al que pertenece el usuario propietario del fichero.
Columna 5 - muestra el tamaño de fichero en bytes.
Columna 6 - Hace referencia a la hora en que el fichero fue modificado por última vez o creado.
Columna 7 - nombre del fichero

ls -i: Muestra el número de inodo de cada archivo.

ls -i


touch

Sirve para crear fichero en blanco.

Caracteres comodines

A veces es interesante referenciar ficheros que tengan en su nombre características comunes. “Todos los ficheros que empiezan por la letra c...”. En Linux esto se consigue utilizando caracteres especiales (llamados metacaracteres o comodines) que representan otras cosas:

  • El carácter asterisco '*' representa a cualquier cadena de caracteres arbitraria incluyendo la cadena vacía. (para buscar)
  • La interrogación '?' representa a cualquier carácter simple. (para buscar)
  • Los corchetes '[' ']' pueden contener un grupo o rango de caracteres y corresponden a un carácter simple. (para buscar)
  • Las llaves ‘{‘,’}’ deben contener diferentes alternativas, constituidas por un carácter o un grupo de caracteres, separadas todas ellas por comas. (para buscar / crear). Los dos puntos '..' entre {} en expansión de secuencias se usa para generar rangos automáticamente bien sean números o letras. Por ejemplo, vamos a crear varios ficheros:
touch

Visualización de Archivos

cat

La orden cat se utiliza para visualizar sobre la salida estándar el contenido de un fichero. Lógicamente el tipo de ficheros a visualizar debe ser de texto, ya que si utilizamos la orden con un fichero ejecutable la salida sería ilegible. Para visualizar el fichero de texto llamado prueba:

cat1

La orden cat permite listar varios ficheros secuencialmente. Si tenemos dos ficheros llamados prueba1 y prueba2, el siguiente comando nos permite hacerlo:

cat 2

Una aplicación muy útil de cat, es concatenar ficheros. Por ejemplo, si queremos concatenar los dos ficheros anteriores en un nuevo fichero llamado prueba3 bastaría con ejecutar lo siguiente:

cat2

Si queremos añadir al final de un fichero el contenido de otro:

cat3

En Linux, los caracteres > y >> se utilizan para redirigir la salida de un comando a un archivo, pero con una diferencia clave en su comportamiento:

1. > (Redirección estándar)
Sobrescribe el contenido del archivo.
Si el archivo no existe, lo crea.
Si el archivo existe, lo borra y escribe el nuevo contenido.

⚠️ ¡Cuidado!
Si usas > sobre un archivo existente, pierdes su contenido anterior.

2. >> (Redirección con anexado)
Añade el contenido al final del archivo (sin borrar lo anterior).
Si el archivo no existe, lo crea.

more

Una orden alternativa a cat es la orden more que da más control que la anterior, ya que automáticamente lista un fichero y cuando llena la terminal (lista tantas líneas como el tamaño de la terminal) se para, esperando que pulsemos una tecla (intro para continuar mostrando el contenido del fichero línea a línea o el espacio mostrar el contenido hasta que se vuelva a llenar de nuevo la terminal).

more   [ opciones]    nombre_del_fichero

La orden more tiene varias opciones interesantes:

• Con la opción -n, lista el fichero presentando de n en n líneas y no con el número de líneas que posee nuestra pantalla.

• Con el modificador +n, lista el fichero a partir de la línea n

more

more -n

more +

tail

La orden tail permite visualizar el final de un fichero (por defecto 10 líneas). El formato de este comando es:   

tail  [-numlineas]   nombrefichero

tail

La opción -f del comando tail es increíblemente útil porque te permite seguir los cambios en los archivos en tiempo real. Imagina que tienes un archivo que se está actualizando constantemente, como un archivo de registro (log) de un sistema o una aplicación; con tail -f, no solo verás las últimas líneas existentes, sino que el comando permanecerá activo y mostrará automáticamente cualquier nueva línea que se añada al archivo a medida que suceda. Esto es especialmente práctico para monitorizar la actividad en vivo, diagnosticar problemas o simplemente ver cómo crece un archivo sin tener que abrirlo y cerrarlo repetidamente.

Gestión de Archivos: copia, movimiento y renombrado de ficheros.

cp (Copiar)

Si queremos copiar un fichero utilizamos el mandato cp. Por ejemplo, para copiar el fichero llamado “fichero” al directorio dir1, con el mismo nombre:

Archivos: cp origen destino.

CP

Para copiar el fichero llamado “fichero” al directorio dir1 y llamarlo fich, en vez del nombre que tiene actualmente:
cp cambiando el nombre

La orden cp también copia directorios. Para esto utilizamos el modificador recursivo –R . Por ejemplo,si queremos copia el directorio dir1 (y todo su contenido) al directorio2

Directorios: cp -R dir1 dir2 (copia recursiva)

cp -R


mv (Mover/Renombrar)

El cometido de la orden mv es mover ficheros entre diferentes directorios. Si se usa sobre el mismo directorio el efecto obtenido consiste en cambiar el nombre al fichero. Por ejemplo, cambiamos el nombre del fichero “prueba” por “pruebilla”:

mv

Para mover el fichero “pruebilla” al directorio dir1:

mover archivo

Los permisos del fichero copiado o movido son los mismos que los del fichero original

rm (Eliminar) ⚠️ ¡Mucho cuidado con este comando!

La orden rm suprime un fichero de un directorio o un directorio completo. Con la opción –R borra un directorio con todo su contenido. ¡Ojo! Esta orden es muy peligrosa, utilízala con precaución. Para borrar un fichero:

rm archivo

Para borrar un directorio este tiene que estar vacío o utilizamos la opción -R si queremos borrar el directorio y todo lo que tiene dentro:

rm -r

Otras Órdenes Útiles para trabajar con ficheros.

sort

Ordena la información de un fichero. Esta orden la podemos utilizar con diferentes formatos:

sort nombre_fichero   - muestra el contenido del fichero ordenado

sort


sort -o fich1 fich2 - mete en fich1 el contenido del fich2 ordenado

sort -o

wc (Contar)

Sirve para contar líneas, palabras y bytes de un fichero. 

Muestra esta información de la siguiente forma:

numero de líneas     numero de palabras   numero de bytes       nombre del fichero

wc  [opciones]  nombrefichero

Opciones de esta orden:

-c - solo muestra el número de bytes

-l - solo muestra el número de líneas

-w - solo muestra el número de palabras

wc

split 

El mandato split divide un fichero de texto en partes. La sintaxis es de la forma:

    split   [-líneas]   nombre    [prefijo]

División por defecto: el prefijo por defecto es x, y el número de líneas 1000 (crea ficheros xaa, xab, xac, xad... con 1000 líneas cada uno).

Si dividimos nuestro fichero llamado “fichero” en ficheros de 3 líneas, se crean 7 ficheros

split

cut (recortar)

El mandato cut recorta columnas o campos de un fichero. 

La sintaxis en este caso es como sigue:

cut [opciones] nombre 

Las opciones pueden ser:

  • Cortando columnas. Opción -c 
  • Cortando campos (por defecto, cut asume que los campos se encuentran separados por tabuladores). Opción –f 
  • Indicar de forma explícita el carácter usado como separador entre campos. Opción –d

cut -c
En este ejemplo vemos como se cogen de cada línea del fichero los caracteres que están en la columna 2 y en la 7.
cut -f

En el ejemplo anterior los datos han sido separados por tabuladores. Al usar la orden cut -f le hemos dicho que recorte de cada fila los datos que estén antes de la primera, segunda y cuarta tabulación.


En este último ejemplo le he pedido que utilizando como separador el espacio en blanco " " que recorte lo que este antes del primer y tercer separador.


grep (Buscar)

El mandato grep permite realizar búsquedas de líneas que contengan texto que identifique a un objetivo o patrón que se especifica. Se pueden utilizar para extraer información de los archivos, buscar líneas que se relacionen con un elemento particular y para localizar archivos que contengan una palabra clave particular. La forma general del mandato es la siguiente:

grep [opciones] expresión [fichero]

Si se quiere buscar más de una palabra (una frase) separadas por espacios en blanco, o se utilizan caracteres comodín, es necesario encerrar la expresión entre comillas. 

Algunas de las opciones de este mandato son:

  • -i   La búsqueda no es sensible a mayúsculas/minúsculas
  • -n  Muestra el número de línea donde se ha encontrado la coincidencia y también la línea.
  • -l   Muestra los nombres de los ficheros, pero no las líneas.
  • -v   Muestran las líneas donde no se produce la coincidencia.
grep

Enlaces.

Aunque los enlaces duros y blandos los vimos en el post anterior merece la pena volver a repasarlos. 

El comando ln sirve para crear enlaces.

ln  -s  f1  simbo1f1 crea un enlace bando (simbólico) llamado simbo1f1 al fichero f1.

Recuerda que los enlaces simbólicos son como los accesos directos en Windows.

ln  f1  enla1f1 crea un enlace duro llamado enla1f1 al fichero f1. Los enlaces duros son como diferentes nombres para un mismo archivo. (no valen para directorios)

enlaces


Conclusión

Estos comandos son esenciales para trabajar en Ubuntu o cualquier distribución Linux. Practícalos en la terminal para familiarizarte con ellos.