Qual é a sintaxe para criar vários diretórios com o PowerShells md (ou mkdir, New-Item ...) equivalente ao comando 'nix, mkdir ch{1..9}
ou seja,
~/parent_dir/
ch1/
ch2/
ch3/
ch4/
ch5/
ch6/
ch7/
ch8/
ch9/
Procurei nas páginas de manual e na ajuda de exemplos, mas não conheço a sintaxe do PowerShell para fazer uma coisa tão simples. Obrigado.
linux
powershell
command-line-arguments
mkdir
Sr. Kennedy
fonte
fonte
1..9 | % $_{ md -name $("ch" + $_) }
:?1..9 | % $_{ mv ch$_*.* ch$_ }
:: ^ Dgit add
e ver o que ele retorna - lembre-se de que$_
dentro de um foreach há apenas cada entrada de matriz individual do último item do pipeline (o que significa que acommit
etapa do seu exemplo não terá números brutos, portanto, adicionarch
novamente provavelmente está errado ) Além disso, no seu exemplo, as confirmações somente (?) Seriam executadas após a conclusão de todas as inclusões, o que significa que a primeira confirmação obteria tudo ... Como alternativa, você pode usar várias instruções (separadas por;
) dentro de uma única etapa foreach.Você não precisa invocar o mkdir várias vezes, pois
New-Item
pode seguir uma variedade de caminhos. Por exemplo:@DavidPostill explicou a maioria dos conceitos em sua resposta . Isso também aproveita a interpolação de cadeias em vez de executar uma concatenação explícita. Além disso, a
%
abreviação é usada em vez deForEach-Object
, mas tem o mesmo significado.Infelizmente, não parece haver uma maneira fácil de interpolar uma string em uma matriz de strings, como no bash.
fonte
md(0..9|%{"ch$_"})
md
é um alias padrão paramkdir
, que é uma função do PowerShell.%
, como Bob mencionou, é um alias padrão paraForEach-Object
. Seqüências de caracteres entre aspas duplas interpolam variáveis, portanto,"ch$_"
é equivalente a'ch' + $_
. Você pode procurar um alias executandoGet-Command
(gcm
) nele.1..9 | %{"ch$_"} | %{git add "$_"; git commit -m "$_"}
ou1..9 | %{$name = "ch$_"; git add "$name"; git commit -m "$name"}
. Esses comentários estão demorando um pouco agora, então se você tiver mais perguntas, faça-as como perguntas ou talvez entre no bate-papo.Eu usaria para a versão em loop, pois é fácil de lembrar e pode ser aplicado a muitas situações. Mesmo ele pode ser usado para vários comandos.
Para um equivalente a este comando bash:
... no PowerShell, use:
fonte
Missing opening '(' after keyword 'for'.
Este comando:foreach ($i in 1..9) {md ch$i}
recebe os diretórios "ch" apter numerados, mas não entendo o seu "para". ..; do ... done "loop.for($i=1; $i -le 10; $i++){md ch$i}
obrigado mamun, mas ainda não sou "Bourne de novo ...";) (nem conheço C ++, mas acho que devo entender o que "$ i-le" (se for menor ou igual a?) E "$ i ++" (~ "i + = 1"?) média e estão fazendo no comando ...Crie vários diretórios abaixo do diretório atual:
A descrição acima é uma versão abreviada do seguinte. Observe o sinal de arroba incluído na frente da matriz de strings e o uso dos parâmetros nomeados:
E se você quiser ir até o fim, o comando nativo completo seria:
Ao usar a linha de comando do PowerShell, uso a versão curta.
Ao escrever um script, especialmente um para outros (que podem ser novos no PowerShell), costumo escrever o comando nativo completo.
Escolha o que funciona melhor para você.
fonte