Bonsoir,
Comme je n'ai pas d'imprimante, « j'imprime » mes documents en .ps puis
je les passe à ps2pdf14. Tout fonctionne bien.
Par fainéantise, je ne mets pas toujours l'extension .ps.
Mon répertoire, après ps2pdf14, me donne ceci :
[normal@localhost Temp]$ ls -l
total 14840
-rw-rw-r-- 1 normal normal 285119 nov 25 20:33 bellanger
-rw-rw-r-- 1 normal normal 29077 nov 25 20:33 bellanger.pdf
-rw-rw-r-- 1 normal normal 286260 nov 25 20:32 isolba
-rw-rw-r-- 1 normal normal 29483 nov 25 20:32 isolba.pdf
-rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Je cherche à isoler les fichiers sans extension. man ls m'indique
l'option -I motif.
Je fais donc ls -laI *.* afin d'ignorer les fichiers qui ont un point
dans leur nom. Mais le résultat n'est pas celui attendu :
[normal@localhost Temp]$ ls -laI *.*
-rw-rw-r-- 1 normal normal 29483 nov 25 20:32 isolba.pdf
-rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Curieusement, j'obtiens des fichiers avec un point mais pas tous...
Je dois me tromper avec le motif. Quelle serait la bonne solution pour
n'afficher que les fichiers sans extension ?
Question subsidiaire, comment utiliser rm pour n'effacer que ces
fichiers sans extension ?
Je peux certes le faire fichier par fichier ou les lier avec ls
bellanger isolba... mébon...
Le *.* est développé par le shell, et c'est la liste des fichiers résultante qui est passée à ls.
Logiquement, la liste ne devrait pas retenir les fichiers avec un point grâce à -I, non ?
Question subsidiaire, comment utiliser rm pour n'effacer que ces fichiers sans extension ?
chsh -s /bin/zsh
Changement de shell
exec zsh
?
setopt extendedglob rm *~*.*
Est-ce que tu pourrais m'expliquer ces lignes ? Je ne connais pas du tout zsh. De toutes les manières, il n'est apparemment pas installé... Merci et bonne soirée, Dominique
dominique wrote in message <45689f5e$0$25921$ba4acef3@news.orange.fr>:
[normal@localhost Temp]$ ls -laI *.*
Le *.* est développé par le shell, et c'est la liste des fichiers résultante
qui est passée à ls.
Logiquement, la liste ne devrait pas retenir les fichiers avec un point
grâce à -I, non ?
Question subsidiaire, comment utiliser rm pour n'effacer que ces
fichiers sans extension ?
chsh -s /bin/zsh
Changement de shell
exec zsh
?
setopt extendedglob
rm *~*.*
Est-ce que tu pourrais m'expliquer ces lignes ? Je ne connais pas du
tout zsh. De toutes les manières, il n'est apparemment pas installé...
Merci et bonne soirée,
Dominique
Le *.* est développé par le shell, et c'est la liste des fichiers résultante qui est passée à ls.
Logiquement, la liste ne devrait pas retenir les fichiers avec un point grâce à -I, non ?
Question subsidiaire, comment utiliser rm pour n'effacer que ces fichiers sans extension ?
chsh -s /bin/zsh
Changement de shell
exec zsh
?
setopt extendedglob rm *~*.*
Est-ce que tu pourrais m'expliquer ces lignes ? Je ne connais pas du tout zsh. De toutes les manières, il n'est apparemment pas installé... Merci et bonne soirée, Dominique
lhabert
dominique :
dominique wrote in message <45689f5e$0$25921$:
[ Temp]$ ls -laI *.*
Le *.* est développé par le shell, et c'est la liste des fichiers résultante qui est passée à ls.
Logiquement, la liste ne devrait pas retenir les fichiers avec un point grâce à -I, non ?
On reprend : - tu tapes la commande
ls -laI *.*
- le shell la découpe en trois éléments : ls -laI *.*
- je saute quelques étapes qui n'ont pas d'importance ici.
- pour chaque élément, le shell regarde si il contient des étoiles (et d'autres caractères spéciaux), et si oui, remplace cet élément par la liste des fichiers qui matchent ce motif. Tu te retrouves donc avec :
ls -laI bellanger.pdf isolba.pdf UR054g.zip
- enfin, le shell exécute ls, avec les éléments suivants de la liste en argument. ls voit donc que le motif que tu lui demandes d'éviter est « bellanger.pdf », puis il voit deux arguments « isoalba.pdf » et « UR05g.zip », qu'il t'affiche tous les deux puis qu'il y a bien des fichiers portant ces noms, et que ce ne sont pas des répertoires (dans ce cas, il t'afficherait leur contenu).
dominique :
dominique wrote in message <45689f5e$0$25921$ba4acef3@news.orange.fr>:
[normal@localhost Temp]$ ls -laI *.*
Le *.* est développé par le shell, et c'est la liste des fichiers résultante
qui est passée à ls.
Logiquement, la liste ne devrait pas retenir les fichiers avec un point
grâce à -I, non ?
On reprend :
- tu tapes la commande
ls -laI *.*
- le shell la découpe en trois éléments :
ls
-laI
*.*
- je saute quelques étapes qui n'ont pas d'importance ici.
- pour chaque élément, le shell regarde si il contient des étoiles (et
d'autres caractères spéciaux), et si oui, remplace cet élément par la liste
des fichiers qui matchent ce motif. Tu te retrouves donc avec :
ls
-laI
bellanger.pdf
isolba.pdf
UR054g.zip
- enfin, le shell exécute ls, avec les éléments suivants de la liste en
argument. ls voit donc que le motif que tu lui demandes d'éviter est
« bellanger.pdf », puis il voit deux arguments « isoalba.pdf » et
« UR05g.zip », qu'il t'affiche tous les deux puis qu'il y a bien des
fichiers portant ces noms, et que ce ne sont pas des répertoires (dans ce
cas, il t'afficherait leur contenu).
Le *.* est développé par le shell, et c'est la liste des fichiers résultante qui est passée à ls.
Logiquement, la liste ne devrait pas retenir les fichiers avec un point grâce à -I, non ?
On reprend : - tu tapes la commande
ls -laI *.*
- le shell la découpe en trois éléments : ls -laI *.*
- je saute quelques étapes qui n'ont pas d'importance ici.
- pour chaque élément, le shell regarde si il contient des étoiles (et d'autres caractères spéciaux), et si oui, remplace cet élément par la liste des fichiers qui matchent ce motif. Tu te retrouves donc avec :
ls -laI bellanger.pdf isolba.pdf UR054g.zip
- enfin, le shell exécute ls, avec les éléments suivants de la liste en argument. ls voit donc que le motif que tu lui demandes d'éviter est « bellanger.pdf », puis il voit deux arguments « isoalba.pdf » et « UR05g.zip », qu'il t'affiche tous les deux puis qu'il y a bien des fichiers portant ces noms, et que ce ne sont pas des répertoires (dans ce cas, il t'afficherait leur contenu).
dominique
- le shell la découpe en trois éléments : ls -laI *.*
- je saute quelques étapes qui n'ont pas d'importance ici.
- pour chaque élément, le shell regarde si il contient des étoiles (et d'autres caractères spéciaux), et si oui, remplace cet élément par la liste des fichiers qui matchent ce motif. Tu te retrouves donc avec :
ls -laI bellanger.pdf isolba.pdf UR054g.zip
- enfin, le shell exécute ls, avec les éléments suivants de la liste en argument. ls voit donc que le motif que tu lui demandes d'éviter est « bellanger.pdf », puis il voit deux arguments « isoalba.pdf » et « UR05g.zip », qu'il t'affiche tous les deux puis qu'il y a bien des fichiers portant ces noms, et que ce ne sont pas des répertoires (dans ce cas, il t'afficherait leur contenu).
J'ai, du shell, une vision prismée, pur enfant du basic que je suis (premières lignes de code sur un Sharp PC 1211 vers 1982) et premières lignes en GWbasic en 1986... Pourquoi, très précisément, si je demande d'exclure les fichiers avec un point, le shell ne m'affiche que ceux-là ? En ce cas, il m'aurait suffit de taper : ls *.* Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*' Les expressions régulières me causent bien des soucis... et ce n'est pas faute de me dire souvent : « Allez, ce coup-ci, je comprends... » Dominique, qui a sans doute la comprenette un peu laborieuse...
- le shell la découpe en trois éléments :
ls
-laI
*.*
- je saute quelques étapes qui n'ont pas d'importance ici.
- pour chaque élément, le shell regarde si il contient des étoiles (et
d'autres caractères spéciaux), et si oui, remplace cet élément par la liste
des fichiers qui matchent ce motif. Tu te retrouves donc avec :
ls
-laI
bellanger.pdf
isolba.pdf
UR054g.zip
- enfin, le shell exécute ls, avec les éléments suivants de la liste en
argument. ls voit donc que le motif que tu lui demandes d'éviter est
« bellanger.pdf », puis il voit deux arguments « isoalba.pdf » et
« UR05g.zip », qu'il t'affiche tous les deux puis qu'il y a bien des
fichiers portant ces noms, et que ce ne sont pas des répertoires (dans ce
cas, il t'afficherait leur contenu).
J'ai, du shell, une vision prismée, pur enfant du basic que je suis
(premières lignes de code sur un Sharp PC 1211 vers 1982) et premières
lignes en GWbasic en 1986...
Pourquoi, très précisément, si je demande d'exclure les fichiers avec un
point, le shell ne m'affiche que ceux-là ? En ce cas, il m'aurait suffit
de taper :
ls *.*
Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*'
Les expressions régulières me causent bien des soucis... et ce n'est pas
faute de me dire souvent : « Allez, ce coup-ci, je comprends... »
Dominique,
qui a sans doute la comprenette un peu laborieuse...
- le shell la découpe en trois éléments : ls -laI *.*
- je saute quelques étapes qui n'ont pas d'importance ici.
- pour chaque élément, le shell regarde si il contient des étoiles (et d'autres caractères spéciaux), et si oui, remplace cet élément par la liste des fichiers qui matchent ce motif. Tu te retrouves donc avec :
ls -laI bellanger.pdf isolba.pdf UR054g.zip
- enfin, le shell exécute ls, avec les éléments suivants de la liste en argument. ls voit donc que le motif que tu lui demandes d'éviter est « bellanger.pdf », puis il voit deux arguments « isoalba.pdf » et « UR05g.zip », qu'il t'affiche tous les deux puis qu'il y a bien des fichiers portant ces noms, et que ce ne sont pas des répertoires (dans ce cas, il t'afficherait leur contenu).
J'ai, du shell, une vision prismée, pur enfant du basic que je suis (premières lignes de code sur un Sharp PC 1211 vers 1982) et premières lignes en GWbasic en 1986... Pourquoi, très précisément, si je demande d'exclure les fichiers avec un point, le shell ne m'affiche que ceux-là ? En ce cas, il m'aurait suffit de taper : ls *.* Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*' Les expressions régulières me causent bien des soucis... et ce n'est pas faute de me dire souvent : « Allez, ce coup-ci, je comprends... » Dominique, qui a sans doute la comprenette un peu laborieuse...
lhabert
dominique :
Pourquoi, très précisément, si je demande d'exclure les fichiers avec un point, le shell ne m'affiche que ceux-là ? Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*'
Le shell ne t'affiche rien du tout, et ce n'est pas à lui que tu demandes d'exclure quoi que ce soit. Le shell, tu lui demandes de lancer ls avec les arguments que tu donnes sur la ligne de commande, mais en expansant les motifs non protégés suivant le mécanisme décrit dans mon message précédent.
Ensuite, l'exclusion, c'est au niveau de ls. C'est ls qui a une option « -I », qui prend l'argument suivant comme un motif servant à exclure des fichiers. Si tu protèges le motif, l'argument suivant va être « *.* ». ls se met donc à afficher le contenu du répertoire courant (puisqu'il n'y a pas d'argument indiquant quels fichiers ou répertoires afficher). Si tu ne protèges pas le motif, comme je l'expliquait dans le message précédent, il est remplacé par une liste de noms de fichiers, le premier de ces noms est considéré par ls comme un motif à exclure, et les suivants comme des noms de fichiers à afficher.
dominique :
Pourquoi, très précisément, si je demande d'exclure les fichiers avec un
point, le shell ne m'affiche que ceux-là ?
Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*'
Le shell ne t'affiche rien du tout, et ce n'est pas à lui que tu demandes
d'exclure quoi que ce soit. Le shell, tu lui demandes de lancer ls avec les
arguments que tu donnes sur la ligne de commande, mais en expansant les
motifs non protégés suivant le mécanisme décrit dans mon message précédent.
Ensuite, l'exclusion, c'est au niveau de ls. C'est ls qui a une option
« -I », qui prend l'argument suivant comme un motif servant à exclure des
fichiers. Si tu protèges le motif, l'argument suivant va être « *.* ». ls se
met donc à afficher le contenu du répertoire courant (puisqu'il n'y a pas
d'argument indiquant quels fichiers ou répertoires afficher). Si tu ne
protèges pas le motif, comme je l'expliquait dans le message précédent, il
est remplacé par une liste de noms de fichiers, le premier de ces noms est
considéré par ls comme un motif à exclure, et les suivants comme des noms de
fichiers à afficher.
Pourquoi, très précisément, si je demande d'exclure les fichiers avec un point, le shell ne m'affiche que ceux-là ? Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*'
Le shell ne t'affiche rien du tout, et ce n'est pas à lui que tu demandes d'exclure quoi que ce soit. Le shell, tu lui demandes de lancer ls avec les arguments que tu donnes sur la ligne de commande, mais en expansant les motifs non protégés suivant le mécanisme décrit dans mon message précédent.
Ensuite, l'exclusion, c'est au niveau de ls. C'est ls qui a une option « -I », qui prend l'argument suivant comme un motif servant à exclure des fichiers. Si tu protèges le motif, l'argument suivant va être « *.* ». ls se met donc à afficher le contenu du répertoire courant (puisqu'il n'y a pas d'argument indiquant quels fichiers ou répertoires afficher). Si tu ne protèges pas le motif, comme je l'expliquait dans le message précédent, il est remplacé par une liste de noms de fichiers, le premier de ces noms est considéré par ls comme un motif à exclure, et les suivants comme des noms de fichiers à afficher.
dominique
dominique :
Pourquoi, très précisément, si je demande d'exclure les fichiers avec un point, le shell ne m'affiche que ceux-là ? Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*'
Le shell ne t'affiche rien du tout, et ce n'est pas à lui que tu demandes d'exclure quoi que ce soit. Le shell, tu lui demandes de lancer ls avec les arguments que tu donnes sur la ligne de commande, mais en expansant les motifs non protégés suivant le mécanisme décrit dans mon message précédent.
Ensuite, l'exclusion, c'est au niveau de ls. C'est ls qui a une option « -I », qui prend l'argument suivant comme un motif servant à exclure des fichiers. Si tu protèges le motif, l'argument suivant va être « *.* ». ls se met donc à afficher le contenu du répertoire courant (puisqu'il n'y a pas d'argument indiquant quels fichiers ou répertoires afficher). Si tu ne protèges pas le motif, comme je l'expliquait dans le message précédent, il est remplacé par une liste de noms de fichiers, le premier de ces noms est considéré par ls comme un motif à exclure, et les suivants comme des noms de fichiers à afficher.
Ça y est ! J'ai compris ! Enfin, non, pas de trop. J'ai fait touch sur test et essai avec ou sans extension. J'ai ça comme résultat : [ Temp]$ ls -l total 14252 -rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in -rw-rw-r-- 1 normal normal 0 nov 26 16:46 test -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
J'indique une exclusion : [ Temp]$ ls -lI *.* -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Tous les fichiers sans extension sont exclus ainsi que le premier fichier avec .html. Ce n'est pas vraiment ce que j'attendais.
Je protège mon motif : [ Temp]$ ls -lI '*.*' total 4 -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in -rw-rw-r-- 1 normal normal 0 nov 26 16:46 test
J'ai la réponse attendue. C'est le comportement du motif non protégé que je comprends vraiment mal. La réponse est l'inverse de ce que j'attends en moins complète que :
[ Temp]$ ls -l *.* -rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Ou alors, ls lit le flux d'information et exclue le premier fichier de la liste (comportement normal de -I) puis ls affiche les fichiers qui répondent au motif *.*
Je crois que ça y est, je pige : [ Temp]$ touch aessai [ Temp]$ touch aessai.txt [ Temp]$ ls -l total 14252 -rw-rw-r-- 1 normal normal 0 nov 26 16:54 aessai -rw-rw-r-- 1 normal normal 0 nov 26 16:54 aessai.txt -rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in -rw-rw-r-- 1 normal normal 0 nov 26 16:46 test -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Là, j'ai le contenu de mon répertoire.
[ Temp]$ ls -lI *.* -rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Et là, finalement, je ne comprends pas pourquoi mon fichier aessai.txt n'apparaît pas ! Il répond pourtant bien au motif *.* !
Dominique
dominique :
Pourquoi, très précisément, si je demande d'exclure les fichiers avec un
point, le shell ne m'affiche que ceux-là ?
Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*'
Le shell ne t'affiche rien du tout, et ce n'est pas à lui que tu demandes
d'exclure quoi que ce soit. Le shell, tu lui demandes de lancer ls avec les
arguments que tu donnes sur la ligne de commande, mais en expansant les
motifs non protégés suivant le mécanisme décrit dans mon message précédent.
Ensuite, l'exclusion, c'est au niveau de ls. C'est ls qui a une option
« -I », qui prend l'argument suivant comme un motif servant à exclure des
fichiers. Si tu protèges le motif, l'argument suivant va être « *.* ». ls se
met donc à afficher le contenu du répertoire courant (puisqu'il n'y a pas
d'argument indiquant quels fichiers ou répertoires afficher). Si tu ne
protèges pas le motif, comme je l'expliquait dans le message précédent, il
est remplacé par une liste de noms de fichiers, le premier de ces noms est
considéré par ls comme un motif à exclure, et les suivants comme des noms de
fichiers à afficher.
Ça y est ! J'ai compris !
Enfin, non, pas de trop.
J'ai fait touch sur test et essai avec ou sans extension.
J'ai ça comme résultat :
[normal@localhost Temp]$ ls -l
total 14252
-rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt
drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 test
-rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt
-rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
J'indique une exclusion :
[normal@localhost Temp]$ ls -lI *.*
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt
-rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt
-rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Tous les fichiers sans extension sont exclus ainsi que le premier
fichier avec .html. Ce n'est pas vraiment ce que j'attendais.
Je protège mon motif :
[normal@localhost Temp]$ ls -lI '*.*'
total 4
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai
drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 test
J'ai la réponse attendue. C'est le comportement du motif non protégé que
je comprends vraiment mal. La réponse est l'inverse de ce que j'attends
en moins complète que :
[normal@localhost Temp]$ ls -l *.*
-rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt
-rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt
-rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Ou alors, ls lit le flux d'information et exclue le premier fichier de
la liste (comportement normal de -I) puis ls affiche les fichiers qui
répondent au motif *.*
Je crois que ça y est, je pige :
[normal@localhost Temp]$ touch aessai
[normal@localhost Temp]$ touch aessai.txt
[normal@localhost Temp]$ ls -l
total 14252
-rw-rw-r-- 1 normal normal 0 nov 26 16:54 aessai
-rw-rw-r-- 1 normal normal 0 nov 26 16:54 aessai.txt
-rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt
drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 test
-rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt
-rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Là, j'ai le contenu de mon répertoire.
[normal@localhost Temp]$ ls -lI *.*
-rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html
-rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt
-rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt
-rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Et là, finalement, je ne comprends pas pourquoi mon fichier aessai.txt
n'apparaît pas ! Il répond pourtant bien au motif *.* !
Pourquoi, très précisément, si je demande d'exclure les fichiers avec un point, le shell ne m'affiche que ceux-là ? Et pourquoi j'ai la bonne réponse en protégeant mon motif '*.*'
Le shell ne t'affiche rien du tout, et ce n'est pas à lui que tu demandes d'exclure quoi que ce soit. Le shell, tu lui demandes de lancer ls avec les arguments que tu donnes sur la ligne de commande, mais en expansant les motifs non protégés suivant le mécanisme décrit dans mon message précédent.
Ensuite, l'exclusion, c'est au niveau de ls. C'est ls qui a une option « -I », qui prend l'argument suivant comme un motif servant à exclure des fichiers. Si tu protèges le motif, l'argument suivant va être « *.* ». ls se met donc à afficher le contenu du répertoire courant (puisqu'il n'y a pas d'argument indiquant quels fichiers ou répertoires afficher). Si tu ne protèges pas le motif, comme je l'expliquait dans le message précédent, il est remplacé par une liste de noms de fichiers, le premier de ces noms est considéré par ls comme un motif à exclure, et les suivants comme des noms de fichiers à afficher.
Ça y est ! J'ai compris ! Enfin, non, pas de trop. J'ai fait touch sur test et essai avec ou sans extension. J'ai ça comme résultat : [ Temp]$ ls -l total 14252 -rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in -rw-rw-r-- 1 normal normal 0 nov 26 16:46 test -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
J'indique une exclusion : [ Temp]$ ls -lI *.* -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Tous les fichiers sans extension sont exclus ainsi que le premier fichier avec .html. Ce n'est pas vraiment ce que j'attendais.
Je protège mon motif : [ Temp]$ ls -lI '*.*' total 4 -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in -rw-rw-r-- 1 normal normal 0 nov 26 16:46 test
J'ai la réponse attendue. C'est le comportement du motif non protégé que je comprends vraiment mal. La réponse est l'inverse de ce que j'attends en moins complète que :
[ Temp]$ ls -l *.* -rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Ou alors, ls lit le flux d'information et exclue le premier fichier de la liste (comportement normal de -I) puis ls affiche les fichiers qui répondent au motif *.*
Je crois que ça y est, je pige : [ Temp]$ touch aessai [ Temp]$ touch aessai.txt [ Temp]$ ls -l total 14252 -rw-rw-r-- 1 normal normal 0 nov 26 16:54 aessai -rw-rw-r-- 1 normal normal 0 nov 26 16:54 aessai.txt -rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt drwxrwxr-x 10 normal normal 4096 nov 25 21:50 mplayerplug-in -rw-rw-r-- 1 normal normal 0 nov 26 16:46 test -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Là, j'ai le contenu de mon répertoire.
[ Temp]$ ls -lI *.* -rw-rw-r-- 1 normal normal 37422 nov 26 11:03 Conseil_2006.html -rw-rw-r-- 1 normal normal 0 nov 26 16:46 essai.txt -rw-rw-r-- 1 normal normal 0 nov 26 16:45 test.txt -rw-rw-r-- 1 normal normal 14527243 nov 16 07:27 UR054g.zip
Et là, finalement, je ne comprends pas pourquoi mon fichier aessai.txt n'apparaît pas ! Il répond pourtant bien au motif *.* !
Dominique
lhabert
Désolé, je ne vois pas comment t'expliquer autrement que je ne l'ai déjà fait. Essaye de relire mes messages, et de déduire avec quels arguments ls est vraiment lancé dans les cas que tu indiques.
Désolé, je ne vois pas comment t'expliquer autrement que je ne l'ai déjà
fait. Essaye de relire mes messages, et de déduire avec quels arguments ls
est vraiment lancé dans les cas que tu indiques.
Désolé, je ne vois pas comment t'expliquer autrement que je ne l'ai déjà fait. Essaye de relire mes messages, et de déduire avec quels arguments ls est vraiment lancé dans les cas que tu indiques.
dominique
Désolé, je ne vois pas comment t'expliquer autrement que je ne l'ai déjà fait. Essaye de relire mes messages, et de déduire avec quels arguments ls est vraiment lancé dans les cas que tu indiques.
Je te remercie. Je vais attendre un jour un peu plus éclairé pour comprendre :-) Je me souviens déjà qu'il faut protéger le motif pour que ls -I réponde à la question posée. J'ai déjà une partie de la solution. Bonne soirée, Dominique
Désolé, je ne vois pas comment t'expliquer autrement que je ne l'ai déjà
fait. Essaye de relire mes messages, et de déduire avec quels arguments ls
est vraiment lancé dans les cas que tu indiques.
Je te remercie. Je vais attendre un jour un peu plus éclairé pour
comprendre :-)
Je me souviens déjà qu'il faut protéger le motif pour que ls -I réponde
à la question posée. J'ai déjà une partie de la solution.
Bonne soirée,
Dominique
Désolé, je ne vois pas comment t'expliquer autrement que je ne l'ai déjà fait. Essaye de relire mes messages, et de déduire avec quels arguments ls est vraiment lancé dans les cas que tu indiques.
Je te remercie. Je vais attendre un jour un peu plus éclairé pour comprendre :-) Je me souviens déjà qu'il faut protéger le motif pour que ls -I réponde à la question posée. J'ai déjà une partie de la solution. Bonne soirée, Dominique