Quelle est la syntaxe pour créer plusieurs répertoires avec PowerShells md (ou mkdir, New-Item ...) équivalent à la commande 'nix mkdir ch{1..9}
ie
~/parent_dir/
ch1/
ch2/
ch3/
ch4/
ch5/
ch6/
ch7/
ch8/
ch9/
J'ai cherché dans les pages de manuel et get-help des exemples, mais je ne connais pas la syntaxe pour PowerShell pour faire une chose aussi simple. Je vous remercie.
linux
powershell
command-line-arguments
mkdir
M. Kennedy
la source
la source
1..9 | % $_{ md -name $("ch" + $_) }
:?1..9 | % $_{ mv ch$_*.* ch$_ }
:: ^ Dgit add
et voir ce qu'il renvoie - gardez à l'esprit que$_
dans chaque foreach se trouve uniquement chaque entrée de tableau individuelle du dernier élément du pipeline (ce qui signifie que l'commit
étape de votre exemple n'obtiendra pas de nombres bruts, donc l'ajout àch
nouveau est probablement faux ). De plus, dans votre exemple, les validations ne s'exécuteraient (?) Qu'après la fin de tous les ajouts, ce qui signifie que la première validation obtiendrait tout ... Alternativement, vous pouvez utiliser plusieurs instructions (séparées par;
) à l'intérieur d'une seule étape foreach.Vous n'avez pas besoin d'appeler mkdir plusieurs fois, car vous
New-Item
pouvez prendre un tableau de chemins. Par exemple:@DavidPostill a expliqué la plupart des concepts dans sa réponse . Cela profite également de l' interpolation de chaînes au lieu d'effectuer une concaténation explicite. De plus, le
%
raccourci est utilisé à la place deForEach-Object
, mais a la même signification.Malheureusement, il ne semble pas être un moyen facile d'interpoler une chaîne dans un tableau de chaînes comme dans bash.
la source
md(0..9|%{"ch$_"})
md
est un alias standard pourmkdir
, qui est une fonction PowerShell.%
, comme Bob l'a mentionné, est un alias standard pourForEach-Object
. Les chaînes entre guillemets doubles interpolent les variables,"ch$_"
est donc équivalent à'ch' + $_
. Vous pouvez rechercher un alias en exécutantGet-Command
(gcm
) dessus.1..9 | %{"ch$_"} | %{git add "$_"; git commit -m "$_"}
ou1..9 | %{$name = "ch$_"; git add "$name"; git commit -m "$name"}
. Ces commentaires deviennent un peu longs maintenant, donc si vous avez d'autres questions - veuillez les poser en tant que questions, ou peut-être passer au chat.J'utiliserais pour la version en boucle car elle est facile à retenir et peut être appliquée à de nombreuses situations. Même il peut être utilisé pour plusieurs commandes.
Pour un équivalent de cette commande bash:
... dans l'utilisation de PowerShell:
la source
Missing opening '(' after keyword 'for'.
Cette commande:foreach ($i in 1..9) {md ch$i}
me fait numéroter les répertoires apter "ch", mais je ne comprends pas votre "pour. ..; do ... done "boucle.for($i=1; $i -le 10; $i++){md ch$i}
merci mamun, mais je ne suis pas encore "Bourne encore ...";) (je ne connais pas non plus le C ++, mais je pense que je comprends en quelque sorte ce "$ i-le" (si inférieur ou égal à?) Et "$ i ++" (~ "i + = 1"?) signifie et fait dans la commande ...Créez plusieurs répertoires sous le répertoire actuel:
Ce qui précède est une version abrégée des éléments suivants. Remarquez le signe at inclus devant le tableau de chaînes et l'utilisation de paramètres nommés:
Et si vous voulez aller jusqu'au bout, la commande native complète serait:
Lorsque j'utilise la ligne de commande PowerShell, j'utilise la version courte.
Lors de l'écriture d'un script, en particulier un pour les autres (qui pourraient être nouveaux dans PowerShell), j'ai tendance à écrire la commande native complète.
Choisissez ce qui vous convient le mieux.
la source