2 votos

Enlace de salida clicable en el Terminal

Quiero echo una URL clicable en ZSH/Terminal. La URL corresponde a una consulta Kibana, lo que significa que incluye muchos caracteres extraños. Por razones técnicas, no puedo utilizar enlaces Kibana "acortados".

read -r the_url << \EOF
https://log-service.com/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1h,to:now))&_a=(columns:!(correlation_id,application,level,description),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'*:log-2',key:correlation_id,negate:!f,params:(query:hello-there),type:phrase),query:(match_phrase:(correlation_id:hello-again)))),index:'*:log-2',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))
EOF
echo "logs at:"
echo "$the_url"

El problema es: Cuando intento hacer clic en el enlace, sólo se interpreta parcialmente como hipervínculo. Como resultado, sólo parte de la url se pasa al navegador, y Kibana no se carga correctamente. Estoy muy por debajo del límite de 1000 caracteres de la URL de algunos navegadores.

¿Hay alguna manera de hacer que ZSH + Terminal interpreten mi URL correctamente?

3voto

Martin J.H. Puntos 141

Un colega encontró una solución: Codificar con URL las partes que hacen que el terminal se tropiece. (La codificación de URL de todo no funciona, ya que entonces Kibana no puede leerlo más).

#!/bin/bash

read -r the_url << \EOF
https://log-service.com/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1h,to:now))&_a=(columns:!(correlation_id,application,level,description),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'*:log-2',key:correlation_id,negate:!f,params:(query:hello-there),type:phrase),query:(match_phrase:(correlation_id:hello-again)))),index:'*:log-2',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))
EOF

IFS='=' read -ra parts <<< "$the_url"

for i in "${parts[@]}"
do
   if [[ -z $url ]]; then
   # this is the first part of the URL, we want to keep it as-is
      url="$i"
   else
      # urlencode that part of the URL and append with an '='
      i=${i//\'/\%27}
      i=${i//\(/\%28}
      i=${i//\)/\%29}
      i=${i//\*/\%2a}
      url="$url=$i"
   fi
done

echo "logs at:"
echo "$url"

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