Объединение двух команд оболочки в одну команду - PullRequest
2 голосов
/ 08 мая 2011

В Bash мы можем объединить две команды оболочки cd и ls следующим образом:

function cd {
    builtin cd "$@" && ls
}
#this will get a list of file after changing into a directory

Также это

mkcd () { mkdir -p "$@" && cd "$@"; }
#this will create and directory and change into it at once

Можем ли мы делать подобные вещи в Powershell? Если это так, я хотел бы сделать аналогичные функции и поместить его в свой профиль $

Спасибо за любую помощь.
Steeluser

EDIT:

Я понял, что это можно сделать из оболочки следующим образом:

$> pwd|ls

    Directory: D:\ps

Mode                LastWriteTime     Length Name                                                                      
----                -------------     ------ ----                                                                      
d----          5/7/2011   9:40 PM            config                                                                    
d----          5/7/2011   9:40 PM            output                                                                    
d----          5/8/2011   3:37 AM            static                                                                    
-a---          5/8/2011   3:36 AM        485 create-static-files.ps1                                                   

Это можно поместить в такой профиль:

function pl
{
    pwd|ls
}

и может быть вызван из оболочки

ps$ pl

    Directory: D:\ps

Mode                LastWriteTime     Length Name                                                                      
----                -------------     ------ ----                                                                      
d----          5/7/2011   9:40 PM            config                                                                    
d----          5/7/2011   9:40 PM            output                                                                    
d----          5/8/2011   3:37 AM            static                                                                    
-a---          5/8/2011   3:36 AM        485 create-static-files.ps1                                                   

Но я не мог понять, как выполнить функцию mkcd.

Ответы [ 2 ]

7 голосов
/ 08 мая 2011

Примерно так должно работать.

Function mkcd {
  mkdir $args[0]
  cd $args[0]
}

Это обычная функция в powershell.Подробнее см. http://technet.microsoft.com/en-us/library/dd347712.aspx.

6 голосов
/ 08 мая 2011

Возможно, вы захотите также обработать исключение directory already exists, а также вернуть объект каталога вашему абоненту:

Function mkcd {
  if(!(Test-Path -path $args[0])) {
   mkdir $args[0]
  }
  cd $args[0] -passthru
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...