Jak skriptovat Bash ve Windows pomocí WSL: Praktický průvodce

  • WSL 2 integruje skutečné linuxové jádro do Windows, což je ideální pro vytváření a spouštění Bash skriptů s vysokým výkonem.
  • Pro co nejlepší uživatelský zážitek nainstalujte Ubuntu, aktualizujte balíčky a pracujte se souborovým systémem WSL.
  • Ovládněte Bash (proměnné, I/O, podmíněné operace, smyčky, cron) a ladění pomocí set -x, set -e a ukončovacích kódů.
  • Spolupracuje s Windows (smíšené příkazy, VS Code, Docker, databáze) a řeší typické chyby WSL.

Vytvářejte Bash skripty ve Windows pomocí WSL

Vytváření a spouštění Bash skriptů ve Windows je s WSL snazší než kdy dříve., což je vrstva, která vám umožňuje používat kompletní linuxové prostředí integrované do operačního systému Microsoftu bez nutnosti nastavovat náročné virtuální počítače nebo konfigurovat duální bootování. Pokud je vaším cílem automatizovat úlohy, pracovat s terminálem a využívat klasické linuxové nástroje, tento návod vás provede od instalace až po vývoj a ladění skriptů.

V dalších částech Uvidíte, jak povolit WSL a vybrat distribuci. (např. Ubuntu), zvládnete základní příkazy, napíšete své první Bash skripty s osvědčenými postupy a nasadíte je do produkčního prostředí pomocí cronu. Naučíte se také, jak interoperabilně integrovat Linux a Windows (příkazy napříč platformami, přístup k souborům, VS Code/Visual Studio, Docker, databáze, GPU, GUI) a také se seznámíte s průvodcem řešením problémů a rozdíly mezi WSL, virtuálními počítači, duálním bootem a kontejnery.

Co je WSL a proč ho používat pro Bash skripty?

WSL (Windows Subsystem for Linux) je funkce systému Windows, která spouští linuxové prostředí v rámci systému Windows., s přímou integrací souborového systému a možností spouštět příkazy, nástroje a skripty Bash, jako byste používali nativní distribuci. S WSL 2, které používá skutečné linuxové jádro v odlehčeném virtuálním počítači, je výkon a kompatibilita oproti WSL 1 výrazně lepší.

Mezi jeho výhody patří kompatibilita s nástroji CLI (grep, sed, awk atd.), přístup napříč souborovými systémy a podpora Dockeru na WSL 2.Pokud pracujete ve smíšeném prostředí a potřebujete automatizovat procesy, sestavovat, testovat nebo nasazovat, WSL snižuje tření a eliminuje nutnost přepínání mezi operačními systémy nebo údržby náročných virtuálních strojů.

Bash skripty ve Windows s WSL

Příprava prostředí ve Windows

Povolení WSL a platformy virtuálních počítačů z konzole s oprávněními správceMůžete to udělat pomocí PowerShellu nebo CMD velmi přímo pomocí zjednodušeného příkazu:

wsl --install

Pokud to chcete dělat krok za krokem, povolte funkce a ponechte WSL 2 jako výchozí.:

  • dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  • dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • wsl --set-default-version 2

V některých případech WSL 2 vyžaduje ruční aktualizaci linuxového jádra.; po zobrazení výzvy si stáhněte oficiální balíček od společnosti Microsoft. Po instalaci nebo změnách funkcí restartujte počítač.

Nainstalujte si distribuci Linuxu z Microsoft Storu (např. Ubuntu). Když jej poprvé otevřete, vytvoří se váš uživatelské jméno a heslo Linux (vstup bude slepý: při psaní neuvidíte žádné znaky). Ověřte, že používáte WSL 2:

wsl --list --verbose

Instalace a nastavení Ubuntu na WSL

Jakmile je Ubuntu nainstalováno, aktualizujte balíčky tak, aby obsahovaly nejnovější verze a záplaty.:

sudo apt update && sudo apt upgrade -y

Zkontrolujte nebo změňte verzi WSL distribuce (pokud je nainstalováno na WSL 1):

wsl --list --verbose
wsl --set-version Ubuntu 2

Instalace běžných vývojářských nástrojů podle vašich potřeb:

sudo apt install git curl build-essential -y

Přístup k souborům Windows z Ubuntu pomocí přípojných bodů: jednotky se objevují v /mntNapříklad disk C:

