Дори да знаете какво правите, това не е толкова просто, колкото изглежда. Windows и UNIX използват различни крайни знаци, а файловата система Windows е достъпна на различно място в средата на Баш.
Как да напиша Bash Script на Windows 10
При писането на скриптове на Shell в Windows, имайте предвид, че Windows и UNIX-подобни системи като Linux използват различни знаци "end of line" в текстовите файлове в shell скриптове.
С други думи, това означава, че не можете просто да напишете скрипт за Shell в Notepad. Запишете файла в Notepad и няма да бъде интерпретиран правилно от Баш. Можете обаче да използвате по-усъвършенствани текстови редактори - например Notepad ++ ви позволява да дадете файл от края на реда на UNIX, като кликнете върху Edit> EOL Conversion> UNIX / OSX Format.
Например, за да създадете скрипт bash в нано, бихте изпълнили следната команда в bash:
nano ~/myscript.sh
Това ще отвори текстовия редактор Nano, посочен във файл с име "myscript.sh" в домашната ви директория на потребителския ви профил. (Знакът "~" представлява вашата домашна директория, така че пълният път е /home/username/myscript.sh.)
#!/bin/bash
Въведете командите, които искате да изпълните, всяка от тях на собствената линия. Сценарият ще изпълни всяка команда на свой ред. Добавете знак "#" преди реда, за да го разгледате като "коментар", което ви помага да разберете скрипта, но който не се изпълнява като команда. За по-усъвършенствани трикове потърсете по-подробно ръководство за скриптове Bash на Linux. Същите техники ще работят в баш на Ubuntu на Windows.
Имайте предвид, че няма начин да стартирате програми от Windows в средата на Баш. Вие сте ограничени до команди и комунални услуги на терминал на Linux, точно както бихте били на типична Linux система.
Например, нека просто използваме основния скрипт "hello world" като пример тук:
#!/bin/bash # set the STRING variable STRING='Hello World!' # print the contents of the variable on screen echo $STRING
Ако използвате текстовия редактор Nano, можете да го запишете, като натиснете Ctrl + O и след това Enter. Затворете редактора, като натиснете клавишите Ctrl + X.
Направете Script Executable и след това го стартирайте
Вероятно ще искате да направите скрипта изпълним, за да можете да го изпълнявате по-лесно. На Linux, това означава, че трябва да дадете на файла на скрипта разрешението на изпълнимия файл. За целта изпълнете следната команда в терминала, като я посочите в скрипта:
chmod +x ~/myscript.sh
~/myscript.sh
(Ако скриптът е в текущата директория, можете да го стартирате с./myscript.sh)
Как да работите с Windows файлове в баш скрипт
За достъп до Windows файловете в скрипта, ще трябва да посочите пътя им под / mnt / c, а не техния път на Windows. Ако например искате да посочите файла C: Users Bob Downloads test.txt, трябва да посочите /mnt/c/Users/Bob/Downloads/test.txt. Обърнете се към ръководството ни за файловите местоположения в Bash shell на Windows 10 за повече подробности.
Как да включите баш команди в пакет или PowerShell скрипт
Накрая, ако имате съществуващ партиден файл или скрипт PowerShell, в който искате да включите команди, можете директно да изпълнявате командите Bash с помощта на
bash -c
команда.
Например, за да стартирате Linux команда в прозореца Command Prompt или PowerShell, можете да изпълните следната команда:
bash -c 'command'
Този трик ви позволява да добавяте команди за Bash в партидни файлове или PowerShell скриптове. Прозорецът Bash shell ще се появи, когато се изпълни команда Баш.
Актуализация: Ако имате няколко инсталирани Linux среда, можете да използвате командата wslconfig, за да изберете стандартната Linux среда, използвана, когато стартирате
bash -c
команда.
За да създадете пряк път към Bash скрипт от Windows, просто създайте пряк път като нормално. За целта за бърз достъп използвайте
bash -c
командата, която описахме по-горе, и я насочете към скрипта Bash, който създадохте.
Например, трябва да посочите пряк път на адрес"
bash -c '~/myscript.sh'
, За да изпълните горния пример. Можете също така да стартирате тази команда от прозореца на командния ред или PowerShell.