Je cherche à faire un petit script. Pour vérifier je commence par faire:
for i in *.txt ;do echo $i;done
Ça marche.
Je cherche à faire une boucle sur les lettres:
for i in [A-Z];do echo $i;done
et ça répond:
[A-Z]
J'essaye:
for i in [[:alpha:]];do echo $i;done
et ça dit:
[[:alpha:]]
Le mieux que j'ai réussi à obtenir est:
for i in {A,Z};do echo $i;done
qui répond:
A
Z
Je relis la page de man de bash où il est expliqué (ligne 1354 si le
xterm fait 80 colonnes de large) dans la section 'Motifs génériques':
[...] Correspond à l'un des caractères entre crochets. Une
paire de caractères séparés par un signe "moins" indique un
intervalle; qui correspond à n'importe quel caractère situé
entre les deux bornes incluses.
PS: je suis sous GNU bash 2.05b et Debian
Merci de votre aide
--
> Je verrais bien un : "Julien in GLP - L'erreur est humaine", pas vous ?
Jean-Charles, débrouille-toi pour qu'il n'y est pas de confusion
possible au niveau des noms :) En plus, je suis pas seul ;)))
-+- Julien in guide du linuxien pervers - "Faut pas écorcher mes prénoms !"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Chazelas
2004-07-28, 17:49(+02), Hugolino:
Je cherche à faire un petit script. Pour vérifier je commence par faire: for i in *.txt ;do echo $i;done Ça marche.
Je cherche à faire une boucle sur les lettres: for i in [A-Z];do echo $i;done et ça répond: [A-Z]
Il n'y a probablement pas de fichier dont le nom est constitué d'une seule lettre majuscule dans le present repertoire.
Avec bash 3.0:
for i in {A..Z}; do echo "$i"; done
Avec zsh:
for ((i=##A; i<=##Z; i++)) echo $(([##8]i))
ou:
for i ({$((##A))..$((##Z))}) echo $(([##8]i))
[...]
Je relis la page de man de bash où il est expliqué (ligne 1354 si le xterm fait 80 colonnes de large) dans la section 'Motifs génériques': [...] Correspond à l'un des caractères entre crochets. Une paire de caractères séparés par un signe "moins" indique un intervalle; qui correspond à n'importe quel caractère situé entre les deux bornes incluses. [...]
Oui, pour le globbing ou filename generation, ca retourne une liste de fichiers pas des chaines de characteres arbitraires.
-- Stephane
2004-07-28, 17:49(+02), Hugolino:
Je cherche à faire un petit script. Pour vérifier je commence par faire:
for i in *.txt ;do echo $i;done
Ça marche.
Je cherche à faire une boucle sur les lettres:
for i in [A-Z];do echo $i;done
et ça répond:
[A-Z]
Il n'y a probablement pas de fichier dont le nom est constitué
d'une seule lettre majuscule dans le present repertoire.
Avec bash 3.0:
for i in {A..Z}; do echo "$i"; done
Avec zsh:
for ((i=##A; i<=##Z; i++)) echo \0$(([##8]i))
ou:
for i ({$((##A))..$((##Z))}) echo \0$(([##8]i))
[...]
Je relis la page de man de bash où il est expliqué (ligne 1354 si le
xterm fait 80 colonnes de large) dans la section 'Motifs génériques':
[...] Correspond à l'un des caractères entre crochets. Une
paire de caractères séparés par un signe "moins" indique un
intervalle; qui correspond à n'importe quel caractère situé
entre les deux bornes incluses.
[...]
Oui, pour le globbing ou filename generation, ca retourne une
liste de fichiers pas des chaines de characteres arbitraires.
Je cherche à faire un petit script. Pour vérifier je commence par faire: for i in *.txt ;do echo $i;done Ça marche.
Je cherche à faire une boucle sur les lettres: for i in [A-Z];do echo $i;done et ça répond: [A-Z]
Il n'y a probablement pas de fichier dont le nom est constitué d'une seule lettre majuscule dans le present repertoire.
Avec bash 3.0:
for i in {A..Z}; do echo "$i"; done
Avec zsh:
for ((i=##A; i<=##Z; i++)) echo $(([##8]i))
ou:
for i ({$((##A))..$((##Z))}) echo $(([##8]i))
[...]
Je relis la page de man de bash où il est expliqué (ligne 1354 si le xterm fait 80 colonnes de large) dans la section 'Motifs génériques': [...] Correspond à l'un des caractères entre crochets. Une paire de caractères séparés par un signe "moins" indique un intervalle; qui correspond à n'importe quel caractère situé entre les deux bornes incluses. [...]
Oui, pour le globbing ou filename generation, ca retourne une liste de fichiers pas des chaines de characteres arbitraires.
-- Stephane
Hugolino
Le 28 Jul 2004 16:44:19 GMT, Stephane Chazelas a écrit:
Il n'y a probablement pas de fichier dont le nom est constitué d'une seule lettre majuscule dans le present repertoire.
Oui bien sûr. Je m'attendais à ce que bash interprête les 26 lettres de l'alphabet comme 26 arguments. Pas comme 26 nom de fichier.
Avec bash 3.0:
for i in {A..Z}; do echo "$i"; done
Autant dire qu'avec ma Debian, je ne suit pas prêt d'en disposer.
Avec zsh: [snip]
Si je voulais installer zsh comme shell par défaut, quelle doc devrais-je lire d'abord ? Mais maigre connaissance en bash (et les scripts déjà écrit) seraient elles réutilisables ?
En tout cas merci de ton aide.
-- Hugo NPN (i --> ee) On a droit au retour de Youpla et de SpaceWalker en un seul Meta-Blaireau. Attention les gars, lancez les kill-files, celui-la, c'est un dangeureux. -+- ST in CMM -+-
Le 28 Jul 2004 16:44:19 GMT, Stephane Chazelas a écrit:
Il n'y a probablement pas de fichier dont le nom est constitué
d'une seule lettre majuscule dans le present repertoire.
Oui bien sûr. Je m'attendais à ce que bash interprête les 26 lettres de
l'alphabet comme 26 arguments. Pas comme 26 nom de fichier.
Avec bash 3.0:
for i in {A..Z}; do echo "$i"; done
Autant dire qu'avec ma Debian, je ne suit pas prêt d'en disposer.
Avec zsh:
[snip]
Si je voulais installer zsh comme shell par défaut, quelle doc
devrais-je lire d'abord ? Mais maigre connaissance en bash (et les
scripts déjà écrit) seraient elles réutilisables ?
En tout cas merci de ton aide.
--
Hugo NPN (i --> ee)
On a droit au retour de Youpla et de SpaceWalker en un seul
Meta-Blaireau. Attention les gars, lancez les kill-files, celui-la,
c'est un dangeureux. -+- ST in CMM -+-
Le 28 Jul 2004 16:44:19 GMT, Stephane Chazelas a écrit:
Il n'y a probablement pas de fichier dont le nom est constitué d'une seule lettre majuscule dans le present repertoire.
Oui bien sûr. Je m'attendais à ce que bash interprête les 26 lettres de l'alphabet comme 26 arguments. Pas comme 26 nom de fichier.
Avec bash 3.0:
for i in {A..Z}; do echo "$i"; done
Autant dire qu'avec ma Debian, je ne suit pas prêt d'en disposer.
Avec zsh: [snip]
Si je voulais installer zsh comme shell par défaut, quelle doc devrais-je lire d'abord ? Mais maigre connaissance en bash (et les scripts déjà écrit) seraient elles réutilisables ?
En tout cas merci de ton aide.
-- Hugo NPN (i --> ee) On a droit au retour de Youpla et de SpaceWalker en un seul Meta-Blaireau. Attention les gars, lancez les kill-files, celui-la, c'est un dangeureux. -+- ST in CMM -+-
Stephane Chazelas
2004-07-28, 21:54(+02), Hugolino: [...]
for i in {A..Z}; do echo "$i"; done
Autant dire qu'avec ma Debian, je ne suit pas prêt d'en disposer.
Ou ecrire des scripts perl plutot que des scripts shells.
Avec zsh: [snip]
Si je voulais installer zsh comme shell par défaut, quelle doc devrais-je lire d'abord ? Mais maigre connaissance en bash (et les scripts déjà écrit) seraient elles réutilisables ? [...]
Ce n'est generalement pas une bonne idee de changer le shell par defaut (si ce que tu entends par shell par default est /bin/sh).
bash et zsh peuvent heureusement cohabiter sur une machine. Tes scripts ecrits pour bash peuvent continuer a etre interpretés par bash et tu peux ecrire des nouveaux scripts en zsh (ou des fonctions autoloadables). Pour changer ton shell de login, chsh ou passwd -s devraient suffire (avec l'adaptation des fichiers de demarrage si necessaire).
-- Stephane
2004-07-28, 21:54(+02), Hugolino:
[...]
for i in {A..Z}; do echo "$i"; done
Autant dire qu'avec ma Debian, je ne suit pas prêt d'en disposer.
Ou ecrire des scripts perl plutot que des scripts shells.
Avec zsh:
[snip]
Si je voulais installer zsh comme shell par défaut, quelle doc
devrais-je lire d'abord ? Mais maigre connaissance en bash (et les
scripts déjà écrit) seraient elles réutilisables ?
[...]
Ce n'est generalement pas une bonne idee de changer le shell par
defaut (si ce que tu entends par shell par default est /bin/sh).
bash et zsh peuvent heureusement cohabiter sur une machine. Tes
scripts ecrits pour bash peuvent continuer a etre interpretés
par bash et tu peux ecrire des nouveaux scripts en zsh (ou des
fonctions autoloadables). Pour changer ton shell de login, chsh
ou passwd -s devraient suffire (avec l'adaptation des fichiers
de demarrage si necessaire).
Ou ecrire des scripts perl plutot que des scripts shells.
Avec zsh: [snip]
Si je voulais installer zsh comme shell par défaut, quelle doc devrais-je lire d'abord ? Mais maigre connaissance en bash (et les scripts déjà écrit) seraient elles réutilisables ? [...]
Ce n'est generalement pas une bonne idee de changer le shell par defaut (si ce que tu entends par shell par default est /bin/sh).
bash et zsh peuvent heureusement cohabiter sur une machine. Tes scripts ecrits pour bash peuvent continuer a etre interpretés par bash et tu peux ecrire des nouveaux scripts en zsh (ou des fonctions autoloadables). Pour changer ton shell de login, chsh ou passwd -s devraient suffire (avec l'adaptation des fichiers de demarrage si necessaire).
Sur ma machine, root a gardé /bin/sh dans /etc/passwd et moi, l'user normal, j'ai modifié directement mon shell dans /etc/passwd. [...]
Pour quelle raison est ce que changer le shell dans /etc/passwd peut etre dangereux ? [...]
Par exemple, parce que l'installation d'un programme va rajouter des lignes dans ~prg-admin-user/.profile (et pas dans .login) parce qu'il s'attend a ce que prg-admin-user ait un shell Bourne like.
Pour rsh aussi (et peut-etre ssh).
Si un programme fait un rsh -l root la-machine "cmd > /dev/null 2>&1"
Ca ne marchera plus si tu mets csh comme shell de login a root sur la-machine.
En cas de probleme, suivant le systeme, la distribution de Linux, seuls certains shells peuvent etre prevus pour fonctionner en mode degradé (par exemple, mode single user et /usr/local/lib qui contient libncurses n'est pas monté...).
Sur ma machine, root a gardé /bin/sh dans /etc/passwd
et moi, l'user normal, j'ai modifié directement mon shell dans /etc/passwd.
[...]
Pour quelle raison est ce que changer le shell dans /etc/passwd peut
etre dangereux ?
[...]
Par exemple, parce que l'installation d'un programme va rajouter
des lignes dans ~prg-admin-user/.profile (et pas dans .login)
parce qu'il s'attend a ce que prg-admin-user ait un shell Bourne
like.
Pour rsh aussi (et peut-etre ssh).
Si un programme fait un
rsh -l root la-machine "cmd > /dev/null 2>&1"
Ca ne marchera plus si tu mets csh comme shell de login a root
sur la-machine.
En cas de probleme, suivant le systeme, la distribution de
Linux, seuls certains shells peuvent etre prevus pour
fonctionner en mode degradé (par exemple, mode single user et
/usr/local/lib qui contient libncurses n'est pas monté...).
Sur ma machine, root a gardé /bin/sh dans /etc/passwd et moi, l'user normal, j'ai modifié directement mon shell dans /etc/passwd. [...]
Pour quelle raison est ce que changer le shell dans /etc/passwd peut etre dangereux ? [...]
Par exemple, parce que l'installation d'un programme va rajouter des lignes dans ~prg-admin-user/.profile (et pas dans .login) parce qu'il s'attend a ce que prg-admin-user ait un shell Bourne like.
Pour rsh aussi (et peut-etre ssh).
Si un programme fait un rsh -l root la-machine "cmd > /dev/null 2>&1"
Ca ne marchera plus si tu mets csh comme shell de login a root sur la-machine.
En cas de probleme, suivant le systeme, la distribution de Linux, seuls certains shells peuvent etre prevus pour fonctionner en mode degradé (par exemple, mode single user et /usr/local/lib qui contient libncurses n'est pas monté...).
-- Stephane
Rakotomandimby Mihamina
Stephane Chazelas wrote:
Ce n'est generalement pas une bonne idee de changer le shell par defaut (si ce que tu entends par shell par default est /bin/sh).
Sur ma machine, root a gardé /bin/sh dans /etc/passwd et moi, l'user normal, j'ai modifié directement mon shell dans /etc/passwd.
Je ne fais pas d'utilisation exotique de ma machine, et ca semble se passe sans souci.
Pour quelle raison est ce que changer le shell dans /etc/passwd peut etre dangereux ?
Daans la mesure ou dans la plupart des scripts lancés par cron (du moins sur une Debian) overrident la variable SHELL ...
On peut donc (logiquement) en toute securité la personnaliser ! non ? j'ai faux quelquepart ? -- Rakotomandimby Mihamina Andrianifaharana Tel : +33 2 38 76 43 65 http://www.rktmb.org/Members/mihamina
Stephane Chazelas wrote:
Ce n'est generalement pas une bonne idee de changer le shell par
defaut (si ce que tu entends par shell par default est /bin/sh).
Sur ma machine, root a gardé /bin/sh dans /etc/passwd
et moi, l'user normal, j'ai modifié directement mon shell dans /etc/passwd.
Je ne fais pas d'utilisation exotique de ma machine, et ca semble se
passe sans souci.
Pour quelle raison est ce que changer le shell dans /etc/passwd peut
etre dangereux ?
Daans la mesure ou dans la plupart des scripts lancés par cron (du moins
sur une Debian) overrident la variable SHELL ...
On peut donc (logiquement) en toute securité la personnaliser ! non ?
j'ai faux quelquepart ?
--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://www.rktmb.org/Members/mihamina
Ce n'est generalement pas une bonne idee de changer le shell par defaut (si ce que tu entends par shell par default est /bin/sh).
Sur ma machine, root a gardé /bin/sh dans /etc/passwd et moi, l'user normal, j'ai modifié directement mon shell dans /etc/passwd.
Je ne fais pas d'utilisation exotique de ma machine, et ca semble se passe sans souci.
Pour quelle raison est ce que changer le shell dans /etc/passwd peut etre dangereux ?
Daans la mesure ou dans la plupart des scripts lancés par cron (du moins sur une Debian) overrident la variable SHELL ...
On peut donc (logiquement) en toute securité la personnaliser ! non ? j'ai faux quelquepart ? -- Rakotomandimby Mihamina Andrianifaharana Tel : +33 2 38 76 43 65 http://www.rktmb.org/Members/mihamina
manu
Rakotomandimby Mihamina wrote:
Pour quelle raison est ce que changer le shell dans /etc/passwd peut etre dangereux ?
C'est pas dangereux si on ne fait pas n'importe quoi. La commande vipw permet de l'editer et de beneficier d'une verification après coup.
Il faut faire attention pour le shell de root: il doit être sur la racine si on veut pouvoir utiliser le mode mono-utilisateur (où seule la racine est montée).
-- Emmanuel Dreyfus Un bouquin en français sur BSD: http://www.eyrolles.com/Informatique/Livre/9782212114638/livre-bsd.php
Pour quelle raison est ce que changer le shell dans /etc/passwd peut
etre dangereux ?
C'est pas dangereux si on ne fait pas n'importe quoi.
La commande vipw permet de l'editer et de beneficier d'une verification
après coup.
Il faut faire attention pour le shell de root: il doit être sur la
racine si on veut pouvoir utiliser le mode mono-utilisateur (où seule la
racine est montée).
--
Emmanuel Dreyfus
Un bouquin en français sur BSD:
http://www.eyrolles.com/Informatique/Livre/9782212114638/livre-bsd.php
manu@netbsd.org
Pour quelle raison est ce que changer le shell dans /etc/passwd peut etre dangereux ?
C'est pas dangereux si on ne fait pas n'importe quoi. La commande vipw permet de l'editer et de beneficier d'une verification après coup.
Il faut faire attention pour le shell de root: il doit être sur la racine si on veut pouvoir utiliser le mode mono-utilisateur (où seule la racine est montée).
-- Emmanuel Dreyfus Un bouquin en français sur BSD: http://www.eyrolles.com/Informatique/Livre/9782212114638/livre-bsd.php
Stephane Chazelas
2004-07-28, 16:44(+00), Stephane Chazelas: [...]
Je cherche à faire une boucle sur les lettres: for i in [A-Z];do echo $i;done et ça répond: [A-Z] [...]
Avec zsh:
for ((i=##A; i<=##Z; i++)) echo $(([##8]i)) [...]
Oups, j'avais oublié
setopt braceccl print -l {A-Z}
-- Stephane
2004-07-28, 16:44(+00), Stephane Chazelas:
[...]
Je cherche à faire une boucle sur les lettres:
for i in [A-Z];do echo $i;done
et ça répond:
[A-Z]
[...]
Avec zsh:
for ((i=##A; i<=##Z; i++)) echo \0$(([##8]i))
[...]
Je cherche à faire un petit script. Pour vérifier je commence par faire: for i in *.txt ;do echo $i;done Ça marche.
Je cherche à faire une boucle sur les lettres: for i in [A-Z];do echo $i;done et ça répond: [A-Z] [...]
Avec bash 3.0:
for i in {A..Z}; do echo "$i"; done
Avec zsh:
for ((i=##A; i<=##Z; i++)) echo $(([##8]i))
ou:
for i ({$((##A))..$((##Z))}) echo $(([##8]i))
[...]
perl -le 'print for A..Z'
-- dominix
Jack Holborn
Le Wed, 28 Jul 2004 17:49:54 +0200, Hugolino a écrit :
Bonjour
Je cherche à faire un petit script. Pour vérifier je commence par faire: for i in *.txt ;do echo $i;done [...] Merci de votre aide
Il n'est peut-etre pas trop tard pour repondre? :-) Alors voila, ce joker est utilisé pour faire référence à des noms de fichier. S'il n'y en a pas dans le répertoire courant bash le considere comme un mot, d'où le résultat de la commande. Pour t'aider à comprendre place-toi dans un repertoire qui ne contient pas trop de fichiers et essaye ca:
for i in [a-z]*; do echo $i; done
ensuite fait la meme chose dans un repertoire vide........alors?
-- A+ Jack H. "GNU bash 2.05b et Mandrake..."
Le Wed, 28 Jul 2004 17:49:54 +0200, Hugolino a écrit :
Bonjour
Je cherche à faire un petit script. Pour vérifier je commence par faire:
for i in *.txt ;do echo $i;done
[...]
Merci de votre aide
Il n'est peut-etre pas trop tard pour repondre? :-)
Alors voila, ce joker est utilisé pour faire référence à des noms de
fichier. S'il n'y en a pas dans le répertoire courant bash le considere
comme un mot, d'où le résultat de la commande.
Pour t'aider à comprendre place-toi dans un repertoire qui ne contient
pas trop de fichiers et essaye ca:
for i in [a-z]*; do echo $i; done
ensuite fait la meme chose dans un repertoire vide........alors?
Le Wed, 28 Jul 2004 17:49:54 +0200, Hugolino a écrit :
Bonjour
Je cherche à faire un petit script. Pour vérifier je commence par faire: for i in *.txt ;do echo $i;done [...] Merci de votre aide
Il n'est peut-etre pas trop tard pour repondre? :-) Alors voila, ce joker est utilisé pour faire référence à des noms de fichier. S'il n'y en a pas dans le répertoire courant bash le considere comme un mot, d'où le résultat de la commande. Pour t'aider à comprendre place-toi dans un repertoire qui ne contient pas trop de fichiers et essaye ca:
for i in [a-z]*; do echo $i; done
ensuite fait la meme chose dans un repertoire vide........alors?