- Сответствие консольных команд Windows и Linux.
- Использование команд Linux в среде Windows.
- 4 Ways to Run Linux Commands in Windows
- Using Linux commands inside Windows
- 1. Use Linux Bash Shell on Windows 10 with WSL
- 2. Use Git Bash to run Bash commands on Windows
- 3. Using Linux commands in Windows with Cygwin
- 4. Use Linux in a virtual machine
- Conclusion
- How to call Linux commands through WSL in Windows command line?
- 4 Answers 4
Сответствие консольных команд Windows и Linux.
При переходе с Windows на Linux и наоборот, для тех, кто знаком с командной строкой, может пригодиться небольшая справка по соответствию консольных команд этих операционных систем. Естественно, полного соответствия, за редким исключением, не бывает, и в приведенной таблице собраны команды, идентичные по результатам выполнения или функционально близкие.
Соответствие команд CMD Windows командам Linux
Строчные и заглавные буквы для команд командной строки Windows воспринимаются одинаково, ECHO и echo — будет интерпретировано как одна и та же команда. При работе в командной строке Linux соблюдение регистра символов обязательно.
И в Linux, и в Windows используются специальные символы (иногда их еще называют метасимволами), которые интерпретируются оболочкой пользователя как определенные команды или данные.
Наиболее распространенные спецсимволы CMD Windows и оболочки bash Linux
Описание | Спецсимвол CMD Windows | Спецсимвол Linux |
Объединение команд | | и & (|| и &&) | | и & (|| и &&) |
Выполнение задачи в фоновом режиме | & | |
Подстановочные значения в строках | * и ? | * и ? |
Набор символов | [ ] | |
Отмена спецсимвола | ^ | \ |
Перенаправление ввода | или >> | > или >> |
Значение переменной | %переменная% | $переменная |
Домашний каталог | ~ | |
Текущий каталог | . | . |
Родительский каталог | .. | .. |
Комментарий | # |
В Linux набор спецсимволов зависит от используемой оболочки, и в любой из них спецсимволы используются чаще и их набор больше, чем в командной строке Windows. При чем, даже если спецсимволы одинаковы, их применение может приводить к разным результатам. Например, шаблоны имен файлов, задаваемые с помощью символа звездочки:
*.* — и в Linux, и в Windows такая конструкция означает – ”любые имена файлов с любым расширением”.
Аналогичным образом используется и знак вопроса, означающий ”любой одиночный символ” и в Linux, и в Windows.
test?.* — все файлы, имена которых начинаются со строки test и имеющие после нее любой символ. Однако особенности реализации командных интерпретаторов, могут приводить все же к разным результатам использования вроде бы аналогичных конструкций:
ls . * — эта команда Linux отобразит список файлов с длиной имени в 5 символов.
dir . * — эта команда Windows отобразит список файлов с длиной имени в 5 символов и меньше.
При использовании шаблона . txt в Windows отобразятся все файлы с именами длиной в 5 символов и менее, с расширением и .txt и .TXT. В Linux – с именами в 5 символов, и только те файлы, у которых расширение не содержит заглавные буквы.
Использование команд Linux в среде Windows.
С появлением в Windows 10 Подсистемы Windows для Linux (WSL – Windows Subsystem for Linux) пользователь получил возможность использовать в командной строке Windows команды оболочки Linux, появилась возможность создавать сценарии, в которых будут использоваться и команды CMD Windows, и команды оболочки Linux. Например, командный файл для вывода списка определенных файлов каталога C:\Windows\System32:
REM вывод списка файлов с 3-символьными именами и
REM расширением .exe средствами Linux
wsl ls /mnt/c/windows/system32/. exe
REM вывод списка файлов с 3-символьными именами и
REM расширением .exe средствами Windows
По умолчанию, Подсистема Windows для Linux не включена. Как ее включить и настроить – в отдельной статье, ссылка на которую приведена в конце страницы.
После установки и настройки WSL, в командных файлах CMD Windows можно использовать утилиту wsl.exe , обеспечивающую конфигурирование и выполнение команд Linux.
wsl ls /mnt/c/windows/system32/. exe — команда wsl, обеспечивающая исполнение в обычном bat-файле линуксовой команды ls /mnt/c/windows/system32/. exe .
После установки подсистемы WSL, кроме утилиты wsl.exe в среде Windows будут присутствовать еще и утилиты wslconfig.exe и bash.exe обеспечивающие максимальную совместимость Windows и Linux.
4 Ways to Run Linux Commands in Windows
Want to use Linux commands but don’t want to leave Windows? Here are several ways to run Linux bash commands in Windows.
If you are learning Shell scripting probably as a part of your course curriculum, you need to use Linux commands to practice the commands and scripting. Your school lab might have Linux installed but you don’t have a Linux laptop but a regular Windows computer like everyone else. Your homework needs to run Linux commands and you wonder how to run Bash commands and scripts on Windows. You can install Linux alongside Windows in dual boot mode. This method allows you to choose either Linux or Windows when you start your computer. But taking all the trouble to mess with partitions for the sole purpose of running Linux commands may not be for everyone. You can also use Linux terminals online but your work won’t be saved here. The good news is that there are several ways you can run Linux commands inside Windows, like any regular application. Isn’t it cool?
Using Linux commands inside Windows
As an ardent Linux user and promoter, I would like to see more and more people using ‘real’ Linux but I understand that at times, that’s not the priority. If you are just looking to practice Linux to pass your exams, you can use one method to run Bash commands on Windows.
1. Use Linux Bash Shell on Windows 10 with WSL
Did you know that you can run a Linux distribution inside Windows 10? The Windows Subsystem for Linux (WSL) allows you to run Linux inside Windows. The upcoming version of WSL will be using the real Linux kernel inside Windows. This WSL, also called Bash on Windows, gives you a Linux distribution in command-line mode running as a regular Windows application. Don’t be scared with the command line mode because your purpose is to run Linux commands. That’s all you need. You can find some popular Linux distributions like Ubuntu, Kali Linux, openSUSE etc in Windows Store. You just have to download and install it like any other Windows application. Once installed, you can run all the Linux commands you want. Please refer to this tutorial about installing Linux bash shell on Windows.
2. Use Git Bash to run Bash commands on Windows
You probably know what Git is. It’s a version control system developed by Linux creator Linus Torvalds. Git for Windows is a set of tools that allows you to use Git in both command line and graphical interfaces. One of the tools included in Git for Windows is Git Bash. Git Bash application provides and emulation layer for Git command line. Apart from Git commands, Git Bash also supports many Bash utilities such as ssh, scp, cat, find etc. In other words, you can run many common Linux/Bash commands using the Git Bash application. You can install Git Bash in Windows by downloading and installing the Git for Windows tool for free from its website.
3. Using Linux commands in Windows with Cygwin
If you want to run Linux commands in Windows, Cygwin is a recommended tool. Cygwin was created in 1995 to provide a POSIX-compatible environment that runs natively on Windows. Cygwin is a free and open source software maintained by Red Hat employees and many other volunteers. For two decades, Windows users use Cygwin for running and practicing Linux/Bash commands. Even I used Cygwin to learn Linux commands more than a decade ago. You can download Cygwin from its official website below. I also advise you to refer to this Cygwin cheat sheet to get started with it.
4. Use Linux in a virtual machine
Another way is to use virtualization software and install Linux in it. This way, you install a Linux distribution (with a graphical interface) inside Windows and run it like a regular Windows application. This method requires that your system has a good amount of RAM, at least 4 GB but better if you have over 8 GB of RAM. The good thing here is that you get the real feel of using a desktop Linux. If you like the interface, you may later decide to switch to Linux completely. There are two popular tools for creating virtual machines on Windows, Oracle VirtualBox and VMware Workstation Player. You can use either of the two. Personally, I prefer VirtualBox. You can follow this tutorial to learn how to install Linux in VirtualBox.
Conclusion
The best way to run Linux commands is to use Linux. When installing Linux is not an option, these tools allow you to run Linux commands on Windows. Give them a try and see which method is best suited for you.
How to call Linux commands through WSL in Windows command line?
I would like to use ls , and many other Linux tools, from the command line on Windows 10. I know that there is GnuWin32 and other binary replacements, but none of those works as elegantly as the Windows Subsystem for Linux (WSL); including the update mechanisms. With WSL, one can call ls . from the command line via bash -c «ls . » , which works great. Ideally, however, I would just type ls on the command line. I can create an ls.bat which basically does @bash -c «ls %*» — but I would have to do that for every single command I want to export. Is there a more direct way of exporting ls (and many others) to the command line?
The bash commands available in WSL are not intended for use outside of WSL. I would be surprised if that is ever implemented.
@ifconfig Well, it doesn’t have be intended or implemented. I would be happy with a one-liner aliasing «many» well-known Linux commands to the respective WSL commands.
4 Answers 4
Apparently this was the most requested feature for WSL, and Microsoft now supports this feature. To use linux commands from within Command Prompt (or PowerShell), just prefix the command with wsl . So, for example, here’s how you run ls from CMD.
Or here’s how you update package lists.
C:\temp> wsl sudo apt-get update [sudo] password for username: Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]
More details can be found in the official docs. I’m not sure if you are looking for a solution which doesn’t involve any kind of prefixing. If that’s the case, I don’t know of any solution yet.
Microsoft doesn’t directly support what you’re asking for, however.
- You can create a «Console Alias» using doskey.exe, but these Console Aliases are not persistent (when you open a new Command Prompt window they’re all gone).
- CMD /? informs us of the following two Registry keys: HKey_Local_Machine\Software\Microsoft\Command Processor\AutoRun and HKey_Current_User\Software\Microsoft\Command Processor\AutoRun , which (as long as the /D option wasn’t specified) will both be checked for contents to run (in that order) when a new Command Prompt window is opened.
If we put these two things together with a FOR loop, and a nice, easily customizable file in your user folder, we can get a pretty close approximation of what I think you want.
I’m going to put this in HKLM, and reference a file in %USERPROFILE% , called exportlinuxcommands , so that it’s available to all users, but easily customizable on a per-user basis, as well as only functional for users who set it up. If you only want it for one user, or don’t want it to be customizable on a per-user basis, you’ll have to modify the instructions a bit.
- Open the Registry Editor
- Go to HKey_Local_Machine\Software\Microsoft\Command Processor
- Right-click on an empty portion of the window, and choose «New» > «String Value» (or «Expandable String Value», but the expansions seem a little pointless when you realize that the Command Processor will expand them after it reads the value anyway.)
- Name it «AutoRun» (without the quotes)
- Double-click on the new value you just created
- Enter IF EXIST %USERPROFILE%\exportlinuxcommands FOR /F %i in (%USERPROFILE%\exportlinuxcommands) DO @doskey %i=bash -c «%i $*» as the «Value data».
Now you just need to make a file in your %USERPROFILE% folder (i.e. C:\Users\YourUserName ) called exportlinuxcommands , with each Linux command you want an alias to on a separate line. For example:
Want to remove one? Remove it from the file, and it won’t be there in the next Command Prompt window you open.
Want to add another later? Just add it to the file on it’s own line, and the next time you open up a Command Prompt window, it’ll be there.