0 votos

Cómo ejecutar un comando shell dentro de un tema zsh con Oh My Zsh

Así que, tengo Oh My Zsh en funcionamiento, y estoy creando mi propio y nuevo zsh-theme. En él, deseo tomar la dirección IP externa de https://api.myip.com - y estoy usando curl & grep para agarrarlo. Funciona bien cuando lo introduzco en el símbolo del sistema, pero cuando se incrusta en mi archivo zsh-theme me da un error:

zsh: no matches found: ((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5]).){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])
(23) Failed writing body

Jacobs-MacBook-Pro-2.local jacobjackson ttys002 0 [                               ] 10/29/20 18:32:46 PM

Aquí está mi zsh-theme:

PROMPT='%F{white}%M %n %y %j $(curl -s https://api.myip.com | grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])') %F{green}%2c%F{blue} [%f '
RPROMPT='$(git_prompt_info) %F{blue}] %F{green}%W %* %F{yellow}%D{%p}%f'

ZSH_THEME_GIT_PROMPT_PREFIX="%F{yellow}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%f"
ZSH_THEME_GIT_PROMPT_DIRTY=" %F{red}*%f"
ZSH_THEME_GIT_PROMPT_CLEAN=""

Y aquí está la secuencia de comandos que toma la dirección IP:

curl -s https://api.myip.com | grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])'

0voto

Mike Miller Puntos 5797

Primero, $() Los comandos no se ejecutan dentro de comillas simples. Cambiar las comillas exteriores por "" debería arreglar esto. Esto también soluciona el problema de que las comillas interiores cerraban prematuramente la cadena (como se puede ver en el resaltado de sintaxis).

En segundo lugar, la parte interior parece estar rota en mi ordenador, ya que está utilizando una expresión regular fija. El servidor me devuelve una dirección IPv6, pero esa expresión regular está buscando una IPv4. Puedes arreglar eso cambiando la expresión regular (fuera del alcance de esta pregunta), pero te sugiero que uses jq . Le permite utilizar una utilidad de línea de comandos para analizar los datos JSON. De nuevo, si te estás conectando a ese servidor con una dirección IPv4, entonces este cambio no será necesario (hasta que tu ISP en el futuro te actualice a una dirección IPv6).

Por lo tanto, termino con

"%F{white}%M %n %y %j $(curl -s https://api.myip.com | jq .ip -r) %F{green}%2c%F{blue} [%f "

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X