Jaka jest składnia do tworzenia wielu katalogów za pomocą PowerShells md (lub mkdir, New-Item ...) odpowiednik polecenia 'nix mkdir ch{1..9}
to znaczy
~/parent_dir/
ch1/
ch2/
ch3/
ch4/
ch5/
ch6/
ch7/
ch8/
ch9/
Zajrzałem do stron man i get-help na przykładach, ale nie znam składni PowerShell, aby zrobić tak prostą rzecz. Dziękuję Ci.
linux
powershell
command-line-arguments
mkdir
Mr. Kennedy
źródło
źródło
1..9 | % $_{ md -name $("ch" + $_) }
?1..9 | % $_{ mv ch$_*.* ch$_ }
: ^ Dgit add
i zobacz, co wróci - pamiętaj o tym$_
wewnątrz foreach jest tylko każdy indywidualny wpis tablicy ostatniego elementu potoku (co oznaczacommit
krok w twoim przykładzie nie dostanie surowych liczb, więc dodaniech
znowu prawdopodobnie jest źle). Ponadto, w twoim przykładzie, zatwierdzenia będą tylko (?) Uruchamiane po wykonaniu wszystkich dodatków, co oznacza, że pierwsze zatwierdzenie otrzyma wszystko ... Alternatywnie, możesz użyć wielu instrukcji (rozdzielonych przez;
) w jednym kroku foreach.Nie musisz wielokrotnie wywoływać mkdir, ponieważ
New-Item
może wziąć szereg ścieżek. Na przykład:@DavidPostill wyjaśnił większość pojęć w jego odpowiedź . To także wykorzystuje interpolacja napisów zamiast wykonywania jawnej konkatenacji. Dodatkowo
%
skrót jest używany zamiastForEach-Object
, ale ma to samo znaczenie.Niestety, nie ma łatwego sposobu na interpolowanie ciągu znaków do tablicy ciągów, jak w bashu.
źródło
md(0..9|%{"ch$_"})
md
to standardowy alias dlamkdir
, która jest funkcją PowerShell.%
, jak wspomniał Bob, to standardowy alias dlaForEach-Object
. Podwójnie cytowane łańcuchy interpolują zmienne, więc"ch$_"
jest równa'ch' + $_
. Możesz wyszukać alias, uruchamiającGet-Command
(gcm
) na tym.1..9 | %{"ch$_"} | %{git add "$_"; git commit -m "$_"}
lub1..9 | %{$name = "ch$_"; git add "$name"; git commit -m "$name"}
. Te komentarze są teraz nieco dłuższe, więc jeśli masz dalsze pytania - zadaj je jako pytania, a może wpadnij na czat.Używałbym wersji pętli, ponieważ jest łatwa do zapamiętania i może być stosowana w wielu sytuacjach. Nawet można go użyć do wielokrotnego polecenia.
Dla odpowiednika tego polecenia bash:
... w użyciu PowerShell:
źródło
Missing opening '(' after keyword 'for'.
To polecenie:foreach ($i in 1..9) {md ch$i}
pobiera mi numerowane katalogi „ch”, ale nie rozumiem twojej pętli „for ...; do ... done”.for($i=1; $i -le 10; $i++){md ch$i}
dzięki mamun, ale jeszcze nie jestem "Bourne ponownie ...";) (ani nie znam C ++, ale myślę, że rozumiem, co "$ i-le" (jeśli jest mniejsze lub równe?) i "$ i ++ "(~" i + = 1 "?) oznacza i robi w poleceniu ...