Los alias están destinados a aliasing nombres de comando. Cualquier cosa más allá de eso debe hacerse con funciones.
alias ll='ls -l' # The ll command is an alias for ls -l
Los alias son nombres que todavía están asociados con el nombre original. ll
es un tipo ligeramente específico de ls
.
d() {
if exists colordiff; then
colordiff -ur "[email protected]"
elif exists diff; then
diff -ur "[email protected]"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
Una función es un nuevo comando que tiene lógica interna. No es simplemente un cambio de nombre de otro comando. Hace operaciones internas.
Técnicamente, los alias en el lenguaje de shell Bash son tan limitados en capacidades que son extremadamente inadecuados para cualquier cosa que implique más de un solo comando. Úselos para hacer una pequeña mutación de un solo comando, nada más.
Dado que la intención es crear un nuevo comando que realiza una operación que internamente se resolverá en otros comandos, la única respuesta correcta es utilizar una función aquí:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
uso de alias en un escenario como esto se encuentra con muchos problemas. A diferencia de las funciones, que se ejecutan como comandos, los alias se expanden en el comando actual, lo que generará problemas muy inesperados al combinar este "comando" de alias con otros comandos. Tampoco funcionan en scripts.
¿No debería ser "bloqueo de la función() {} bla" ? – emeraldjava
Utilizo la sintaxis 'sh', que también funciona con' bash'. – mouviciel
¿Cómo se pasa el argumento? La variable de anidamiento 'msg' dentro de 'lock()' paréntesis da error 'error de sintaxis cerca del token inesperado' msg'' .. – geotheory