No se puede hacer que la sintaxis arbitraria haga nada. Los paréntesis son metacaracteres que tienen un significado especial para el analizador, por lo que no hay forma de que pueda usarlos como nombres válidos . La mejor manera de extender el shell es definir funciones.
Este sería un echo
básico contenedor que siempre escribe en el mismo archivo:
f() {
echo "[email protected]"
} >a.txt
Esto hace más o menos lo mismo pero además maneja stdin - sacrificando echo's
-e
y -n
opciones:
f() {
[[ ${1+_} || ! -t 0 ]] && printf '%s\n' "${*-$(</dev/fd/0)}"
} >a.txt
Que se puede llamar como
f arg1 arg2...
o
f <file
A las funciones se les pasan argumentos de la misma manera que a cualquier otro comando.
El segundo envoltorio similar a un eco primero prueba si hay un primer argumento establecido o stdin proveniente de un no tty, y condicionalmente llama a printf usando los parámetros posicionales si está establecido o stdin. La expresión de prueba evita el caso de cero argumentos y la redirección desde un archivo, en cuyo caso Bash intentaría expandir la salida de la terminal, bloqueando el shell.
Sí, solo debes llamarlo con F sth
:
F()
{
echo "$1" > a.txt
}
Lea más aquí.
F () {
echo "$1" > a.txt
}
No usas paréntesis cuando lo llamas. Así es como lo llamas:
F "text to save"