Le 06/03/2018 à 08:11, Marc TERRIER a écrit : > Le 05/03/2018 à 14:35, BOITEUX, Frederic a écrit :
>> Bonjour,
>>
>> Ton erreur « !d': event not found » vient du bash, pas de sed : par
>> défaut le caractère « ! » permet de rappeler une commande précédente
>> en bash… Pour éviter ton souci, je pense qu'il faut que tu mettes un
>> anti-slash devant ton ! pour qu'il ne soit pas interprété par bash
>> ; attention, tu as aussi un $ dans ton expression sed. Tu peux essayer :
>>
>> $ sudo bash -c "sed 's/^#$//g; /./,/^$/\!d' jail.conf > jail.local"
>>
>> Mais peut-être faudra-t-il des \ supplémentaires, car il y a 2
>> niveaux de subsitutions : le bash où tu lances ton sudo, et celui
>> lancé par ton sudo !
>>
>> Cdlt,
>> Fred.
>
> Bonjour,
>
> Piste intéressante, les antislashs, mais je n'ai pas encore trouvé
> *la* solution (excepté celle proposée par Christian) :
>
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed 's/^#$//g; /./,/^$/!d'
> jail.conf > jail.local"
> -bash: !d': event not found
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed 's/^#$//g; /./,/^$/\!d'
> jail.conf > jail.local"
> sed: -e expression n°1, caractère 19: commande inconnue: `\'
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed 's/^#$//g; /./,/^$/\\!d'
> jail.conf > jail.local"
> sed: -e expression n°1, caractère 19: commande inconnue: `\'
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed \'s/^#$//g; /./,/^$/!d\'
> jail.conf > jail.local"
> -bash: !d\': event not found
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed \\'s/^#$//g; /./,/^$/!d\\'
> jail.conf > jail.local"
> -bash: !d\\': event not found
> pi@raspi:/etc/fail2ban $
>
> Je découvre aussi, à cette occasion, que quand la commande provoque
> une erreur comme le "!d': event not found", la commande n'est pas
> ajoutée dans l'historique des commandes.
>
> Mais ces histoires d'environnement et de niveaux de substitution sont
> clairement des pistes intéressantes à creuser.
>
> Merci.
>