Създаването и изпълнението на Bash скриптове в Windows е по-лесно от всякога с WSL., слоят, който ви позволява да използвате цялостна Linux среда, интегрирана в операционната система на Microsoft, без да е необходимо да настройвате тежки виртуални машини или да конфигурирате двойно зареждане. Ако целта ви е да автоматизирате задачи, да работите с терминала и да се възползвате от класическите инструменти на Linux, това ръководство ще ви преведе от инсталацията до разработването на скриптове и отстраняването на грешки.
В следващите раздели Ще видите как да активирате WSL и да изберете дистрибуция (напр. Ubuntu), овладейте основни команди, напишете първите си Bash скриптове с най-добри практики и ги внедрете в продукция с cron. Ще научите и как да интегрирате Linux и Windows оперативно (кросплатформени команди, достъп до файлове, VS Code/Visual Studio, Docker, бази данни, графични процесори, графичен потребителски интерфейс), заедно с ръководство за отстраняване на неизправности и разликите между WSL, виртуални машини, двойно зареждане и контейнери.
Какво е WSL и защо го използваме за Bash скриптове?
WSL (Windows Subsystem for Linux) е функция на Windows, която изпълнява Linux среда в рамките на Windows., с директна интеграция с файловата система и възможност за стартиране на Bash команди, инструменти и скриптове, сякаш използвате оригинална дистрибуция. С WSL 2, който използва истинско Linux ядро в лека виртуална машина, производителността и съвместимостта са значително подобрени в сравнение с WSL 1.
Предимствата му включват съвместимост с CLI инструменти (grep, sed, awk и др.), достъп до различни файлови системи и поддръжка на Docker на WSL 2.Ако работите в смесена среда и е необходимо да автоматизирате процеси, да изграждате, тествате или внедрявате, WSL намалява триенето и елиминира необходимостта от превключване между операционни системи или поддръжка на тежки виртуални машини.

