Pregunta ¿Cómo manejo las comillas múltiples en un alias (para bash o zsh)?


Estoy usando zsh, y estoy tratando de usar Python como una simple calculadora. Estoy muy familiarizado con Python, pero parece que no puedo obtener el alias (o función) para que funcione correctamente.

Hasta ahora tengo:

pycalc() {
  python -c "print '$@'"
}
alias p=pycalc

No importa lo que haga, regresa zsh: no matches found: 123*123 (123 * 123 es el problema matemático).

¿¿¿Algunas ideas???


4


origen




Respuestas:


Intento
Agregue lo siguiente a .bashrc

pycalc() {
  python -c "print \"%f\" % float($@)"
}
alias p=pycalc

Puede agregarlo con el comando echo.
Una línea:

echo -e 'pycalc() {\n  python -c \"print \\\"%f\\\" % float($@)\"\n}\nalias p=pycalc' >> .bashrc

Multi-línea:

echo -e 'pycalc() {
  python -c \"print \\\"%f\\\" % float($@)\"
}
alias p=pycalc' >> .bashrc

Ahora puede usar p

$ pycalc 12+12
24.000000
$ pycalc 12*12
144.000000
$ p 12+12
24.000000
$ p 12*12
144.000000

Como señaló Michael Righi en su respuesta, si tiene un archivo como 12 * 12, se combinará con el 12 * 12, por lo que le recomendamos que lo incluya entre comillas dobles. También puede incluirlo entre comillas simples. Su solución también funciona para bash.


1



Todavía estoy recibiendo zsh: no matches found: 2*2 cuando entro p 2*2  Estoy usando zsh por cierto, pero no creo que eso suponga una gran diferencia. - AtHeartEngineer
Es pycalc 2*2 ¿trabajando? Agregaste las modificaciones a .zshrc en lugar de .bashrc, ¿verdad? - Bob
¿Reiniclaste la terminal con el reset comando para que se pueda leer el nuevo .bashrc? - Bob
@BobJ reset no tiene nada que ver con la recarga ~/.bashrc. No es un prerrequisito ni recarga activamente ~ / .bashrc. Si quieres cargar nuevas configuraciones desde ~/.bashrc solo llama source ~/.bashrc. - Adaephon
¡¡¡¡Trabajos!!!! Sí, lo agregué a zshrc en lugar de bashrc. ¡Corrí zsh otra vez y funciona! ¡Gracias! - AtHeartEngineer


zsh

Agregue esto a .zshrc:

pycalc() {
  python -c "print $@"
}
alias p=pycalc

En tu caparazón Z, úsalo así:

$ p 12+12
24
$ p "12*12"
144

Observe que necesita las comillas dobles cuando la instrucción contiene un carácter globbing como el asterisco.

O bien, podría desactivar globbing para ese alias:

pycalc() {
  python -c "print $@"
}
alias p='noglob pycalc'

Eso elimina la necesidad de las comillas dobles cuando lo usa:

$ p 12+12
24
$ p 12*12
144

4