2016-12-16 48 views
3

我想在我的PowerShell配置文件加載腳本中包含,這使得我可以輕鬆瀏覽不同的文件夾(不同代碼存儲庫)。創建別名以快速導航到文件夾

我見過使用New-PSDrive的例子,但我認爲別名是一種更流暢的方法。別名只是感覺更好。

我正在尋找這樣的事情:在在PowerShell控制檯

(在profile.ps1)

New-Item alias:foo -value c:\repos\my\code\here 

...後來...:

cd $foo

瞧!我現在站在c:\repos\my\code\here目錄中。

什麼是正確的方法?

編輯:我已經標記了Martins的答案,因爲它非常直截了當,但我建議你也讀馬特的答案,它有一些很好的觀點。

回答

8

我會創建一個包含所有你的版本庫一個$repos哈希表:

$repos = @{ 
    angular = 'c:\repos\my\angular\here' 
    typescript = 'c:\repos\my\typescript\here' 
    csharp = 'c:\repos\my\csharp\here' 
} 

$profile將這個,你可以改變的目錄是這樣的:

cd $repos.angular 

即使使用tab-completion

+1

看起來很酷;) – 4c74356b41

+0

看起來很酷,但不幸的是它不起作用,在鍵入哈希文字後出現'Missing'='操作符 –

+0

你可能做錯了什麼。你可以發佈你的個人資料中的代碼嗎? –

4
$var = 'c:\repos\my\code\here' 
cd $var 
+0

你必須在'c:\ repos \ my \ code \ here'周圍有引號,但除了它似乎工作。 –

3

什麼是正確的方法?

沒有正確或錯誤的方法。別名很有用,但它們僅適用於通過其他名稱調用其他cmdlet。您不能更改設置或添加參數等。

還有一件事要考慮的是在您的配置文件中使用Push-LocationPop-Location自定義功能!這樣你就可以改變到你需要的地方,並在你完成後回到原來的位置。

function myfolder{ 
    Push-Location c:\temp 
} 

function imdone{ 
    Pop-Location 
} 

調用myfolder與目錄更改爲c:\temp。做你的東西...甚至改變到其他目錄。 imdone會帶你回到之前你叫myfolder。添加更多的目錄來翻轉可能會使這個複雜化,但你可以命名棧返回。 Push和Pop對此足夠強大。

這可以很容易地與Martin's answer合併爲一個更強大的配置文件,更容易進行集中更改。

即使您沒有Push-LocationPop-Location的功能,您也可以在功能中使用cd "path"並根據您的需要命名它們。

function tmp{cd "c:\temp"} 

只要注意不要使用可能已被採用的名稱。你可能會得到一個precedence issue

+0

將所有這些封裝到函數中很有趣。好的提示。 –