¿Prefieres scripts de bash o alias para atajos? [cerrado]

8

Tengo un ~/bindirectorio (que está en mi PATH) donde almaceno muchos pequeños scripts de 1 o 2 líneas. Algunos de ellos simplemente cden un directorio y ejecutan un comando en un archivo, como vimo algo así. Pero también tengo muchos alias en mi .bash_aliasesarchivo que tienen el mismo propósito.

¿Cómo decides entre escribir un pequeño script bash y escribir un alias? ¿Importa en absoluto en qué dirección vas?

dan
fuente

Respuestas:

5

Si los uso con la frecuencia suficiente para garantizar la sobrecarga de tenerlos cargados en cada caparazón. Los escribiré como funciones.

Si son específicos del proyecto, podría escribirlos como un conjunto de alias y funciones que pueden obtenerse en un shell cuando estoy trabajando en ese proyecto.

Solo si funcionan de manera independiente, algo se convierte en un script en mi ~ / bin. Hay algunos liners que son básicamente alias, pero estos son para ejecutar desde otros lugares que no sean shells (ejecute avisos en otros programas, por ejemplo). En su mayor parte, tienen que ser guiones bastante sustanciales.

Caleb
fuente
1

En general, las funciones de script de shell son más flexibles que los alias y debería preferirlas. Por ejemplo, en un alias no puede probar si la cantidad de argumentos dados o sus tipos son los esperados. Estoy de acuerdo con Caleb en que los alias se ajustan bien a las líneas simples, por ejemploalias cp='cp -i'

sakisk
fuente
1

Para algo más complicado una sustitución de cadena de un solo comando, un script es probablemente más apropiado. Además, cualquier cosa que sea utilizada por otros scripts o que otras personas puedan usar probablemente sea mejor que los scripts. Si bien ejecutar programas fuera del directorio bin de otra persona no es una gran idea, es mejor que obtener el archivo de alias individual de otra persona.

Los alias son los mejores para personalizar su entorno interactivo. Por ejemplo, e='emacs -nw'y ese tipo de cosas.

Goladus
fuente
0

Yo uso el enfoque más simple posible.

Principalmente, si el comando no tiene parámetros, generalmente uso alias.

Si el comando tiene parámetros, uso una función.

Por ejemplo, hacer y cd'ing a un directorio:

md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }

También uso una función si el comando usa una función instalada que tiene parámetros

por ejemplo, agregando -v a git:

git () { [ $1 = commit ] && command git commit -v "${@:2}" || command git "$@"; }
Michael Durrant
fuente