Having come from a Windows background, it can be very interesting to try catching up to where the Linux world is now. It is more than likely that most Linux people feel the same way about Windows. Well, more accurately they usually despise Windows and would rather leave that to someone else. Generalities, of course, are not that accurate. There have been many different paths to bring the two worlds together. Most of this due to work done by open source projects. Microsoft has semi-embraced working with Linux. Typically Microsoft likes to position competitors into specific boxes. Even though Linux is hard to contain, Microsoft likes to paint it as having no common thread for all the different distributions. It also tends to show it as not being enterprise quality.
The ironic thing is that Microsoft has been heavily influenced by Unix and Linux over the years. Many of its biggest core offerings are derived from ideas created by common research years ago. No one company can really go it alone but it is possible to pretend that you thought of everything yourself.
Regardless of how Microsoft handles this today, the truth is that battle with Linux has been going on for many many years. It appears that they have toned down the opposition for fear of offending key large accounts (typically governments).
So, what is the point of this blog post? Really, it is just a place to sum up ways of using Linux tools in Windows. Unknown to most Windows users, there are Windows version of Linux tools. Also, some of these tools are quite useful. As part of my current project, it has become very important to develop for Linux. This is a blog post in itself. All I intend to do here is list the more interesting tools.
wget – get a file from the Internet from the command prompt (either HTTP, HTTPS, or FTP)
winscp – copy files between Windows and Linux
msysgit – source control (git for Windows)
cygwin – Linux shell on Windows
7zip – compression of just about every model
Instead of writing a huge list, it is better to focus on just these. The current star is wget. I am using it to download a 6GB file over the net. Using standard browser download is unfriendly since it tends to get errors and does not having decent handling of retry. Wget is expert in trying the download again and at the point that it left off. In general, wget makes it easy to automate downloading just about anything. Not only that, it is quite simple to start with.
7zip is attractive because it can do so much for so little. It can register itself for a very long list of compression types. Not only that, it is quick and easy. Being able to browse an ISO without having to dig up a special program is so nice.
WinSCP is great for making copying easier between different systems. Drag and drop of entire directories is just a click away. It is stable and fairly fast. Yesterday I used it to copy a 10GB file between Windows and a Linux server. When I was done processing the file, I used it to copy back. Now that is a great simplification of the process.
To me, the tools are better when compiled for Windows instead of running inside cygwin. The authors have expanded the tools in some ways. The best kind of expansion comes from using the Windows UI to drive it.
GIT is a tool to manage source and is very common for Linux-based projects. Using git on Windows is possible thanks to a port that is available from Google code. There is also an extension that more deeply integrates with Visual Studio. The UI version is easier and more powerful (to the beginner) than the command line. Learning the command line options and flows can be quite time consuming and frankly can be a waste of time for the average developer.
At some point, a future post will be about writing code for both Windows and Linux. This has been my focus over the last year related to supporting VHDs in XenClient.
Nice coat-hanger (Harbour Bridge)! Is Linux north or south of the bridge? 😉
PuTTY is another indispensable tool when working with Linux system, which I believe you meant to include in your list.
http://www.chiark.greenend.org.uk/~sgtatham/putty/
Good call. I forgot about PuTTY. There is always a need to connect to remote systems and PuTTY is perfect for that.
Linux is probably to the North 🙂 The city prefers its windows.