cd /mnt/c

Pro zlepšení výkonuPokud budete pracovat s linuxovými nástroji, uložte projekt do souborového systému WSL, abyste minimalizovali latenci, například v \\wsl$<DistroName>\home\<UserName>\Proyectoa vyhněte se intenzivnímu zatížení v místech, jako je /mnt/c/Users/<User>/Proyecto.

Začínáme v terminálu: Užitečné základní příkazy

Procházení souborového systému a zobrazení jeho obsahu:

  • cd /home, cd ~, pwd
  • ls, ls -a

Správa souborů a adresářů:

  • mkdir mi_carpeta, touch archivo.txt, cp origen.txt destino.txt
  • mv archivo.txt renombrado.txt, rm archivo.txt, rm -r carpeta

Úpravy pomocí terminálových editorů: nano archivo.txt je to jednoduché; vim archivo.txt Je to silné (jít ven, použít :q a Enter).

Instalace a aktualizace balíčků:

  • sudo apt install htop
  • sudo apt update
  • sudo apt upgrade -y

Povolení a vlastnictví: povoluje spuštění skriptu s chmod +x script.sh a mění majitele s sudo chown usuario:grupo archivo.txt.

Váš první Bash skript: struktura a spuštění

Bash skripty končí na .sh (volitelné) a začínají příponou shebang. pro označení tlumočníka:

#!/bin/bash

Vytvořte jednoduchý skript, udělejte ho spustitelným a spusťte ho:

echo "#!/bin/bash" > hola.sh
echo "echo \"Hola, mundo\"" >> hola.sh
chmod +x hola.sh
./hola.sh

Můžete to také spustit explicitně pomocí sh nebo bash.: sh hola.sh o bash hola.sh.

Příklad s interakcí: vyžádá si trasu, vypíše její obsah a zobrazí aktuální datum:

#!/bin/bash
echo "Hoy es" `date`
echo -e "\nIngresa la ruta al directorio"
read the_path
echo -e "\nTu ruta contiene:"
ls "$the_path"

Komentáře, proměnné a konvence v Bashu

Použijte komentáře s # pro dokumentaci a zakázání řádků:

# Esto es un comentario

Proměnné v Bashu nemají nativní typy.; ukládat čísla, text nebo znaky. Přiřadit a používat s = a vystavit s $:

pais=España
echo "$pais"

Dobré postupy pojmenování: začíná písmenem nebo podtržítkem, používá písmena, číslice a _, rozlišuje velká a malá písmena, vyhýbá se mezerám, pomlčkám a rezervovaným slovům. Platné: nombre_cuenta, miVarneplatný: 2var, mi var, mi-var.

Vstup a výstup ve vašich skriptech

Čtení uživatelského vstupu s read:

read nombre
echo "Hola, $nombre"

Čtení ze souboru s cyklus while:

while read linea; do echo "$linea"; done < input.txt

Argumenty příkazového řádku: $1, $2, ...

echo "Hola, $1!" # ./script.sh Zaira -> Hola, Zaira!

Generuje výstup s echo, přesměrování a přílohy:

  • echo "Hola, Mundo!"
  • echo "Texto" > output.txt (přepíše)
  • echo "Más texto" >> output.txt (v příloze)
  • ls > files.txt (přesměruje výstup z příkazu)

Základní příkazy shellu, které budete používat každý den

Některé nezbytnosti pro skripty a administraci: cd, ls, mkdir, touch, rm, cp, mv, echo, cat, grep, chmod, sudo, df, history, psA man nahlédnout do manuálů.

Podmíněné výrazy, smyčky a velká a malá část v Bash

Vyhodnoťte podmínky pomocí if/elif/else (a logického -a nebo -o):

read n
if [ "$n" -gt 0 ]; then echo "Positivo";
elif [ "$n" -lt 0 ]; then echo "Negativo";
else echo "Cero"; fi

zatímco smyčka: opakuje se, dokud je podmínka pravdivá; obsahuje čítač:

i=0; while [ $i -lt 10 ]; do echo $i; (( i+=1 )); done

pro smyčkupro pevný počet iterací nebo prvků:

for i in {1..5}; do echo $i; done

Ukázkové: vzor vs. možnosti, se zástupnými znaky a výchozí velikostí písmen:

