Búsqueda de sitios web

Serie RHCSA: Cómo realizar la gestión de archivos y directorios - Parte 2


En este artículo, RHCSA Parte 2: Gestión de archivos y directorios, revisaremos algunas habilidades esenciales que se requieren en las tareas diarias de un administrador de sistemas.

Crear, eliminar, copiar y mover archivos y directorios

La gestión de archivos y directorios es una competencia crítica que todo administrador de sistemas debe poseer. Esto incluye la capacidad de crear/eliminar archivos de texto desde cero (el núcleo de la configuración de cada programa) y directorios (donde organizará archivos y otros directorios), y descubrir el tipo de archivos existentes.

El comando táctil se puede utilizar no sólo para crear archivos vacíos, sino también para actualizar los tiempos de acceso y modificación de archivos existentes.

Puedes usar file [filename] para determinar el tipo de archivo (esto te resultará útil antes de iniciar tu editor de texto preferido para editarlo).

y rm [filename] para eliminarlo.

En cuanto a los directorios, puede crear directorios dentro de rutas existentes con mkdir [directorio] o crear una ruta completa con mkdir -p [/full/path/to/directory].

Cuando se trata de eliminar directorios, debe asegurarse de que estén vacíos antes de ejecutar el comando rmdir [directorio], o use el comando más poderoso (¡manéjelo con cuidado!) rm -rf [directorio]. Esta última opción forzará la eliminación recursiva del [directorio] y todo su contenido, así que úsela bajo su propio riesgo.

Redirección y canalización de entradas y salidas

El entorno de línea de comandos proporciona dos características muy útiles que permiten redirigir la entrada y la salida de comandos desde y hacia archivos, y enviar la salida de un comando a otro, llamado redirección y canalización, respectivamente.

Para comprender esos dos conceptos importantes, primero debemos comprender los tres tipos más importantes de flujos (o secuencias) de caracteres de E/S (entrada y salida), que de hecho son archivos especiales, en el sentido *nix de la palabra.

  1. La entrada estándar (también conocida como stdin) está adjunta de forma predeterminada al teclado. En otras palabras, el teclado es el dispositivo de entrada estándar para ingresar comandos en la línea de comandos.
  2. La salida estándar (también conocida como stdout) está adjunta de forma predeterminada a la pantalla, el dispositivo que "recibe" la salida de los comandos y los muestra en la pantalla.
  3. Error estándar (también conocido como stderr), es donde se envían los mensajes de estado de un comando de forma predeterminada, que también es la pantalla.

En el siguiente ejemplo, la salida de ls /var se envía a stdout (la pantalla), así como el resultado de ls /tecmint . Pero en el último caso, es stderr lo que se muestra.

Para identificar más fácilmente estos archivos especiales, a cada uno se le asigna un descriptor de archivo, una representación abstracta que se utiliza para acceder a ellos. Lo esencial que hay que entender es que estos archivos, al igual que otros, se pueden redirigir. Lo que esto significa es que puede capturar el resultado de un archivo o script y enviarlo como entrada a otro archivo, comando o script. Esto le permitirá almacenar en disco, por ejemplo, la salida de comandos para su posterior procesamiento o análisis.

Para redirigir stdin (fd 0), stdout (fd 1) o stderr (fd 2), están disponibles los siguientes operadores.

Redirection Operator

Efecto

>

Redirige la salida estándar a un archivo que contiene la salida estándar. Si el archivo de destino existe, se sobrescribirá.

>>

Agrega salida estándar a un archivo.

2>

Redirige el error estándar a un archivo que contiene la salida estándar. Si el archivo de destino existe, se sobrescribirá.

2>>

Agrega un error estándar al archivo existente.

&>

Redirige tanto la salida estándar como el error estándar a un archivo; si el archivo especificado existe, se sobrescribirá.

<

Utiliza el archivo especificado como entrada estándar.

<>

El archivo especificado se utiliza tanto para la entrada estándar como para la salida estándar.

A diferencia de la redirección, la canalización se realiza agregando una barra vertical (|) después de un comando y antes de otro.

Recordar:

  1. La redirección se utiliza para enviar la salida de un comando a un archivo o para enviar un archivo como entrada a un comando.
  2. La canalización se utiliza para enviar la salida de un comando a otro comando como entrada.

Ejemplos de redirección y canalización

Ejemplo 1: redirigir la salida de un comando a un archivo

Habrá ocasiones en las que necesitarás iterar sobre una lista de archivos. Para hacer eso, primero puede guardar esa lista en un archivo y luego leer ese archivo línea por línea. Si bien es cierto que puedes iterar sobre la salida de ls directamente, este ejemplo sirve para ilustrar la redirección.

ls -1 /var/mail > mail.txt

Ejemplo 2: redirigir tanto stdout como stderr a /dev/null

En caso de que queramos evitar que tanto stdout como stderr se muestren en la pantalla, podemos redirigir ambos descriptores de archivos a /dev/null. Observe cómo cambia la salida cuando se implementa la redirección para el mismo comando.

ls /var /tecmint
ls /var/ /tecmint &> /dev/null

Ejemplo 3: usar un archivo como entrada para un comando

Mientras que la sintaxis clásica del comando cat es la siguiente.

cat [file(s)]

También puede enviar un archivo como entrada, utilizando el operador de redirección correcto.

cat < mail.txt

Ejemplo 4: enviar la salida de un comando como entrada a otro

Si tiene un directorio grande o una lista de procesos y desea poder ubicar un determinado archivo o proceso de un vistazo, querrá canalizar la lista a grep.

Tenga en cuenta que utilizamos to pipelines en el siguiente ejemplo. El primero busca la palabra clave requerida, mientras que el segundo eliminará el comando grep real de los resultados. Este ejemplo enumera todos los procesos asociados con el usuario de Apache.

ps -ef | grep apache | grep -v grep