I’d like to share 3 Powershell functions that I’ve wrote this week to navigate a bit faster in the Powershell.
I’m having a lot of different folders to organize my files and projects and it’s kinda exhausting to tab through the folders with the command, which looks something like this:
What would be cool instead is
ccd d: sc dotn pro pa i ge lo
since I know the folder structure of paths I often visit.
(I did use the name ccd because the finger is on the c anyway when you want to type c)
With that goal in mind I wrote three functions which will achieve this beheaviour. The source can be found on Github.
The function gdp returns the path matching the abbreviations you give it as an argument.
If the folder is found, the output will be the following:
C:\Users\Markus> gdp ~ doc windo fun ~\Documents\WindowsPowerShell\Functions
It is possible to use special characters for home (~), root (\ or /) and another partition, e.g. d:.
If the argument is ambiguous, you will get a list of matching folders to sharpen your argument:
C:\Users\Markus> gdp d: s me scm software 's' is ambiguous. In C:\Users\Markus\Documents\WindowsPowerShell\Functions\ccd.ps1:36 Zeichen:17 + throw "'$folder' is ambiguous." + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: ('s' is ambiguous.:String) , RuntimeException + FullyQualifiedErrorId : 's' is ambiguous.
If the path is not found, it will just throw an error.
The function ccd is just a wraper around the gdp function, which means if the gdp function returns a valid path, it will change to the directory.
I liked the idea to use it with folders so I wrote another functions which does the same thing for files.
The function is called gfp (get file path) and it works the same way:
C:\Users\Markus> gfp ~ vimf vim ~\vimfiles\vimrc
I can also use it to give the path as a argument to another program or script:
C:\Users\Markus> gfp (~ vimf vim)
What happens is that vim will start and open the file „~\vimfiles\vimrc“.
This function also behaves like the gdp function in that it will list ambiguous filenames and throw an error if no file is found.
I hope you enjoy it!