Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

nombre réponses : 25

#0 Re : -1 »  [résolu]Pq echo [a-m]* m'affiche aussi des .....? » Aujourd'hui à 01:51

Watael
Réponses : 13

les globs (Développement de chemins, aka Pathname expansion) ne sont pas des regex.

[a-z]*

en globbing, signifie : commence par une lettre
en regex, ça signifie : une ou aucune lettre.

#1 Re : -1 »  utiliser le même lanceur sous différents OS intégration automatique » Le 17/02/2018, à 01:42

Watael
Réponses : 20

salut,

pourquoi le script est-il lancé par bash, au lieu d'être exécutable et exécuté par le shell indiqué dans le shebang ?

#2 Re : -1 »  Regarder si une variable contient des lettres » Hier à 12:30

Watael
Réponses : 16

salut,

en bash :

rgx='^[0-9.-]+$'
if [[ $var =~ $rgx ]]; then echo "ok" ; else echo "ko"; fi

trier cette liste en enlevant tout les mots contenant autre chose que des chiffres des . ou des -

ce n'est pas un tri, mais un filtre.

il est toujours utile de mettre un exemple avant/après.

#3 Re : -1 »  [résolu] Je marche à côté de mes chaussures ... » Hier à 14:35

Watael
Réponses : 2

salut,

il n'y a rien de spécial à faire : ça devrait fonctionner tel quel.
quels fichiers tu voudrais faire correspondre ?

#4 Re : -1 »  Récupérer une partie d'une chaine de caractère en bash » Le 20/02/2018, à 10:44

Watael
Réponses : 12

salut,

Bad substitution parce que tu n'utilises pas bash.

#6 Re : -1 »  Récupérer une partie d'une chaine de caractère en bash » Le 20/02/2018, à 18:10

Watael
Réponses : 12

EN BASH !*

var=28
echo "${var::${#var}-1},${var:${#var}-1:1}"
2,8
var=283
echo "${var::${#var}-1},${var:${#var}-1:1}"
28,3

*ils m'énervent. lol

#7 Re : -1 »  Récupérer une partie d'une chaine de caractère en bash » Le 20/02/2018, à 19:12

Watael
Réponses : 12

ah, ah, ah ! matlab, j'adore !

printf est une commande shell POSIX, et parce que bash ne sait pas rendre des résultats sous forme décimale, ce que tu as fait avec awk pourrait être fait avec bash :

var=182
printf '%d°\n' $((var/10))

ps: si tu veux ne pas avoir à protéger les " dans un script/oneLine awk, place la commande awk entre '; ça évitera aussi les collisions entre les champs définis par awk et les paramètres positionnels du shell.

#8 Re : -1 »  Récupérer une partie d'une chaine de caractère en bash » Le 20/02/2018, à 19:35

Watael
Réponses : 12

de toute  façon, on ne sait pas exactement ce que veut Remi82.
veut-il la partie entière uniquement ? ou veut-il aussi la partie décimale ?
c'est pas super clair. hmm

et après ça dépend :
est-ce qu'on veut faire du full-bash : on peut/il faut bricoler...
veut-on faire réaliser un vrai calcul : bc est la moins pire des solutions.

#9 Re : -1 »  Mon 1er Script ( complétement inutile^^) » Le 13/02/2018, à 05:34

Watael
Réponses : 18
#!/bin/bash

recom=(
 "Tu peux t'arrêter de fumer comme l'ont fait des millions de fumeurs avant toi.. "
 "C'est le plus beau cadeau que tu puisses te faire "
 "Je te conseille la lecture de la méthode simple pour en finir avec la cigarette d'Allen Carr. Moi ça m'a aidé ..."
 "et si cela ne marche pas, tu peux toujours fumer la clope électronique ... Tes poumons te remercieront ^^ "
)
prnRecom()
{
    echo "${recom[$1]}"
    echo "Presse la touche Entrée pour continuer"
    read
}

clear
echo -n "Bonjour , es tu fumeur ? [O/N] : "
read ouinon
if [[ $ouinon == [Nn] ]]; then 
    echo "C'est bien ça !
