En fait avec cet expression régulière :
grep -Eo '<[a-z_]+>http[^<]+' | sed 's/^<.\|_./\U&/g;s/_/ /;s/<\(.*\)>/\1:\ /' | cut -d ' ' -f3 | head -n1
la dernière commande va insérer un retour à la ligne à la fin...
Ma solution ne fonctionne pas, je n'avais pas compris ton problème.
Mais si ça t'intéresse, il faudrait faire « grep ... | sed ... | xsel ... », sed charge la ligne suivant avec
N, puis
s|\n|| remplace « \n » par du vide.
Ce que tu peux faire c'est mettre le résultat dans une variable (comme Levi59) :
url=$( ... la fonction qui renvoie l'adresse ... )
Puis l'afficher
sans le saut de ligne final, comme le font les fonctions « echo -n », ou celle que je préfère, car plus souple « printf » qui est aussi intégrée à bash :
echo -n "$url" | xsel ...
#ou
printf "$url" | xsel ...
Sinon j'ai rajouté ça avant le xsel de Levi59, afin de garder une trace des fichiers téléchargés.
echo "$(date);${URL}" | tee -a "${HOME}/.${0##*/}.log";
@Levi59 :
Au lieu de le faire de deux tests :
# Emplacement du screenshot pour conservation
[ -n "$(echo ${CHOIX} | grep 1)" ] && {
LOCATE=$(zenity --file-selection \
--title="Dossier d'enregistrement" \
--filename="${HOME}/" \
--directory)
# Annulation
[ "$?" -eq 1 ] && {
notify-send Annulation
exit 0
}
...
Tu peux écrire :
# Emplacement du screenshot pour conservation
[ -n "$(echo ${CHOIX} | grep 1)" ] && {
LOCATE=$(zenity --file-selection \
--title="Dossier d'enregistrement" \
--filename="${HOME}/" \
--directory) || {
notify-send Annulation
exit 0
}
...
En utilisant directement le code de sortie de zenity. Ça évite d'avoir à tester une variable en plus.