¿Cuál es la sintaxis para crear varios directorios con PowerShells MD (o mkdir, New-Item ...) equivalente al 'comando nix mkdir ch{1..9}
es decir,
~/parent_dir/
ch1/
ch2/
ch3/
ch4/
ch5/
ch6/
ch7/
ch8/
ch9/
He buscado ejemplos en las páginas de manual y en obtener ayuda, pero no conozco la sintaxis de PowerShell para hacer algo tan simple. Gracias.
linux
powershell
command-line-arguments
mkdir
Señor kennedy
fuente
fuente
1..9 | % $_{ md -name $("ch" + $_) }
:?1..9 | % $_{ mv ch$_*.* ch$_ }
: ^ Dgit add
y ver qué devuelve; tenga en cuenta que$_
dentro de un foreach solo está cada entrada de matriz individual del último elemento de canalización (lo que significa que elcommit
paso en su ejemplo no obtendrá números sin procesar, por lo que agregarch
nuevamente probablemente sea incorrecto ) Además, en su ejemplo, las confirmaciones solo se ejecutarían (?) Después de completar todas las adiciones, lo que significa que la primera confirmación obtendría todo ... Alternativamente, podría usar varias declaraciones (separadas por;
) dentro de un solo paso foreach.No necesita invocar mkdir varias veces, ya que
New-Item
puede tomar una variedad de rutas. Por ejemplo:@DavidPostill ha explicado la mayoría de los conceptos en su respuesta . Esto también aprovecha la interpolación de cadenas en lugar de realizar una concatenación explícita. Además,
%
se usa la taquigrafía en lugar deForEach-Object
, pero tiene el mismo significado.Desafortunadamente, no parece haber una manera fácil de interpolar una cadena en una matriz de cadenas como en bash.
fuente
md(0..9|%{"ch$_"})
md
es un alias estándar paramkdir
, que es una función de PowerShell.%
, como mencionó Bob, es un alias estándar paraForEach-Object
. Las cadenas entre comillas dobles interpolan variables, por lo que"ch$_"
es equivalente a'ch' + $_
. Puede buscar un alias ejecutandoGet-Command
(gcm
) en él.1..9 | %{"ch$_"} | %{git add "$_"; git commit -m "$_"}
o1..9 | %{$name = "ch$_"; git add "$name"; git commit -m "$name"}
. Estos comentarios se están volviendo un poco largos ahora, así que si tiene más preguntas, por favor hágalas como preguntas o tal vez entre al chat.Lo usaría para la versión en bucle, ya que es fácil de recordar y se puede aplicar a muchas situaciones. Incluso se puede usar para comandos múltiples.
Para un equivalente de este comando bash:
... en el uso de PowerShell:
fuente
Missing opening '(' after keyword 'for'.
este comando:foreach ($i in 1..9) {md ch$i}
me numera los directorios "ch" apter, pero no entiendo tu "for". ..; do ... hecho "loop.for($i=1; $i -le 10; $i++){md ch$i}
gracias mamun, pero aún no estoy "Bourne otra vez ...";) (ni sé C ++, pero creo que entiendo qué es "$ i-le" (si es menor o igual que?) Y "$ i ++" (~ "i + = 1"?) significa y está haciendo en el comando ...Crear múltiples directorios debajo del directorio actual:
Lo anterior es una versión abreviada de lo siguiente. Observe el signo at incluido delante de la matriz de cadenas y el uso de parámetros con nombre:
Y si quieres ir hasta el final, el comando nativo completo sería:
Cuando uso la línea de comandos de PowerShell, uso la versión corta.
Cuando escribo un script, especialmente uno para otros (que pueden ser nuevos en PowerShell), tiendo a escribir el comando nativo completo.
Elige lo que funcione mejor para ti.
fuente