Skip to content
56K

56K

La web de Fanta

Menu
  • Unix/Linux
  • Cacharreo
  • Games
  • Streaming
  • Notas
  • /dev/null
Menu

f de file – El comando f – Información relevante

Posted on 21/04/202116/01/2023 by fanta

Algunas veces encadenamos muchos comandos para obtener información relevante sobre un determinado archivo. Los encadenamos o escribimos unos cuantos.

Eso hace que perdamos el tiempo y no tengamos en pantalla justo lo que deseamos saber. Por ejemplo en el caso de los logs ver si anda algún proceso escribiendo (si anda vivo), el tamaño de ese archivo en bytes y en «humano»,  la ruta absoluta real en la que se encuentra el archivo (por si es un enlace) y el tipo de archivo (un json, un xml, un archivo binario de sonido, …).

Para solucionar todo eso es bueno crearnos un sencillo script en bash llamado «f» (f de file) que nos permita del tirón realizar todo.

 

Creando el script

Abrimos nuestro editor de texto plano favorito (vim, vi, nano, emacs, joe, le, …) y guardamos el siguiente contenido con el nombre de «f»:

 

#!/bin/bash

filename="$1"

if [[ -z $1 ]]; then

  echo -e "\e[1m[+] Ha de pasar un archivo como parámetro.\e[0m"

else
    if [[ -f $1 ]]; then
        # RUTA ABSOLUTA ARCHIVO
        echo -e "\e[100m[+] Ruta absoluta\e[0m"
        rutaAbsoluta=$(readlink -e $filename)
        echo -e "\e[34mRuta absoluta:\e[0m\t$rutaAbsoluta"

        # TAMAÑO ARCHIVO
        echo -e "\n\e[100m[+] Tamaño archivo\e[0m"
        enBytes=$(du -b $filename)
        enHumano=$(du -h $filename)
        echo -e "\e[34mEn Bytes:\e[0m\t$enBytes\n\e[34mEn Humano:\e[0m\t$enHumano"

        # FECHA ARCHIVO
        echo -e "\n\e[100m[+] Fecha archivo\e[0m"
        accessDate=$(stat $filename | grep -iE "access:|modify:|Change:" | grep -v "Uid:" | grep -i "access" | cut -d ":" -f 2-100 | cut -d " " -f 2-100)
        modifyDate=$(stat $filename | grep -iE "access:|modify:|Change:" | grep -v "Uid:" | grep -i "modify" | cut -d ":" -f 2-100 | cut -d " " -f 2-100)
        changeDate=$(stat $filename | grep -iE "access:|modify:|Change:" | grep -v "Uid:" | grep -i "change" | cut -d ":" -f 2-100 | cut -d " " -f 2-100)
        echo -e "\e[34mAccess:\e[0m\t\t$accessDate\n\e[34mModify:\e[0m\t\t$modifyDate\n\e[34mChange:\e[0m\t\t$modifyDate"

        # TIPO DE ARCHIVO
        echo -e "\n\e[100m[+] Tipo de archivo\e[0m"
        tipoArchivo=$(file $filename)
        echo -e "\e[34mTipo:\e[0m\t\t$tipoArchivo"

        # PROCESOS USANDO EL ARCHIVO
        echo -e "\n\e[100m[+] Procesos usando el archivo\e[0m"
        procesosUsando=$(lsof -t $filename)
        if [[ -z $procesosUsando ]]; then
                echo "Ningún proceso utilizando \"$filename\" ahora mismo" 
        else
            ps --no-headers up $procesosUsando
        fi

    else

        echo -e "\e[1m[+] Ha de pasar un archivo como parámetro. Uno que exista a ser posible.\e[0m"

    fi

fi

Una vez tenemos el archivo «f» lleno de instrucciones vamos a darle permisos de ejecución así:

$ chmod +x f

 

Ejecutando el script

Y movemos el archivo al directorio /usr/local/bin por ejemplo:

 

$ sudo mv f /usr/local/bin/

Finalmente rezamos un padre nuestro, vamos al baño, nos hacemos un café y probamos luego a escribir f en un emulador de terminal que tengamos a mano. Si todo va bien (/usr/local/bin anda en el PATH) ya podemos usar siempre que queramos el comando «f» para obtener información relevante sobre un determinado archivo.

 

 

Y eso es un poco todo. Saludos cordiales

:wq

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Si piensas que los usuarios de tus programas son idiotas, sólo los idiotas usarán tus programas

Comentarios recientes

  • fanta en BQ Cervantes 4 – 0x00 – Instalar el Firmware para desarrollo
  • Beatriz en BQ Cervantes 4 – 0x00 – Instalar el Firmware para desarrollo
  • fanta en i3wm en el ordenador del trabajo con 3 pantallas
  • Punk en i3wm en el ordenador del trabajo con 3 pantallas
  • Twicsy en Eliminar kernels viejos en redhat y liberar espacio en /boot
  • fanta en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • Jorge en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • fanta en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • Camilo en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • eovoltio en Mastodon.madrid se apaga el 12 de Octubre
©2023 56K | Built using WordPress and Responsive Blogily theme by Superb