fruta="manzana"
case "$fruta" in
manzana) echo "Fruta roja";;
banana) echo "Fruta amarilla";;
*) echo "Fruta desconocida";;
esac

Plánování skriptů pomocí cronu

Cron umožňuje spouštět automatické úlohy v definovaných časech.Příklad syntaxe:

* * * * * sh /ruta/a/script.sh

užitečné příklady:

  • 0 0 * * * /ruta/a/script.sh (každou půlnoc)
  • */5 * * * * /ruta/a/script.sh (každých 5 minut)
  • 0 6 * * 1-5 /ruta/a/script.sh (Pondělí až pátek, v 6:00)
  • 0 0 1-7 * * /ruta/a/script.sh (prvních 7 dní v měsíci)
  • 0 12 1 * * /ruta/a/script.sh (1. dne v měsíci v poledne)

Spravujte své úkoly pomocí crontab -e y crontab -lV Ubuntu/Debianu /var/log/syslog zaznamenává logy cron pro ladění.

Ladění a řešení problémů se skripty Bash

Zapněte režim ladění, abyste viděli každý příkaz:

#!/bin/bash
set -x # depuración

Zkontrolujte výstupní kódy s $? k detekci chyb:

comando_critico
if [ $? -ne 0 ]; then echo "Hubo un error."; fi

Použijte echa pro kontrolu: vypíše hodnoty a streamy ze skriptu:

echo "Valor de x: $x"

Vynucené ukončení při chybě s set -e Zastavení skriptu v případě selhání jakéhokoli příkazu:

#!/bin/bash
set -e

Interoperabilita Windows ⇄ Linuxu a klíčové příkazy WSL

Spouštění linuxových nástrojů z PowerShellu nebo CMD s wsl:

wsl ls -la

Sloučení příkazů z obou systémů:

wsl ls -la | findstr "git" o
dir | wsl grep git

Spouštění nástrojů systému Windows z Bash přidání .exe:

notepad.exe .bashrc

Smíšené provádění síťových volání:

ipconfig.exe | grep IPv4 | cut -d: -f2

Stručný přehled užitečných příkazů WSL:

  • wsl --install, wsl --list --online, wsl --list --verbose
  • wsl --set-version <Distro> <1|2>
  • wsl --set-default-version 2
  • wsl --shutdown
  • IP adresy: wsl hostname -I (IP v WSL 2) a ip route show | grep -i default | awk '{ print $3 }' pro Windows IP od WSL

Úložiště, terminál Windows a výkon

Otevřete aktuální adresář WSL v Průzkumníku Windows s:

explorer.exe .

Pro lepší výkon, pracovat na linuxových projektech v souborovém systému WSL a vyhýbat se intenzivním přístupům v /mnt z nástrojů Linuxu. Z Windows uchovává soubory v systému souborů NTFS.

Terminál systému Windows Je ideální pro správu více relací (záložky, panely, podpora Unicode, akcelerace GPU a témata) a přizpůsobení profilů pro každou nainstalovanou distribuci.

Editor a vývojářské nástroje: VS Code a Visual Studio

Visual Studio Code funguje perfektně s WSL Použití rozšíření Vzdálený vývoj. Otevřete své projekty pomocí:

code .

Visual Studio 2022 Zahrnuje nativní podporu pro WSL v projektech C++ s CMake, což usnadňuje kompilaci a ladění v různých prostředích – Windows, WSL a SSH servery – z jedné instance.

Git, přihlašovací údaje a osvědčené postupy

Použití Gitu ve WSL pro správu verzí a nakonfigurujte správce pověření, pokud pracujete se vzdálenými repozitáři. Věnujte pozornost koncovkám řádků (LF/CRLF) a pro usnadnění operací použijte vestavěné příkazy v VS Code:

git clone https://github.com/usuario/repositorio.git

Docker, databáze, GPU a grafické aplikace

S WSL 2 funguje Docker Desktop pro Windows bez problémů, což umožňuje použití vývojových kontejnerů bez nutnosti dalších virtuálních počítačů.

Pro lokální vývoj, instalaci a spuštění databází jako například MySQL, PostgreSQL, MongoDB, Redis, SQL Server nebo SQLite, což vám umožňuje reprodukovat produkční linuxová prostředí a usnadňuje práci.

Konfigurace akcelerace GPU pro intenzivní zátěž a strojové učení s využitím grafického hardwaru pro lepší výkon.

