Retourner aux forums || Retourner au forum Astuces.divers
Astuces.divers : [Terminal] effacer -machin
Posté par sebastien michel (page perso, ) le 22 mars 2002> Lire le message (26 commentaires, moyenne: 1,1).
l' "option" --
Cette option sert plus généralement a ignorer ce qui suit sur la ligne de commande. Il devient donc possible d'éffacer un fichier nomé -rf avec :
rm -- -rf
et pour supprier un fichier nomé .* :
on encadre le nom du fichier avec "" (pour que les caractéres spéciaux ne soient pas interprétés)
rm ".*"
-
[^]quotes
Posté par jbcombes () le 02/05/2002 à 13:49. (lien). Évalué à 1.Ce serait pas pluôt des simples quotes (apostrophes)?
Ecrire ".*" dans un shell sera transformé en la liste des fichiers commencant par .
Ecrire '.*' ne pas interprété d'aucune façon.-
[^]Re: quotes
Posté par Guillaume Gimenez (page perso, ) le 04/11/2002 à 15:02. (lien). Évalué à 1.> Ecrire ".*" dans un shell sera transformé en la liste des fichiers commencant par .
> Ecrire '.*' ne pas interprété d'aucune façon.
même pas vrai!
regarde plutôt ça:
-{ploki@jesus:~}-
$ A=coucou
-{ploki@jesus:~}-
$ echo $A *
coucou Desktop Documents GNUstep Nautilus nsmail
-{ploki@jesus:~}-
$ echo "$A *"
coucou *
-{ploki@jesus:~}-
$ echo '$A *'
$A *
-{ploki@jesus:~}-
$-
[^]Re: quotes
Posté par Dolmen () le 20/04/2003 à 00:35. (lien). Évalué à 1.Tu es dans l'erreur. Tes exmples ne montrent pas ce que tu affirmes. Essayes ceci : $ echo "Desk*" Desktop $echo 'Desk*' Desk* $
-
[^]Re: quotes
Posté par Guillaume Gimenez (page perso, ) le 22/04/2003 à 15:43. (lien). Évalué à 1.Bien sûr monsieur le gourou qui fait pas des vrais
screenshots pour prouver ce qu'il dit...
t'as qu'à faire
$ man bash
-
[^]Re: quotes
Posté par Salagnac () le 14/05/2003 à 11:10. (lien). Évalué à 1.Ici j'ai plutôt ça :
~ $bash --version
GNU bash, version 2.05a.0(1)-release (powerpc-ibm-aix4.3)
Copyright 2001 Free Software Foundation, Inc.
~ $echo "prog/*"
prog/*
~ $echo 'prog/*'
prog/*
~ $echo prog/*
prog/algo2 prog/bd prog/c prog/fvwm prog/irc prog/java prog/nedit_macros prog/projet_compil prog/rezo prog/systeme
donc je ne sais quoi conclure.
-
-
-
-
[^]Re: l'
Posté par matiasf () le 02/11/2002 à 03:41. (lien). Évalué à 1.> Cette option sert plus généralement a ignorer ce qui suit sur la ligne de commande
C'est plutôt pour indiquer que le paramètre suivant commançant pas un '-' n'est pas une option. Sinon, pour ignorer ce qui suit sur la ligne de commande c'est le caractère '#' .
"--" marche avec toute les commandes gnu. Exemple : pour voir s'il y a "-i" dans le fichier toto.txt
$ grep -- -i toto.txt
et
$ grep -- -i toto.txt # super cette commande
marche de la même façon.-
[^]Re: l'
Posté par Matafan () le 04/10/2003 à 20:56. (lien). Évalué à 1.Plus exactement c'est pour demander au getopt() d'arreter de jouer avec argv. Donc tout ce qui suit un « -- » (et pas seulent le prochain flag) est considéré par le programme comme faisant partie de ce qu'on appelle parfois les « non-option arguments ». Et ca marche avec tout ce qui utilise getopt(), gnu ou pas.
-
Autre méthode...
-
[^]Re: Autre méthode...
Posté par damien didier () le 18/07/2002 à 08:16. (lien). Évalué à 1.une autre méthode moins efficace, mais certainement plus sure:
ls -i pour avoir l'i-node du fichier à effacer; puis find . -inum inode -exec rm {} \;
Au fait, touch toto -t ne crée pas de fichier sur toutes les plateforme. Sur Cygwin et linux, touch se plaint qu'il ne connait pas l'option -t. Par contre sur Solaris, la commande fonctionne et crée le fichier -t.-
[^]Re: Autre méthode...
Posté par gnap gnap (page perso, ) le 16/11/2002 à 00:15. (lien). Évalué à 1.Sous linux ? C'est vague comme description.
Moi, avec GNU/Linux, j'ai
« Mettre à jour les dates d'accès et de modification de chaque FICHIER
selon la date courante.
Les arguments obligatoires pour les options de formes longues le sont aussi
pour les options de formes courtes.
-a modifier seulement la date d'accès
-c, --no-create ne créer aucun fichier
-d, --date=CHAÎNE analyser la CHAÎNE et l'utiliser au lieu
de la date courante
-f (ignorée)
-m modifier seulement la date de modification
-r, --file=FICHIER utiliser la date du FICHIER comme référence
au lieu de la date courante
-t DATE utiliser la DATE selon le format:
[[CC]AA]MMJJhhmm[.ss]
comme tampon date-heure au lieu de la date courante
--time=CODE -a pour « atime », -m pour « mtime », -m pour modifié,
-a pour utilisé
--help afficher l'aide-mémoire
--version afficher le nom et la version du logiciel
Noter que les options -d et -t acceptent différents formats de date et d'heure.
Rapporter toutes anomalies à <bug-coreutils@gnu.org>. »
Donc une option -t, avec GNU coreutils.
Mais bien entendu, tu parlais de « linux », et donc il n'est pas certain que tu parlais du touch de GNU.-
[^]Re: Autre méthode...
Posté par damien didier () le 06/12/2002 à 10:17. (lien). Évalué à 1.voici ce que j'obtiens comme info sur mon "touch"
>touch --version
touch (GNU fileutils) 4.0.36
Writen by Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy.
...
>
Ce que je voulais dire c'est que sur certaines plateformes on va creer le fichier -t . Auquel cas l'astuce proposée est valable. Sur d'autre plateforme plus intelligente, touch va d'abord faire une verification de ses arguments et ne va pas laisser passer le fait que si on lui donne une option apres le nom d'un fichier ca ne correspond pas a l'utilisation normale de la commande.-
[^]Re: Autre méthode...
Posté par gnumdk (page perso, ) le 08/02/2003 à 10:53. (lien). Évalué à 1.>-t
Touch suxor :)
Comme ca, il n'y a pas d'ambiguité, sur toute les platformes, le -t sera créer.-
[^]Re: Autre méthode...
Posté par Matthieu Moy (page perso, ) le 13/03/2003 à 15:21. (lien). Évalué à 1.toutes les plateformes ?
$ > toto
Invalid null command.
$ touch toto
$ rm toto
rm: remove `toto'? y
(Hint : J'utilise tcsh)-
[^]Re: Autre méthode...
-
-
-
-
-
[^]Re: Autre méthode...
Posté par Matthieu Moy (page perso, ) le 26/12/2002 à 13:40. (lien). Évalué à 1.Plus sure ?
Essaie la commande
find . -inum inode -exec echo {} \;
pour te convaincre que ta ligne de commande a base de find execute exactement la meme chose que rm ./-toto.-
[^]Re: Autre méthode...
Posté par Dolmen () le 20/04/2003 à 00:52. (lien). Évalué à 0.La remarque de Damien était pertinente. En effet, le but est d'éviter l'interprétation des caractères spéciaux par le shell. Exemple : $ echo / > '`rm -Rf $HOME`' $ ls `rm -Rf $HOME` À ton avis, que se passera-t-il (n'essaye pas) si tu tapes : $ rm `rm -Rf $HOME` Pour effacer ce fichier, il faudra que tu utilises une autre astuce que rm ./`rm -Rf $HOME` pour contrecarrer les caractères spéciaux présents dans le nom. Et dans ce cas, l'astuce de Damien évite tout effet de bord, car find ne passe pas par un sous-shell pour lancer l'exécution de rm.
-
[^]Re: Autre méthode...
Posté par Matafan () le 04/10/2003 à 21:06. (lien). Évalué à 1.Je déconseille vivement le coup du find pour la raison suivante : si plusieurs filesystems sont montés sous le répertoire sur lequel tu lance le find, ça va effacer tous les fichiers qui ont ce numéro d'inode sur tous les devices montés sous ce répertoire. A moins d'utiliser l'option -xdev (ou -mount) de find.
Le but était de faire plus sûr, mais pour le coup la solution est plutôt pire que le problème...
-
-
-
Re: effacer -machin
Petit ajout a cette note :)
Exemple :
/home/toto
/home/~toto
cd /home
il ne faut pas faire rm -rf ~toto, sinon vous supprimer le répertoire de l'utilisateur toto (/home/toto).
mais bien rm -rf "~toto" ou le chemin complet /home/~toto :)
@+ Whoo
-
[^]Re: effacer -machin
-
[^]Re: effacer -machin
Posté par Brice Carpentier (Jabber id, page perso, ) le 03/11/2002 à 22:59. (lien). Évalué à 1.ca te met "same player try again"
--
Développeur OpenSource
-
Re: effacer -machin
tient tient,
nous voyons donc ici : (d'après les posts)
soit la non-complétude des normes UNIX
soit le non respet de ces normes.
reste à déterminer la cible et : jetez les pierres !
http://www.unix.org/single_unix_specification/(...)
Single-Quotes
Enclosing characters in single-quotes ( '' ) shall preserve the literal value of each character within the single-quotes. A single-quote cannot occur within single-quotes.
Double-Quotes
Enclosing characters in double-quotes ( "" ) shall preserve the literal value of all characters within the double-quotes, with the exception of the characters dollar sign, backquote, and backslash, as follows:
l'étoile devrait être donc préservée dans la double quote.
unlink
Sous unix en général, la commande pour supprimer un fichier d'un répertoire, c'est unlink : comme il ne prend pas d'options, la question est réglée :
unlink '-Rf'
etc.
En revanche, sous Linux en particulier, la commande ne fonctionne pas pour les répertoires (il faut utiliser rmdir).
Revenir en haut de page || Retourner aux forums || Retourner au forum Astuces.divers



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.