Saltar al contenido
56K

56K

Slow IT Notes – Just 4 Fun

Menú
Menú

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

Publicada el 21/04/202106/02/2023 por 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


fanta

Escrito por Fanta

Deja una respuesta

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

fanta de naranja
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
💾 QEMU
💾 SOLARIS
💾 ESXi
💾 FREEBSD
💾 DEBIAN
💾 AMIGA
💾 SYSADMIN
💾 JUNOS
💾 IMPRIMIR
💾 MSDOS
💾 WINDOWS
💾 FAIRPHONE
💾 GAMING
💾 STREAMING
💾 REDHAT
💾 GRÁFICOS
💾 CACHARROS
💾 SONIDO
💾 NETWORKING
💾 ROCKY
💾 SUSE
💾 TMP
©2025 56K | Construido utilizando WordPress y Responsive Blogily tema por Superb