Apa sintaks untuk membuat beberapa direktori dengan PowerShells md (atau mkdir, New-Item ...) setara dengan perintah 'nix mkdir ch{1..9}
yaitu
~/parent_dir/
ch1/
ch2/
ch3/
ch4/
ch5/
ch6/
ch7/
ch8/
ch9/
Saya telah melihat halaman manual dan mendapatkan bantuan untuk contoh, tapi saya tidak tahu sintaks untuk PowerShell untuk melakukan hal yang begitu sederhana. Terima kasih.
linux
powershell
command-line-arguments
mkdir
Tuan Kennedy
sumber
sumber
1..9 | % $_{ md -name $("ch" + $_) }
:?1..9 | % $_{ mv ch$_*.* ch$_ }
:: Dgit add
dan melihat apa yang dikembalikan - perlu diingat bahwa$_
di dalam foreach hanya setiap entri array individu dari item pipa terakhir (yang berarticommit
langkah dalam contoh Anda tidak akan mendapatkan angka mentah, jadi menambahkanch
lagi mungkin salah ). Juga, dalam contoh Anda, komit hanya akan (?) Berjalan setelah semua penambahan dilakukan, yang berarti komit pertama akan mendapatkan segalanya ... Atau, Anda dapat menggunakan beberapa pernyataan (dipisahkan oleh;
) di dalam satu langkah foreach tunggal.Anda tidak perlu memanggil mkdir beberapa kali, karena
New-Item
dapat mengambil lintasan lintasan. Sebagai contoh:@DavidPostill telah menjelaskan sebagian besar konsep dalam jawabannya . Ini juga mengambil keuntungan dari interpolasi string daripada melakukan penggabungan eksplisit. Selain itu,
%
singkatan digunakan sebagai penggantiForEach-Object
, tetapi memiliki arti yang sama.Sayangnya, tampaknya tidak ada cara mudah untuk menginterpolasi string ke dalam array string seperti dalam bash.
sumber
md(0..9|%{"ch$_"})
md
adalah alias standar untukmkdir
, yang merupakan fungsi PowerShell.%
, seperti yang disebutkan Bob, adalah alias standar untukForEach-Object
. String kutip ganda variabel interpolasi, jadi"ch$_"
sama dengan'ch' + $_
. Anda dapat mencari alias dengan menjalankanGet-Command
(gcm
) di atasnya.1..9 | %{"ch$_"} | %{git add "$_"; git commit -m "$_"}
atau1..9 | %{$name = "ch$_"; git add "$name"; git commit -m "$name"}
. Komentar-komentar ini agak lama sekarang, jadi jika Anda memiliki pertanyaan lebih lanjut - silakan tanyakan sebagai pertanyaan, atau mungkin mengobrol.Saya akan menggunakan untuk versi loop karena mudah diingat dan dapat diterapkan pada banyak situasi. Bahkan bisa digunakan untuk banyak perintah.
Untuk setara dengan perintah bash ini:
... dalam penggunaan PowerShell:
sumber
Missing opening '(' after keyword 'for'.
Perintah ini:foreach ($i in 1..9) {md ch$i}
memberi saya nomor direktori direktori "ch", tetapi saya tidak mengerti "untuk" Anda. ..; do ... done "loop.for($i=1; $i -le 10; $i++){md ch$i}
terima kasih mamun, tapi saya belum "Bourne lagi ...";) (saya juga tidak tahu C ++, tapi saya pikir saya agak mengerti apa "$ i-le" (jika kurang dari atau sama dengan?) Dan "$ i ++" (~ "i + = 1"?) berarti dan melakukan dalam perintah ...Buat beberapa direktori di bawah direktori saat ini:
Di atas adalah versi singkat dari yang berikut ini. Perhatikan tanda-at yang disertakan di depan array string dan penggunaan parameter bernama:
Dan jika Anda ingin melanjutkan, perintah asli penuh adalah:
Saat menggunakan baris perintah PowerShell, saya menggunakan versi singkat.
Saat menulis skrip, terutama skrip untuk orang lain (yang mungkin baru di PowerShell), saya cenderung menulis perintah asli penuh.
Pilih apa pun yang paling cocok untuk Anda.
sumber