Mklinker is a cross-platform console utility that let's you create multiple symbolic / junction / hard links at once based on a single config file.
- Why use Mklinker? Who cares about symbolic links?
- Installation
- How do I use Mklinker?
- Features
- Contributing
- With Mklinker you can keep the config file around and if you for example re-install your operating system you can just use Mklinker and restore all the various links you had before. This is especially useful if you are using a syncing program like Dropbox as it allows you to easily add links to outside folders like
AppData
,Program Files
orMy Documents
- With Mklinker you can easily setup outside references in your projects (you're welcome to use it in your own github repos!)
- With Mklinker you can send someone the config file and they can easily create all the links
- Mklinker is cross-platform (windows, linux, mac)
Installing using NuGet is the easiest and preferred way as it allows you to call mklinker
commands globally from command-line. Note that you need .NET Core 3.1 SDK installed
- Go to NuGet package here
- Run command listed under .NET CLI to install the latest version of Mklinker as a global tool.
You can then run mklinker
from the command-line globally.
If you want to install a previous version you can run dotnet tool install --global Mklinker --version x.y.z
instead (x.y.z is version number).
It is also possible to install as a local tool if you exclude --global
from the command.
Using pre-compiled binaries is a viable alternative if you do not have the .NET SDK installed and just want to run mklinker locally rather than globally. Note that it is possible to make it available globally, but in order to do so you would have to add the folder where you copy mklinker to the PATH environmental variable or copy mklinker to an existing folder that is specified in the PATH environmental variable.
- Download the ZIP file from from releases containing Mklinker binaries
- Unzip the ZIP file (I personally recommend using 7-Zip for this)
- Copy the file for your operating system and architecture and put it into a folder of your choosing. Note that you can safely ignore the .pdb file, you only need to copy the actual binary file
You should now be able to run mklinker commands from the command-line from the same folder that the Mklinker binary file resides in. TIP: You can safely rename the binary file to whatever you want to make it easier to run from command-line
.
If you are a purist or simply paranoid it is possible to compile the binaries yourself from the source code!
- Clone the repository using
git clone https://github.com/rubenchristoffer/Mklinker.git
(you need git installed) - Navigate to root folder for Mklinker
- Run
publish.bat
orpublish.sh
(you need .NET Core 3.1 SDK installed)
The binaries will then be compiled and put into the Mklinker/bin/
folder in the format Mklinker-x.y.z-OS
. You can then copy the binaries to wherever you want to install and run Mklinker. See the instructions above Using pre-compiled binaries
for more info about what to do with the binaries you just compiled.
Run mklinker help
to see all verbs / commands and their description. You can also run mklinker help [VERB]
or mklinker [VERB] --help
in order to get more information about that given verb / command. For example, mklinker help addlink
will show you arguments that the addlink
verb / command takes.
For more info, check out the Getting started page on the wiki.
- Supports symbolic, junction and hard links on Windows platform
- Supports symbolic and hard links on Linux and Mac platforms (junction links will be treated as symbolic links)
- Supports relative paths in config file, but will turn them into absolute paths when running linking commands.
- Supports variables for paths (e.g. "C:\Users?User?\Desktop") which means that you can create more dynamic configs. Nested variables (variables inside variables) are also supported.
- Supports custom config file name (if you don't like 'linker.config')
- Supports config validation where you can check for errors and warnings
- Supports interactive mode where you can run multiple commands without
mklinker
in front - Supports a scan command which will help with finding circular paths that can arise due to symbolic directories / junctions pointing to a parent folder. This is important when combining Mklinker with Syncing tools like Dropbox as loops may cause the syncing to go on "forever"
- Supports adding multiple links at once using optional regex filters that also works for sub-directories (allows for recursion)
Anyone is allowed to contribute and it is very appreciated! If you want to contribute, take a look at the CONTRIBUTING guidelines to get started.