Подготовка на средата в Windows
Активиране на WSL и платформата за виртуални машини от конзола с администраторски праваМожете да направите това с PowerShell или CMD много директно, използвайки опростената команда:
wsl --install
Ако предпочитате да го правите стъпка по стъпка, активирайте функциите и оставете WSL 2 по подразбиране.:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-version 2
В някои случаи WSL 2 изисква ръчно актуализиране на ядрото на Linux.; изтеглете официалния пакет на Microsoft, когато бъдете подканени. След инсталиране или промени във функциите, рестартирайте компютъра.
Инсталиране на Linux дистрибуция от Microsoft Store (напр. Ubuntu). Когато го отворите за първи път, той създава вашия потребителско име и парола Linux (въвеждането ще бъде „сляпо“: няма да виждате никакви символи, когато пишете). Проверете дали използвате WSL 2:
wsl --list --verbose
Инсталиране и настройване на Ubuntu на WSL
След като Ubuntu е инсталиран, актуализирайте пакетите, за да имате най-новите версии и корекции.:
sudo apt update && sudo apt upgrade -y
Проверете или променете WSL версията на дистрибуцията (ако е инсталиран на WSL 1):
wsl --list --verbose
wsl --set-version Ubuntu 2
Инсталирайте често срещани помощни програми за разработка според вашите нужди:
sudo apt install git curl build-essential -y
Достъп до Windows файлове от Ubuntu чрез точки на монтиране: единиците се появяват в /mntНапример, диск C:
cd /mnt/c
За подобряване на производителносттаАко ще работите с Linux инструменти, съхранете проекта във файловата система WSL, за да минимизирате латентностите, например в \\wsl$<DistroName>\home\<UserName>\Proyectoи избягвайте интензивни натоварвания на места като /mnt/c/Users/<User>/Proyecto.
Първи стъпки в терминала: Полезни основни команди
Навигиране през файловата система и изброяване на съдържанието:
cd /home,cd ~,pwdls,ls -a
Управлявайте файлове и директории:
mkdir mi_carpeta,touch archivo.txt,cp origen.txt destino.txtmv archivo.txt renombrado.txt,rm archivo.txt,rm -r carpeta
Редактиране с терминални редактори: nano archivo.txt просто е; vim archivo.txt Мощен е (за да излезете, използвайте :q и Enter).
Инсталиране и актуализиране на пакети:
sudo apt install htopsudo apt updatesudo apt upgrade -y
Разрешителни и собственост: разрешава изпълнение на скрипт с chmod +x script.sh и сменя собственика си с sudo chown usuario:grupo archivo.txt.
Вашият първи Bash скрипт: структура и изпълнение
Bash скриптовете завършват на .sh (по избор) и започват с shebang за да се посочи преводачът:
#!/bin/bash
Създайте прост скрипт, направете го изпълним и го стартирайте:
echo "#!/bin/bash" > hola.sh
echo "echo \"Hola, mundo\"" >> hola.sh
chmod +x hola.sh
./hola.sh
Можете също да го стартирате изрично с sh или bash: sh hola.sh o bash hola.sh.
Пример с взаимодействие: заявява маршрут, изброява съдържанието му и показва текущата дата:
#!/bin/bash
echo "Hoy es" `date`
echo -e "\nIngresa la ruta al directorio"
read the_path
echo -e "\nTu ruta contiene:"
ls "$the_path"
Коментари, променливи и конвенции в Bash
Използвайте коментари с #, за да документирате и деактивирате редове:
# Esto es un comentario
Променливите нямат собствени типове в Bash; съхранява числа, текст или символи. Присвояване и използване с = и излагам с $:
pais=España
echo "$pais"
Добри практики за именуване: започва с буква или долна черта, използва букви, цифри и _, чувствителност към главни и малки букви, избягва интервали, тирета и запазени думи. Валидно: nombre_cuenta, miVarневалиден: 2var, mi var, mi-var.
Вход и изход във вашите скриптове
Прочетете потребителски вход с read:
read nombre
echo "Hola, $nombre"
Четене от файл с цикъл while:
while read linea; do echo "$linea"; done < input.txt
Аргументи на командния ред: $1, $2, ...
echo "Hola, $1!" # ./script.sh Zaira -> Hola, Zaira!
Генерира изход с echo, пренасочвания и прикачени файлове:
echo "Hola, Mundo!"echo "Texto" > output.txt(презаписва)echo "Más texto" >> output.txt(приложено)ls > files.txt(пренасочва изхода от команда)
Основни команди на shell, които ще използвате всеки ден
Някои задължителни неща за скриптове и администриране: cd, ls, mkdir, touch, rm, cp, mv, echo, cat, grep, chmod, sudo, df, history, psИ man да се консултират с ръководства.
Условни изрази, цикли и регистър на буквите в Bash
Оценка на условията с if/elif/else (и логически -a или -o):
read n
if [ "$n" -gt 0 ]; then echo "Positivo";
elif [ "$n" -lt 0 ]; then echo "Negativo";
else echo "Cero"; fi
докато цикъл: повтаря се, докато условието е вярно; включва брояч:
i=0; while [ $i -lt 10 ]; do echo $i; (( i+=1 )); done
за цикъл: за фиксиран брой итерации или елементи:
for i in {1..5}; do echo $i; done
Случай: шаблон срещу опции, със заместващи символи и регистър на буквите по подразбиране:
fruta="manzana"
case "$fruta" in
manzana) echo "Fruta roja";;
banana) echo "Fruta amarilla";;
*) echo "Fruta desconocida";;
esac
Планиране на скриптове с cron
Cron ви позволява да изпълнявате автоматични задачи в определени часове.Примерен синтаксис:
* * * * * sh /ruta/a/script.sh
полезни примери:
0 0 * * * /ruta/a/script.sh(всяка полунощ)*/5 * * * * /ruta/a/script.sh(на всеки 5 минути)0 6 * * 1-5 /ruta/a/script.sh(От понеделник до петък, от 6:00 ч.)0 0 1-7 * * /ruta/a/script.sh(първите 7 дни от месеца)0 12 1 * * /ruta/a/script.sh(1-ви ден от месеца по обяд)
Управлявайте задачите си с crontab -e y crontab -lВ Ubuntu/Debian, /var/log/syslog записва cron лог файлове за отстраняване на грешки.
Отстраняване на грешки и проблеми с Bash скриптове
Включете режима за отстраняване на грешки, за да видите всяка команда:
#!/bin/bash
set -x # depuración
Проверете кодовете за изход с $? за откриване на грешки:
comando_critico
if [ $? -ne 0 ]; then echo "Hubo un error."; fi
Използвайте ехокардиографи за проверка: отпечатва стойности и потоци от скрипта:
echo "Valor de x: $x"
Принудително затваряне при грешка с set -e За да спрете скрипта, ако някоя команда е неуспешна:
#!/bin/bash
set -e
Взаимодействие с Windows ⇄ Linux и ключови WSL команди
Стартирайте Linux инструменти от PowerShell или CMD с wsl:
wsl ls -la
Комбинирайте команди от двете системи:
wsl ls -la | findstr "git" o
dir | wsl grep git
Стартиране на инструменти на Windows от Bash добавяне .exe:
notepad.exe .bashrc
Смесено изпълнение на мрежови повиквания:
ipconfig.exe | grep IPv4 | cut -d: -f2
Кратко обобщение на полезните WSL команди:
wsl --install,wsl --list --online,wsl --list --verbosewsl --set-version <Distro> <1|2>wsl --set-default-version 2wsl --shutdown- IP адреси:
wsl hostname -I(IP в WSL 2) иip route show | grep -i default | awk '{ print $3 }'за Windows IP от WSL
Съхранение, терминал на Windows и производителност
Отворете текущата WSL директория в Windows Explorer с:
explorer.exe .
За по-добра производителност, работете по Linux проекти във файловата система WSL и избягвайте интензивен достъп в /mnt от инструменти на Linux. От Windows съхранява файлове в NTFS.
Терминал на Windows Идеален е за управление на множество сесии (табли, панели, поддръжка на Unicode, GPU ускорение и теми) и персонализиране на профили за всяка инсталирана дистрибуция.
Инструменти за редактор и разработка: VS Code и Visual Studio
Visual Studio Code работи перфектно с WSL Използване на разширението Remote Development. Отворете проектите си с:
code .
Visual Studio 2022 Включва вградена поддръжка за WSL в C++ проекти с CMake, което улеснява компилирането и дебъгването в различни среди — Windows, WSL и SSH сървъри — от един екземпляр.
Git, идентификационни данни и най-добри практики
Използвайте Git в WSL за управление на версии и конфигурирайте мениджъра на идентификационни данни, ако работите с отдалечени хранилища. Обърнете внимание на края на редовете (LF/CRLF) и използвайте вградените команди във VS Code, за да улесните операциите:
git clone https://github.com/usuario/repositorio.git
Docker, бази данни, графични процесори и графични приложения
С WSL 2, Docker Desktop за Windows работи безпроблемно, което позволява използването на контейнери за разработка без необходимост от допълнителни виртуални машини.
За локално разработване, инсталиране и стартиране на бази данни като MySQL, PostgreSQL, MongoDB, Redis, SQL Server или SQLite, което ви позволява да възпроизвеждате производствени Linux среди и улеснява работата.
Конфигуриране на ускорението на графичния процесор за интензивни натоварвания и машинно обучение, като се използва графичен хардуер за по-добра производителност.
Linux приложения с графичен интерфейс са възможни в WSL (Windows 11 с WSLg улеснява това). На системи без директна поддръжка има алтернативи с интегрирани решения, като например Win-KeX.
Монтиране на външни или USB устройства в WSL 2
Можете да свързвате и монтирате физически дискове и VHD/VHDX в WSL 2 използвайки:
wsl --mount <DiskPath>
полезни опции: --vhd за виртуални дискове, --type <Filesystem> (по подразбиране ext4), --partition <Nº> y --options с FS параметри. За да дизасемблирате, използвайте:
wsl --unmount <DiskPath>
Разлики: WSL 1 срещу WSL 2, виртуална машина, двойно зареждане и Docker
WSL 1 превежда системните повиквания, докато WSL 2 изпълнява истинско Linux ядро в лека виртуална машина.Това подобрява съвместимостта и производителността, а също така поддържа инструменти като Docker.
В сравнение с традиционна виртуална машинаWSL 2 се стартира почти мигновено, консумира по-малко ресурси и се интегрира много по-добре с Windows. Виртуалната машина обаче осигурява по-голяма изолация и контрол, полезни в сложни мрежи или цели среди.
Относно двойното зарежданеWSL избягва рестартиранията и предлага превъзходна оперативна съвместимост. Ако трябва да се възползвате от целия хардуер и графичен интерфейс на Linux, двойното зареждане все още е по-лесният вариант.
В сравнение с ДокерНе забравяйте, че контейнерът е изолирана, минимална услуга, докато WSL предлага среда за разработка с общо предназначение. Те са допълващи се: използвайте контейнери за специфични услуги, а WSL за цялата среда за разработка.
Ограничения и съображения
Някои ограничения на WSL (особено в WSL 1) влияят на съвместимостта и производителността.В WSL 2 мрежата преминава през слоеве виртуализация, което може да повлияе на много чувствителни сценарии. Някои периферни устройства или услуги на ниско ниво може да не функционират по същия начин, както в оригиналния Linux. Също така проверете дали вашата дистрибуция използва systemd ако трябва да изпълнявате услуги като на конвенционален сървър.
Оперативната съвместимост е много добраДостъп до ext4 чрез WSL, смесени команди и възможност за преинсталиране на дистрибуцията, без това да засяга Windows, ако нещо се обърка.
Сигурност и управление на потребителите в дистрибуцията
Потребителят, създаден при първото стартиране, ще бъде по подразбиране и ще има sudo разрешения.Можете да промените паролата с passwd или, ако го забравите, нулирайте го от PowerShell, като влезете като root:
wsl -u root
passwd <usuario>
За да зададете потребител по подразбиране в една дистрибуция използвайте:
ubuntu config --default-user <usuario>
Отстраняване на често срещани проблеми
Инсталаторът може да ви помоли да актуализирате ядрото на WSL 2.Изтеглете и инсталирайте официалния пакет и рестартирайте. За грешки като 0x80070003 или 0x80370102, активирайте виртуализацията в BIOS и се уверете, че компонентите WSL и VM са активирани.
За грешка 0x8007019e (WslRegisterDistribution), активирайте WSL от функциите на Windows или с помощта на DISM.
„WSL няма инсталирана дистрибуция“Отворете дистрибуцията поне веднъж от менюто "Старт", преди да я използвате в конзолата.
Разпределенията са на грешно място (0x80070003)За предпочитане е да инсталирате дистрибуциите на същото устройство като Windows системата, обикновено C:.
слабо представяне: проверете дали използвате WSL 2 (wsl -l -v) и се опитайте да съхранявате проектите си във файловата система WSL, като избягвате пътища в /mnt за интензивни натоварвания.
Проблеми със софтуерната съвместимостАко имате нужда от специфични функции на ядрото, помислете за виртуална машина или нативен Linux.
Вече можете да пишете, програмирате, отстранявате грешки и автоматизирате Bash скриптове в Windows., интегрирайки инструменти като Git, VS Code, Docker и бази данни, с възможност за използване на cron за планирани задачи и експериментиране с графични потребителски интерфейси, когато е възможно; всичко това с прецизен контрол на съхранението, ключови команди и разрешаване на често срещани грешки, за да улесните работата си.