RMDIR
Enlever un répertoire
En bref
La commande Enlever un répertoire (RMDIR) enlève du système le répertoire spécifié, une fois que les liens à tous les objets qu'il contient ont été supprimés et que le répertoire n'est plus en cours d'utilisation.
Syntaxe minimale
RMDIR DIR(…)
Paramètres
Astuce : dans une session 5250, tapez RMDIR puis F4 pour
l'invite de saisie, et F1 sur un paramètre pour son aide.
Aide IBM i de la commande
Texte du F1, IBM i 7.5 en français
(bibliothèque QSYS)
Où s'exécute : Tous les environnements (*ALL)
Compatible multitâche : Non
La commande Enlever un répertoire (RMDIR) enlève du système le répertoire spécifié, une fois que les liens à tous les objets qu'il contient ont été supprimés et que le répertoire n'est plus en cours d'utilisation. Si un répertoire à retirer contient des objets, cette commande peut, le cas échéant, supprimer les liens qui leur sont associés, puis elle supprime le répertoire. Si l'utilisateur ne dispose pas des droits nécessaires pour délier tous les objets du répertoire, seuls les objets auxquels il a accès sont traités. Lorsqu'un lien ne peut pas être dissocié d'un objet, ni le répertoire, ni les objets dont le lien ne peut pas être supprimé ne sont enlevés.
Cette commande permet également de supprimer une arborescence de répertoires au même emplacement que le répertoire indiqué, son contenu et le contenu de tous ses sous-répertoires. Si SUBTREE(*ALL) ou RMVLNK(*YES) est précisé, la commande tente de supprimer un maximum d'objets de la sous-arborescence. Un message de diagnostic est émis pour chaque objet qui ne peut pas être supprimé. Une fois l'opération tentée sur tous les objets, un message d'arrêt programme est envoyé en cas d'erreur. Si tous les objets ont été supprimés sans erreur, un message d'achèvement est émis.
En cas de détection d'un lien symbolique, que celui-ci apparaisse dans le paramètre Répertoire (DIR) ou soit rencontré en cours de traitement d'une sous-arborescence, ce lien n'est pas suivi.
Remarque :Le lien symbolique est supprimé si SUBTREE(*ALL) a été indiqué pour la commande.
Cette commande est un alias de la commande Enlever un répertoire (RMVDIR). Elle constitue également l'équivalent des commandes suivantes :
- RD
- RMVDIR
Pour plus d'informations sur les commandes du système de fichiers intégré, reportez-vous aux Rubriques Système de fichiers intégré de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
Restrictions :
- Dans les systèmes de fichiers racine (/), QOpenSys et définis par l'utilisateur, ce dernier doit disposer du droit d'existence sur l'objet (*OBJEXIST) pour le répertoire indiqué et sur chacun des objets qu'il contient. Si l'utilisateur ne dispose pas du droit *OBJEXIST sur un ou plusieurs objets du répertoire, les liens de ces derniers ne sont pas supprimés et le répertoire n'est pas supprimé.
- Dans les systèmes de fichiers racine (/), QOpenSys et définis par l'utilisateur, ce dernier doit disposer du droit d'écriture et d'exécution (*WX) sur tous les objets répertoire non vides à supprimer, y compris le répertoire parent.
- Dans le système de fichiers QDLS, l'utilisateur doit disposer du droit *ALL sur le répertoire et du droit d'exécution (*X) sur le répertoire parent.
- L'utilisateur doit disposer du droit d'exécution (*X) sur le répertoire contenant les préfixes.
- Pour connaître les droits requis pour d'autres systèmes de fichiers, consultez le document IBM i Security Reference, SC41-5302.
- Un utilisateur ne peut pas supprimer un lien d'objet dans un répertoire du système de fichiers racine (/), QOpenSys ou défini par l'utilisateur, dans lequel l'attribut de restriction des opérations de changement de nom et de suppression de lien est activé (cet attribut est identique au bit mode S_ISVTX), excepté si l'une au moins des des conditions suivantes est remplie :
- L'utilisateur est le propriétaire du lien d'objet à supprimer.
- L'utilisateur est le propriétaire du répertoire parent du lien d'objet à supprimer.
- L'utilisateur dispose des droits spéciaux sur tous les objets (*ALLOBJ).
- Un répertoire ne peut pas être supprimé s'il s'agit du répertoire en cours pour un travail.
- Cette commande ne peut pas être utilisée pour supprimer des répertoires ou des bibliothèques réservés.
- Lorsqu'un objet est ouvert dans le système de fichiers QSYS.LIB, SQYS.LIB d'ASP indépendant ou QDLS, le lien de cet objet ne peut pas être supprimé. Lorsqu'un objet est ouvert dans le système de fichiers QOpenSys ou le système de fichiers racine (/), le lien de cet objet est supprimé et ce dernier est supprimé une fois refermé.
- Lors du traitement d'une sous-arborescence, l'utilisateur doit disposer des droits de lecture (*R) et d'exécution (*X) sur le nom de chemin et sur tous les sous-répertoires de ce chemin.
- Si SUBTREE(*ALL) est précisé, les restrictions et les différences de systèmes de fichiers indiquées pour la commande Enlever un lien (RMVLNK) valent également pour cette application de cette commande.
Répertoire (DIR)
Indique le nom de chemin du répertoire à enlever ou un masque qui correspond à plusieurs répertoires.
Il peut s'agir d'un nom simple ou d'un nom qualifié indiquant le nom du répertoire contenant l'objet. Vous pouvez indiquer un masque pour la dernière partie du nom. Un astérisque (*) correspond à un nombre quelconque de caractères, alors qu'un point d'interrogation (?) correspond à un caractère unique. Si le nom est qualifié ou contient un masque, il doit être placé entre apostrophes (').
Pour obtenir de plus amples informations relatives à la spécification des noms de chemin, reportez-vous à "Object naming rules" dans la rubrique Rubriques CL de la catégorie Programmation de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
Remarque :Ce paramètre est compatible Unicode. Pour plus d'informations, reportez-vous à la section sur la prise en charge Unicode dans CL, dans les Rubriques CL de la catégorie Programmation de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
Branche du répertoire (SUBTREE)
Indique si tous les liens d'objets figurant dans la sous-arborescence doivent être supprimés ou non lorsque l'objet indiqué au paramètre Répertoire (DIR) est un répertoire.
Vous pouvez utiliser soit le paramètre Branche du répertoire (SUBTREE), soit le paramètre Enlever un lien (RMVLNK), mais pas les deux.
- *NONE
- Le répertoire identifié par DIR n'est supprimé que s'il est vide. Un répertoire peut contenir des postes pour lui-même (.) et pour le répertoire parent (..) et être néanmoins traité comme un répertoire vide.
- *ALL
- Les liens d'objets qui se trouvent dans le répertoire identifié par DIR sont supprimés. Le contenu du répertoire est supprimé, de même que le contenu de tous ses sous-répertoires.
Remarque :Le filtrage du paramètre DIR ne s'applique qu'aux objets de premier niveau. Si l'objet de premier niveau est un répertoire, le filtrage ne s'applique pas à son contenu, ni au contenu de ses sous-répertoires.
Une fois que la commande a commencé à traiter une branche d'un répertoire spécifique, les objets localisés et traités peuvent être affectés par les opérations qui mettent à jour l'organisation des objets dans l'arborescence de répertoire spécifiée. Cela inclut, sans caractère limitatif, les éléments suivants :
- Ajout, suppression ou nouvelle dénomination des liens d'objet
- Montage ou démontage des systèmes de fichiers
- Mise à jour du répertoire racine effectif pour le processus qui appelle la commande
- Mise à jour du contenu d'un lien symbolique
Pour traiter la branche du répertoire, le code du système peut augmenter le nombre maximal de descripteurs de fichier, dans la portée du processus, qui peuvent être ouverts lors du traitement. Cette opération est effectuée afin que la commande ne soit pas susceptible d'échouer en raison d'un manque de descripteurs. Cette valeur maximale de portée de processus n'est pas réinitialisée à la fin de la commande.
Enlever un lien (RMVLNK)
Indique si les liens à tous les objets du répertoire doivent être supprimés ou si la suppression du répertoire ne doit pas être admise tant qu'il contient des objets.
Vous pouvez utiliser soit le paramètre Branche du répertoire (SUBTREE), soit le paramètre Enlever un lien (RMVLNK), mais pas les deux.
- *NO
- Seul un répertoire vide est enlevé. Un répertoire peut contenir des postes pour lui-même (.) et pour le répertoire parent (..) et être néanmoins traité comme un répertoire vide.
- *YES
- Tous les liens d'objets qui se trouvent dans le répertoire indiqué sont supprimés. Si le système de fichiers contenant le répertoire ne prend pas en charge la suppression des liens dans ce répertoire et si celui-ci comporte des liens d'objets, le message d'erreur CPFA0AC "Le répertoire contient des objets. Le répertoire est &1." s'affiche.
Remarque :Les systèmes de fichiers QDLS, QSYS.LIB et QSYS.LIB d'ASP indépendant ne prennent pas en charge la suppression de liens via la définition de ce paramètre. Pour tous les autres systèmes de fichiers, utilisez la définition de paramètre SUBTREE(*ALL).
Remarque :Le filtrage du paramètre DIR ne s'applique qu'aux objets de premier niveau. Si l'objet de premier niveau est un répertoire, le filtrage ne s'applique pas à son contenu, ni au contenu de ses sous-répertoires.
Exemples
L'autre nom de la commande RMDIR est RMVDIR. II est utilisé dans les exemples ci-dessous, mais peut être remplacé directement par RMDIR.
Exemple 1 : Suppression d'un répertoire et de ses objets
RMVDIR DIR('/QSYS.LIB/JULES.LIB') RMVLNK(*YES)
Cette commande supprime le répertoire /QSYS.LIB/JULES.LIB après suppression des liens associés à tous ses objets. Si le répertoire /QSYS.LIB/JULES.LIB contient des objets, tous ces objets sont déliés et le répertoire est ensuite supprimé.
Exemple 2 : Suppression d'un répertoire vide
RMVDIR DIR('/QSYS.LIB/VIDE.LIB') RMVLNK(*NO)
Cette commande supprime le répertoire vide /QSYS.LIB/VIDE.LIB.
Les exemples suivants s'appuient sur l'arborescence représentée ci-dessous :
---- rép2
/
/--rép1 ------- rép3
ç ç ç
ç ç -- obj1
ç ç
ç -- rép4 -- rép5 -- rép6
ç ç
-- obj3 -- obj2
obj4
Exemple 3 : Suppression d'un répertoire et de ses objets avec traitement des sous-arborescences
RMVDIR DIR('/rép1/rép4'') SUBTREE(*ALL)
Cette commande supprime l'arborescence de répertoires rép4. Cette suppression implique les objets obj2,rép6,rép5 et rép4.
Exemple 4 : Suppression d'un répertoire sans traitement des sous-arborescences
RMVDIR DIR('/rép1/rép2') SUBTREE(*NONE)
Cette commande supprime le répertoire /rép1/rép2 du fait qu'il est vide.
Exemple 5 : Suppression d'un groupe de répertoires avec critères de concordance et traitement des sous-arborescences
RMVDIR DIR('/rép1/r*') SUBTREE(*ALL)
La suppression va porter ici sur les objets obj1 et obj2 et sur les répertoires rép2,rép3,rép5,rép6 et rép4. Les objets obj3 et obj4 ne seront pas supprimés, ceci du fait qu'ils ne répondent pas au modèle de nom indiqué et qu'ils n'occupent pas un répertoire répondant à ce modèle de nom.
Messages d'erreur
Messages *ESCAPE
- CPFA085
- Répertoire initial de l'utilisateur &1 introuvable.
- CPFA093
- Aucun nom ne correspond au masque indiqué.
- CPFA09C
- Aucun droit sur l'objet. L'objet est &1.
- CPFA09D
- Erreur dans le programme &1.
- CPFA09E
- L'objet est en cours d'utilisation. L'objet est &1.
- CPFA0A1
- Erreur d'entrée ou de sortie.
- CPFA0A3
- La résolution du nom de chemin provoque une boucle.
- CPFA0A7
- Le nom de chemin est trop long.
- CPFA0A9
- Objet introuvable. L'objet est &1.
- CPFA0AA
- Une erreur s'est produite pendant l'allocation d'espace.
- CPFA0AB
- Erreur d'opération pour l'objet. L'objet est &1.
- CPFA0AC
- Le répertoire contient des objets. Le répertoire est &1.
- CPFA0AD
- Fonction non acceptée par le système de fichiers.
- CPFA0B1
- Opération demandée non admise. Incident d'accès.
- CPFA0B2
- Aucun objet ne correspond à la demande.
- CPFA0B7
- &3 liens d'objets supprimés. &4 liens d'objets non supprimés.
© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.