Que fait la commande bash “rm *~” faire?
La commande bash rm *~
seulement de supprimer les fichiers se terminant par un tilde ou est-il plus avancé bash ou gnu make modèle ici? Google ne semble pas en mesure de rechercher pour cela, deux combinaison de symboles. J'ai trouvé ça dans un Makefile propre: la cible.
Serait gnu make jamais créer des fichiers avec fuite de ~'s en utilisant uniquement les règles implicites?
- Habituellement, les gens suggèrent que vous "essayez et vous verrez". Mais je suppose que ce n'est pas toujours un bon plan avec le
rm
de commande. - Une bonne règle de base pour le test de rm est de changer rm à ls. Les fichiers de listes sont les fichiers rm supprimer
Vous devez vous connecter pour publier un commentaire.
La
~
(tilde) personnage a une signification particulière dans un chemin d'accès dans deux cas:Pour la plupart, c'est tout. La commande vous référer à fait exactement ce qu'il dirait qu'il n': supprime les fichiers dont le nom se termine par un tilde. Les éditeurs de texte comme emacs enregistrer des copies de sauvegarde de fichiers sous les noms de fichiers se terminant par des tildes.
Donc, cette commande est probablement utilisé pour éliminer ces copies de sauvegarde à partir du répertoire courant (mais pas les sous-répertoires). L'une des raisons pour lesquelles on voudrait le faire est si le répertoire sera copié sur un serveur web, comme le code côté serveur (par exemple, les fichiers PHP) peuvent contenir des informations sensibles comme les mots de passe.
rm * ~
Comme vous l'avez deviné,
rm *~
juste supprime les fichiers avec les noms se terminant par un tilde (~). Les noms de fichiers se terminant par un tilde sont généralement les fichiers de sauvegarde créés par les éditeurs (en particulier, emacs a été l'un des premiers éditeurs à utiliser la présente convention). Après l'édition du code source, il est courant d'avoir un certain nombre de ces fichiers laissés derrière. C'est pourquoi leclean
cible dans le Makefile supprime ces.Si
*~
est certains bash modèle n'est pas pertinent pour la plupart des makefiles, comme /bin/sh est utilisé par défaut pour exécuter produire des recettes. Seulement si la COQUILLE est définie dans le fichier makefile sera un autre shell utilisé.Un moyen facile de le voir faire ses règles implicites qui consiste à exécuter
make -p
dans un répertoire sans un makefile. Vous obtiendrez un message d'erreur disant pas de cibles spécifiées, mais rendent également imprimer les règles implicites qu'il utilise. Si vous grep cette sortie par un tilde, vous verrez qu'il y a pas de règles implicites que le nom des fichiers.Nope, tout ce que vous avez dit. Supprime les fichiers se terminant avec
~
.Edit -> la seule signification particulière la
~
personnage peut avoir, est aussi à court de main pour l'actuel répertoire home de l'utilisateur (comme$HOME
), mais seulement au début d'un chemin d'accès.J'ai utilisé cette commande pour effacer les fichiers se terminant par "~". Je pense qu'il n'y a aucun caractère d'échappement associé avec le symbole tilde.
Oui pour les deux
En fait, les deux possibilités sont un peu vrai.
Il n'y a pas de générique ou nom de fichier spécial de la syntaxe associée à
~
, sauf si elle se produit au début d'un mot.Mais le modèle de nom de fichier se terminant par un tilde est produite automatiquement par le
mv(1)
etcp(1)
programmes sur la plupart des distributions linux1 si le-b
(sauvegarde) option est spécifiée et que le fichier cible existe. Une règle sur un tel système peut contenir unmv -b ...
oucp -b ...
commande.1. Mais pas sur Mac ou BSD.