[shell] créer un répertoire, un sous-répertoire, un sous-sous répertoire, en un coup! (mkdirhier / mkdir -p)
Supposons que vous êtes (sous GNU/Linux ou unix, sous un terminal avec pour shell bash ou un autre similaire) dans le répertoire (ou “dossier”) /current/ , que /current/existant/ existe déjà et que vous voulez créer les répertoires /current/existant/new_dir_0/ , /current/existant/new_dir_0/sub_dir_1/ , /current/existant/new_dir_0/sub_dir_1/sub_sub_dir_2/ en une seule ligne…
La version longue et assez connue est bien sûr:
mkdirnew_dir_0/-
mkdir new_dir_0/sub_dir_1/ mkdir new_dir_0/sub_dir_1/sub_sub_dir_2/
Bien tout cela peut remplace facilement par:
mkdir -p new_dir_0/sub_dir_1/sub_sub_dir_2/
(ou mkdirhier new_dir_0/sub_dir_1/sub_sub_dir_2/ )
Note 1 (pour mkdirhier): il faut que mkdirhier soit présent sur votre système, ce qui n’est pas évident du tout sur un serveur accédé en ssh… (mkdirhier a généralement pour chemin /usr/bin/X11/mkdirhier…). Il est donc plutôt conseillé de retenir mkdir -p.
Note 2: “mkdirhier” pour “make directory hierarchy”…
April 30th, 2008 at 1:58 pm
Et mkdir -p, ça pue ?
mkdir -p new_dir0/sub_dir_1/sub_sub_dir2
May 1st, 2008 at 1:17 am
et mkdir -p ?
[Shnoulle@chenu ~]$ mkdir --helpUsage: mkdir [OPTION] RÉPERTOIRE...
Créer le(s) RÉPERTOIRE(s) si il(s) n'existe(nt) pas.
-Z, --context=CONTEXT (SELinux) set security context to CONTEXT
Les arguments obligatoires pour les options de formes longues le sont aussi
pour les options de formes courtes.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
--help afficher l'aide-mémoire
--version afficher le nom et la version du logiciel
;)
May 1st, 2008 at 1:50 pm
Moi j’utilise l’option -p de mkdir depuis longtemps :
mkdir -p new_dir_0/sub_dir_1/sub_sub_dir_2/
En regardant le manuel de mkdirhier, il s’avère que c’est juste un wrapper vers mkdir -p.
May 11th, 2008 at 8:46 am
@Pinaraf, Shnoulle: Oups… Me suis un peu laissé piégé par une page man que j’ai lu trop vite…
@Vincent: Pas indiqué dans ma page man (pour moi version *actuellement* trouvable sur http://linuxcommand.org/man_pages/mkdirhier1.html).