Surtout ne fume jamais ou ne refume jamais.
Sauf si tu veux avoir les dents jaunes et payer beaucoup d'impôt"
else
    for ((i=0;i<${#recom[*]};i++))
    do  
        prnRecom $i
    done
    for ((i=0;i<=100;i++))
    do  
        printf '  %s \e[01;31m%s\e[00m\n' "Et n'oublie pas que fumer est une réaction en chaine !!!" "Et n'oublie pas que fumer est une réaction en chaine !!!"
        sleep .5
    done
    echo 
fi

#10 Re : -1 »  Problème commande grep » Le 19/02/2018, à 12:36

Watael
Réponses : 6

salut,

UMQ!*
et puis utilise les globs :

printf '%s\n' *'.mkv?'

le ? est un caractère spécial pour le shell, c'est pourquoi il faut le protéger entre apostrophes.
alors que le . est un caractères spécial pour les regex. hmm

*Use More Quotes !

#11 Re : -1 »  Problème commande grep » Le 19/02/2018, à 16:29

Watael
Réponses : 6

si tu avais utilisé le globbing printf '%s\n' *.mkv*, tu aurais vu tout de suite de quoi il retournait !

#12 Re : -1 »  [Script] Adresse ipv6 de type Unique Local unicast Address (rfc4193) » Le 13/02/2018, à 22:50

Watael
Réponses : 10

salut,

pourquoi ouvrir un sous-shell pour grouper des commandes ? utilise des accolades.
expr ? parce que tu utilises un shell non-POSIX ?
est-ce que le nombre de secondes depuis EPOCH additionné de 2208988808 peut donner un nombre commençant par zéro ?
xargs pour utiliser printf ?
ou

printf '%08x' $(($(date +%s)+2208988808))

simplement ?

on continue
date +%-N comme ça les nano-secondes ne commenceront jamais par zéro !

NON ! grep | sed | cut | sed c'est pas possible !
utilise awk

etc...

#13 Re : -1 »  [Script] Adresse ipv6 de type Unique Local unicast Address (rfc4193) » Le 14/02/2018, à 15:12

Watael
Réponses : 10
echo $(($(date +%s%N)+($(date -d '01/01/1900 00:00' +%s%N) /-1)))

parce que le nombre de secondes depuis 01/01/1900 change à chaque instant.

mais si tu veux que le processus soit clairement détaillé, pourquoi ne pas passer par des variables intermédiaires ? ainsi chaque étape serait visiblement distinguée...

#14 Re : -1 »  [Script] Adresse ipv6 de type Unique Local unicast Address (rfc4193) » Le 14/02/2018, à 18:18

Watael
Réponses : 10

expr est une commande externe (comme ls, date...).

j'ai laissé le echo parce que tu tiens à utiliser xargs

dixneufCent=$(($(date +%s%N)+($(date -d '01/01/1900 00:00' +%s%N) /-1)))
printf '%08x08x' ${dixneufCent::10} ${dixneufCent:10}

s'il est indispensable de couper la valeur en deux nombres de 10 chiffres...

il faut te mettre d'accord, soit tu veux "démontrer" l'algorithme, soit utiliser des pipes (ce qui, selon moi, ne simplifie pas la lecture ou l'exécution).
il est également recommandé qu'une ligne de commande ne dépasse pas (par souci de lisibilité) 80 caractères.

#15 Re : -1 »  [Script] Adresse ipv6 de type Unique Local unicast Address (rfc4193) » Le 14/02/2018, à 19:45

Watael
Réponses : 10

on utilise une commande externe quand le shell ne sait pas le faire tout seul.
si printf savait afficher les nanosecondes, je n'aurais même pas utilisé date (peut-être dans la prochaine version de bash. ça a été demandé).
printf est une commande interne, c'est unebuiltin.

mon propos n'est pas de démontrer l'algorithme.

c'est ce que j'avais compris :

ça a l'avantage de bien décomposer les traitements

#16 Re : -1 »  Extraire les lignes sans doublons dans chaque ligne d'un fichier » Le 13/02/2018, à 21:24

Watael
Réponses : 7

"{ça}" "{vous}" "{fatigue}" "{pas}" "{d}"'\''"{écrire}" "{des}" "{caractères}" "{inutiles}" "?"

#17 Re : -1 »  [résolu]Je n'arrive pas à lancer un script à partir de Gedit » Le 12/02/2018, à 12:02

Watael
Réponses : 23

quel est le script ?
c'est quoi "s'exécute mal" ?

#18 Re : -1 »  [résolu]Je n'arrive pas à lancer un script à partir de Gedit » Le 12/02/2018, à 18:12

Watael
Réponses : 23
read -e taVar

?

-e : utilise « readline » pour obtenir la ligne dans un shell interactif

#19 Re : -1 »  [résolu]Je n'arrive pas à lancer un script à partir de Gedit » Le 12/02/2018, à 19:17

Watael
Réponses : 23

On "lance" un script et on "exécute" une fonction , n'est ce pas?

non. c'est indifférent.

#20 Re : -1 »  [RESOLU] XARGS et Redirection vers deux fichiers » Le 13/02/2018, à 11:04

Watael
Réponses : 6

salut,

$ xargs -t netctl <<eof >/tmp/rslt 2>/tmp/cmd
list
eof
$ cat /tmp/rslt
* ethernet-dhcp
$ cat /tmp/cmd
netctl list

#21 Re : -1 »  [RESOLU] XARGS et Redirection vers deux fichiers » Le 13/02/2018, à 11:36

Watael
Réponses : 6
$ xargs -t systemctl <<eof >/tmp/rslt 2>/tmp/cmd
status
eof

?

$ echo | xargs -t systemctl >/tmp/rslt 2>/tmp/cmd

?

#22 Re : -1 »  [résolu]Mon 1er cours script Bash pour débutant ne marche pas ... » Le 11/02/2018, à 21:08

Watael
Réponses : 23

le problème n'est pas le script, c'est l'éditeur choisi (vim) qui n'est pas installé.

et dans un second temps, qui devrait faire l'objet d'un nouveau sujet, le message d'erreur de gedit.

#23 Re : -1 »  [Résolu] Script contenant un tableau ne s'exécute pas hors du Terminal » Le 11/02/2018, à 00:05

Watael
Réponses : 4

salut,

d'abord, mauvaise méthode :

listDrepertoires=( /home/moi/*/ )

parce que si un nom de répertoire contient un espace, ce nom sera découpé en autant d'élément du tableau.
et il faut TOUJOURS mettre les variables (les tableaux sont des variables) entre guillemets.

« ça plante », «ça marche pas » ne sont pas des "symptômes".
c'est comme dire au médecin « ch'ui malade »

il y a un shebang dans ton script ?

#24 Re : -1 »  [Résolu] Script contenant un tableau ne s'exécute pas hors du Terminal » Le 11/02/2018, à 01:11

Watael
Réponses : 4

il y a un shebang dans ton script ?

et, il faut TOUJOURS mettre les variables (les tableaux sont des variables), quand elles doivent être développées, entre guillemets.