将两个shell命令组合到一个命令中

时间:2011-05-07 23:21:00

标签: bash powershell powershell-v2.0

在Bash中,我们可以像这样组合两个shell命令cdls

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中做类似的事吗?如果是这样,我想制作类似的功能并将其放入我的$ profile

感谢您的帮助 Steeluser

修改

我意识到这可以通过shell完成:

$> 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
}

并且可以从shell调用

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 个答案:

答案 0 :(得分:7)

这样的事情应该有效。

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

这只是PowerShell中的一个普通函数。有关详情,请参阅http://technet.microsoft.com/en-us/library/dd347712.aspx

答案 1 :(得分:6)

您可能还需要管理异常directory already exists并将目录对象返回给调用者:

Function mkcd {
  if(!(Test-Path -path $args[0])) {
   mkdir $args[0]
  }
  cd $args[0] -passthru
}