The Linux terminal gets a lot of use, but I've found learning the Windows command prompt can be useful too. From writing a quick script to executing a command remotely, it helps to know some basic commands. There are many similar commands, and it doesn't take long to become command-line interface ambidextrous (although I still find my fingers occasionally wanting to type 'ls' or 'pwd' on Windows!). This is a chart to help someone that knows one command line, transition into learning another command line. It is not an exhaustive list of commands.
Note in the examples below I use the default configuration of
$ for Linux shell and
> for Windows command-prompt.
$ man ls > dir help $ ls --help > dir /?
These are the most common ways to get help directly from the command line. Sometimes tools don’t follow convention so you might have to try it without any parameters, maybe a short help
-h, or other combinations.
$ cd > cd $ cd .. > cd .. $ cd / > cd\
. vs parent directory
.. usage is similar.
Output Current Directory
$ pwd > cd > chdir
$ mkdir > mkdir $ mkdir -p
-p creates parent folders while on windows Command Extensions must be enabled.
/e:on from cmd or
setlocal EnableExtensions from a script.
$ rm -rf > rm > rmdir /s
Be careful with these ones! On Linux you might want to use the safer
rm -ri which will prompt you.
$ rm > del /s /q
$ ls > dir $ ls -alF > tree $ ls -R
I would explore the options on Linux for
ls by running
man ls. I generally prefer
ls -alF to show all information and
ls -alFrt to show latest changed files.
$ cp > copy $ cp -r > xcopy > robocopy
robocopy is a "robust copy" tool and requires a separate download on some versions of Windows, great for copying large data sets.
$ mv > ren > rename > move
$ cat > type
For large files, you can pipe output to read it easier.
$ less > more
$ && > && $ || > ||
$ | > |
Used to send output of one command to another.
$ > > > $ >> > >> $ < > <
> overwrites while
>> appends to file. To output errors also in Windows you will need to add
Search for files
$ find > cd\ > dir *file*.* /s /p
dir acts as find on Windows.
Search in files
$ grep > find > findstr
findstr supports regular expressions similar to
$ echo > echo
echo. for newline in Windows.
$ kill > taskkill $ kill -9 > taskkill /IM notepad.exe
$ diff > fc > comp
$ pico > edit $ vi
On Windows it's usually easier to just run
<your favorite editor> filename.txt instead of using the edit command. On Linux you have a variety of choices from VIM to Emacs and many more. I tend to use vi more on Linux since it usually comes included by default, where VIM or Emacs might not be installed.
$ sed > for
Sadly there isn't a nice built-in tool for Windows. Your stuck with using the
for command or finding a sed for Windows tool.
$ clear > cls
$ sleep > sleep > ping -n <seconds+1> 127.0.0.1 > nul
The second command is a hack to target XP users that don’t have the optional sleep command installed.
$ uname -a > ver $ cat /etc/redhat-release > systeminfo | findstr /C:"OS" $ cat /etc/lsb-release
/etc is usually distribution specific.
$ env > set $ export var=value > set var=value $ echo $var > echo %var%
$ sort > sort
$ chown > attrib $ chmod > attrib +h $ mv filename .filename > cacls > takeown
These commands are very different, I recommend reading help files.
$ hostname > hostname > %computername%
hostname on Linux can also temporarily change the name.
$ ping > ping
$ free > mem $ top
$ service <serviceName> start/stop > net start/stop <serviceName> > sc create/delete
$ shutdown -r now > shutdown -r -t 0
$ ifconfig > ipconfig
Print Time & Date
$ date > date /T > time /T
Generally Windows commands and parameters are case-insensitive while Linux is inherently a case-sensitive environment. For example, you can have two folders names
folder on Linux, but Windows will treat these as the same folder. So watch your character case on Linux, but on Windows it's your preference. I like to stay consistent with the script I'm editing or use lowercase for a new script because all uppercase makes me FEEL LIKE I'M YELLING IN MY SCRIPT.
For more complicated Windows scripts, I recommend learning PowerShell which is included Windows 7 and up. You still have to write regular bat scripts in order to work on all versions of Windows out of the box, but not for much longer since Windows XP support ends April 8, 2014. Although, some versions of Windows Server 2003 will still be supported until July 14th, 2015.
This was just a small subset of similar commands. To learn more you can find Windows CLI documentation here for XP and here for 7 and Server versions. I highly recommend the DosTips website for creating more in-depth scripts.