Linuxové aplikace s grafickým rozhraním jsou možné v WSL (Windows 11 s WSLg to usnadňuje). Na systémech bez přímé podpory existují alternativy s integrovanými řešeními, jako je Win-KeX.

Připojení externích nebo USB disků ve WSL 2

V WSL 2 můžete připojovat a montovat fyzické disky a VHD/VHDX. použitím:

wsl --mount <DiskPath>

užitečné možnosti: --vhd pro virtuální disky, --type <Filesystem> (výchozí ext4), --partition <Nº> y --options s parametry FS. Pro disassemblování použijte:

wsl --unmount <DiskPath>

Rozdíly: WSL 1 vs. WSL 2, virtuální počítač, duální boot a Docker

WSL 1 překládá systémová volání, zatímco WSL 2 spouští skutečné linuxové jádro v odlehčeném virtuálním počítači.To zlepšuje kompatibilitu a výkon a také nativně podporuje nástroje jako Docker.

Ve srovnání s tradičním virtuálním strojemWSL 2 se spouští téměř okamžitě, spotřebovává méně zdrojů a mnohem lépe se integruje s Windows. Virtuální počítač však poskytuje větší izolaci a kontrolu, což je užitečné ve složitých sítích nebo celých prostředích.

Ohledně duálního bootováníWSL se vyhýbá restartu a nabízí vynikající interoperabilitu. Pokud potřebujete využít veškerý hardware a grafické rozhraní Linuxu, je duální bootování stále jednodušší možností.

Ve srovnání s DockeremNezapomeňte, že kontejner je izolovaná, minimální služba, zatímco WSL nabízí univerzální vývojové prostředí. Doplňují se: kontejnery používejte pro specifické služby a WSL pro celé vývojové prostředí.

Omezení a úvahy

Některá omezení WSL (zejména v WSL 1) ovlivňují kompatibilitu a výkon.Ve WSL 2 síť prochází vrstvami virtualizace, což může mít dopad na velmi citlivé scénáře. Některá periferní zařízení nebo nízkoúrovňové služby nemusí fungovat stejně jako v nativním Linuxu. Zkontrolujte také, zda vaše distribuce používá systemd pokud potřebujete spouštět služby jako na běžném serveru.

Interoperabilita je velmi dobráPřístup k ext4 přes WSL, smíšené příkazy a možnost přeinstalovat distribuci bez ovlivnění Windows, pokud se něco pokazí.

Zabezpečení a správa uživatelů v distribuci

Uživatel vytvořený při prvním spuštění bude výchozí a bude mít oprávnění sudo.Heslo můžete změnit pomocí passwd nebo, pokud ho zapomenete, resetujte ho z PowerShellu přihlášením jako root:

wsl -u root
passwd <usuario>

Nastavení výchozího uživatele na jedné distribuci použijte:

ubuntu config --default-user <usuario>

Odstraňování běžných problémů

Instalační program vás může požádat o aktualizaci jádra WSL 2.Stáhněte a nainstalujte oficiální balíček a restartujte počítač. V případě chyb jako 0x80070003 nebo 0x80370102 povolte virtualizaci v systému BIOS a ujistěte se, že jsou povoleny komponenty WSL a VM.

Pro chybu 0x8007019e (WslRegisterDistribution), povolte WSL z funkcí systému Windows nebo pomocí nástroje DISM.

„WSL nemá nainstalovanou žádnou distribuci“Před použitím v konzoli otevřete distribuci alespoň jednou z nabídky Start.

Distribuce na nesprávném místě (0x80070003)Distribuce je nejlépe nainstalovat na stejný disk jako systém Windows, obvykle C:.

slabý výkonověřte, že používáte WSL 2 (wsl -l -v) a pokuste se ukládat své projekty do souborového systému WSL a vyhýbat se cestám v /mnt pro intenzivní zátěž.

Problémy s kompatibilitou softwaruPokud potřebujete specifické funkce jádra, zvažte virtuální stroj nebo nativní Linux.

Nyní můžete psát, programovat, ladit a automatizovat Bash skripty ve Windows., integrující nástroje jako Git, VS Code, Docker a databáze, s možností používat cron pro plánované úlohy a experimentovat s grafickými uživatelskými rozhraními, kdykoli je to možné; to vše s detailním řízením úložiště, klíčovými příkazy a řešením běžných chyb pro snazší práci.