< Bash (Español)

Bash (Español)/Functions (Español)

Bash también admite funciones. Añada las funciones a ~/.bashrc, o a un archivo separado que sea cargado desde ~/.bashrc. Se pueden encontrar más ejemplos de la función Bash en BBS#30155.

Esta traducción de Bash/Functions fue revisada el 2020-12-08. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Mostrar códigos de error

Para configurar trap para interceptar un código de retorno distinto de cero de la última ejecución del programa:

EC() {
	echo -e '\e[1;33m'code $?'\e[m\n'
}
trap EC ERR

Compilar y ejecutar una código fuente en C sobre la marcha

La siguiente función compilará (dentro del directorio /tmp/) y ejecutará el código fuente en C del argumento sobre la marcha (y la ejecución será sin argumentos). Y finalmente, después de que el programa termine, eliminará el archivo compilado.

# Compilar y ejecutar un código fuente en C sobre la marcha
csource() {
	[[ $1 ]]    || { echo "Falta el operando" >&2; return 1; }
	[[ -r $1 ]] || { printf "El archivo %s no existe o no se puede leer\n" "$1" >&2; return 1; }
	local output_path=${TMPDIR:-/tmp}/${1##*/};
	gcc "$1" -o "$output_path" && "$output_path";
	rm "$output_path";
	return 0;
}

Extraer

La siguiente función extraerá una amplia gama de tipos de archivos comprimidos. Utilícelo con la sintaxis extract <archivo1> <archivo2> ....

extract() {
    local c e i

    (($#)) || return

    for i; do
        c=''
        e=1

        if [[ ! -r $i ]]; then
            echo "$0: el archivo es ilegible: \`$i'" >&2
            continue
        fi

        case $i in
            *.t@(gz|lz|xz|b@(2|z?(2))|a@(z|r?(.@(Z|bz?(2)|gz|lzma|xz)))))
                   c=(bsdtar xvf);;
            *.7z)  c=(7z x);;
            *.Z)   c=(uncompress);;
            *.bz2) c=(bunzip2);;
            *.exe) c=(cabextract);;
            *.gz)  c=(gunzip);;
            *.rar) c=(unrar x);;
            *.xz)  c=(unxz);;
            *.zip) c=(unzip);;
            *.zst) c=(unzstd);;
            *)     echo "$0: extensión de archivo no reconocida: \`$i'" >&2
                   continue;;
        esac

        command "${c[@]}" "$i"
        ((e = e || $?))
    done
    return "$e"
}
Nota: Asegúrese de que extglob esté activado: shopt -s extglob, añadiéndolo a ~/.bashrc (véase Opciones que cambian el comportamiento de englobado).

Otra forma de hacer esto es instalar un paquete especializado, véase Herramientas convenientes de archivado y compresión.

cd y ls en uno

Muy a menudo, al cambiar a un directorio le sigue la orden ls para listar su contenido. Por lo tanto, es útil tener una segunda función que haga ambas cosas a la vez. En este ejemplo lo llamaremos cl (change list, o listar al cambiar) y mostraremos un mensaje de error si el directorio especificado no existe.

Por supuesto, la orden ls puede modificarse para adaptarse a sus necesidades, por ejemplo, ls -hall --color=auto.

Utilidad de tarea simple

Inspirado en #Tomador de notas simple.

Calculadora

calc() {
    echo "scale=3;$@" | bc -l
}

Kingbash

Kingbash - autocompletado dirigido por menú (véase BBS#101010).

Instale de AUR, luego inserte lo siguiente en su ~/.bashrc:

function kingbash.fn() {
    echo -n "KingBash> $READLINE_LINE" #Where "KingBash> " se ve mejor si se parece a su PS1, al menos en longitud.
    OUTPUT=$(/usr/bin/kingbash "$(compgen -ab -A function)")
    READLINE_POINT=$(echo "$OUTPUT" | tail -n 1)
    READLINE_LINE=$(echo "$OUTPUT" | head -n -1)
    echo -ne "\r\e[2K"
}
bind -x '"\t":kingbash.fn'

Información IP

Información detallada sobre una dirección IP o nombre de máquina (hostname) en bash a través de https://ipinfo.io:

ipif() { 
    if grep -P "(([1-9]\d{0,2})\.){3}(?2)" <<< "$1"; then
	 curl ipinfo.io/"$1"
    else
	ipawk=($(host "$1" | awk '/address/ { print $NF }'))
	curl ipinfo.io/${ipawk[1]}
    fi
    echo
}
gollark: Examples of use:```You are like 3 (three) apioforms.What even is an apioform?Alright, apioforms.Ideatic chronoapioforms in meta-ubqvian space.That idea is isomorphic to 34 apioforms!games and other programs that are apioformic to run on linux or openbds.It graphs apioform concentration (including retroactively) over time.anyway "lyric make macron" would make a fine sequel to beware apioforms and "fixing ewo" yesapioforms are form-suffixed apios```
gollark: > Derived from the Latin "apis" (bee) and "forma" (figure), "apioform" can be used as an insult, compliment, random placeholder, or for any purpose whatsoever. Mostly used in the context of esoteric programming languages, somehow. The word can be expanded by inserting or prepending prefixes such as "cryo", "pyro", "chrono", "contra" or "meta", e.g. "cryoapiocontraform", to convey additional meaning. An older form was "apiohazard", for hazardous apioforms, but this has fallen out of use.
gollark: An apioform is most accurately described as an apioform with apioformic characteristics.
gollark: Anime but in the category of endofunctors WHEN?
gollark: Oh dëär.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.