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.

RHCSA: Perform File and Directory Management – Part 2

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ás archivos y otros directorios), y averiguar el tipo de archivos existentes.

El comando touch se puede utilizar no solo para crear archivos vacíos, sino también para actualizar los tiempos de acceso y modificación de archivos existentes.

touch command example

Puedes usar file [nombre de archivo] para determinar el tipo de archivo (esto será útil antes de abrir tu editor de texto preferido para editarlo).

file command example

y rm [nombre de archivo] para eliminarlo.

rm command example

En cuanto a los directorios, puedes crear directorios dentro de rutas existentes con mkdir [directorio] o crear una ruta completa con mkdir -p [/ruta/completa/al/directorio].

mkdir command example

Cuando se trata de eliminar directorios, debes asegurarte de que estén vacíos antes de emitir el comando rmdir [directorio], o utilizar la opción más potente (¡manejar con cuidado!) rm -rf [directorio]. Esta última opción eliminará de forma recursiva el [directorio] y todos sus contenidos, así que úsala bajo tu propio riesgo.

Redirección de Entrada y Salida y Tuberías

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, llamadas redirección y canalización, respectivamente.

Para entender esos dos conceptos importantes, primero debemos comprender los tres tipos más importantes de flujos de E/S (Entrada y Salida) de caracteres, que de hecho son archivos especiales, en el sentido de *nix.

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

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

Input and Output Example

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 para entender es que estos archivos, al igual que otros, pueden ser redirigidos. Lo que esto significa es que puedes capturar la salida de un archivo o script y enviarla como entrada a otro archivo, comando o script. Esto te 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 Effect
> Redirects standard output to a file containing standard output. If the destination file exists, it will be overwritten.
>> Appends standard output to a file.
2> Redirects standard error to a file containing standard output. If the destination file exists, it will be overwritten.
2>> Appends standard error to the existing file.
&> Redirects both standard output and standard error to a file; if the specified file exists, it will be overwritten.
< Uses the specified file as standard input.
<> The specified file is used for both standard input and standard output.

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

Recuerda:

  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. El Encauzamiento se utiliza para enviar la salida de un comando a otro comando como entrada.

Ejemplos de Redirección y Encauzamiento

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

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

# ls -1 /var/mail > mail.txt
Redirect output of command tot a file
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 archivo a /dev/null. Observa cómo cambia la salida cuando se implementa la redirección para el mismo comando.

# ls /var /tecmint
# ls /var/ /tecmint &> /dev/null
Redirecting stdout and stderr ouput to /dev/null
Ejemplo 3: Usando un archivo como entrada para un comando

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

# cat [file(s)]

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

# cat < mail.txt
cat command example
Ejemplo 4: Enviando la salida de un comando como entrada a otro

Si tienes un directorio grande o una lista de procesos y deseas poder localizar un archivo o proceso en particular de un vistazo, querrás canalizar la lista a grep.

Observa que utilizamos dos canalizaciones en el siguiente ejemplo. La primera busca la palabra clave requerida, mientras que la segunda eliminará el comando grep real de los resultados. Este ejemplo lista todos los procesos asociados con el usuario apache.

# ps -ef | grep apache | grep -v grep
Send output of command as input to another

Source:
https://www.tecmint.com/file-and-directory-management-in-linux/