Каков синтаксис для создания нескольких каталогов с PowerShells md (или mkdir, New-Item ...), эквивалентных команде 'nix, mkdir ch{1..9}
т.е.
~/parent_dir/
ch1/
ch2/
ch3/
ch4/
ch5/
ch6/
ch7/
ch8/
ch9/
Я просмотрел справочные страницы и примеры получения справки, но я не знаю синтаксиса для PowerShell, чтобы сделать такую простую вещь. Спасибо.
linux
powershell
command-line-arguments
mkdir
Мистер Кеннеди
источник
источник
1..9 | % $_{ md -name $("ch" + $_) }
?1..9 | % $_{ mv ch$_*.* ch$_ }
^ Dgit add
и посмотреть, что он возвращает - имейте в виду, что$_
внутри foreach есть только каждая отдельная запись массива последнего элемента конвейера (что означает, чтоcommit
шаг в вашем примере не получит необработанные числа, поэтому добавлениеch
снова, вероятно, неправильно ). Также, в вашем примере, коммиты будут (?) Выполняться только после того, как все добавления будут сделаны, что означает, что первый коммит получит все ... В качестве альтернативы, вы можете использовать несколько операторов (разделенных;
) внутри одного шага foreach.Вам не нужно вызывать mkdir несколько раз, потому что вы
New-Item
можете использовать массив путей. Например:@DavidPostill объяснил большинство понятий в своем ответе . Это также использует преимущества интерполяции строк вместо явной конкатенации. Кроме того,
%
вместо этого используется сокращениеForEach-Object
, но оно имеет то же значение.К сожалению, не представляется простым способом интерполировать строку в массив строк, как в bash.
источник
md(0..9|%{"ch$_"})
md
- это стандартный псевдоним дляmkdir
, который является функцией PowerShell.%
как упоминал Боб, это стандартный псевдоним дляForEach-Object
. Строки в двойных кавычках интерполируют переменные, поэтому"ch$_"
эквивалентны'ch' + $_
. Вы можете найти псевдоним, запустив на немGet-Command
(gcm
).1..9 | %{"ch$_"} | %{git add "$_"; git commit -m "$_"}
или1..9 | %{$name = "ch$_"; git add "$name"; git commit -m "$name"}
. Эти комментарии становятся немного длиннее, поэтому, если у вас есть дополнительные вопросы - пожалуйста, задавайте их как вопросы, или, возможно, загляните в чат.Я хотел бы использовать для версии цикла, так как это легко запомнить и может применяться во многих ситуациях. Даже это может быть использовано для нескольких команд.
Для эквивалента этой команды bash:
... в использовании PowerShell:
источник
Missing opening '(' after keyword 'for'.
Эта команда:foreach ($i in 1..9) {md ch$i}
возвращает мне пронумерованные каталоги apter ch, но я не понимаю ваши. ..; сделать ... готово "цикл.for($i=1; $i -le 10; $i++){md ch$i}
спасибо, мамон, но я еще не «Bourne again ...»;) (и я не знаю C ++, но мне кажется, что я понимаю, что такое «$ i-le» (если меньше или равно?) И «$ i ++» (~ «i + = 1»?) означает и делает в команде ...Создайте несколько каталогов под текущим каталогом:
Выше приведена сокращенная версия следующего. Обратите внимание на знак at, включенный перед массивом строк, и использование именованных параметров:
И если вы хотите пройти весь путь, полная нативная команда будет:
При использовании командной строки PowerShell я использую короткую версию.
При написании сценария, особенно одного для других (которые могут быть новичками в PowerShell), я склонен писать полную встроенную команду.
Выберите то, что работает лучше для вас.
источник