Какво е Shell Scripting?
Да бъдеш потребител на Linux означава да играеш с командния ред. Харесва или не, има само някои неща, които се извършват много по-лесно чрез този интерфейс, отколкото чрез посочване и кликване. Колкото повече използвате и научите командния ред, толкова повече виждате неговия потенциал. Е, самата командна линия е програма: черупката. Повечето дистрибуции на Linux днес използват баш, и в това наистина влизате в командите.
Сега някои от вас, които са използвали Windows преди да използват Linux, могат да запомнят партидните файлове. Това са малки текстови файлове, които можете да изпълнявате с команди, които да изпълните, а Windows ще ги изпълни на свой ред. Това беше един умен и чист начин да се направят някои неща, като да се пускат игри в компютърната лаборатория в гимназията, когато не можете да отваряте системни папки или да създавате преки пътища. Файловите файлове в Windows, макар и полезни, представляват евтина имитация на скриптове на Shell.
Това наистина е силата на скриптографията. Можете да програмирате с командите, които вече знаете, докато учите стапли от най-големите програмни езици. Трябва да се направи нещо повтарящо се и досадно? Сценарий! Нуждаете ли се от пряк път за наистина заплетена команда? Сценарий! Искате ли да създадете наистина лесен за използване интерфейс за команден ред за нещо? Сценарий!
Преди да започнеш
Преди да започнем скриптовата ни серия, нека да разгледаме основна информация. Ще използваме черупката, която повечето Linux дистрибуции използва на родния си език. Bash е налице и за потребителите на Mac OS и Cygwin за Windows. Тъй като е толкова универсален, трябва да можете да сканирате независимо от платформата си. Освен това, докато съществуват всички команди, за които има позоваване, скриптовете могат да работят на множество платформи с малко или никакво ощипване.
Скриптирането може лесно да използва привилегиите "администратор" или "суперпотребител", така че най-добре е да тествате скриптове, преди да ги поставите на работа. Също така използвайте здравия разум, като например да се уверите, че имате резервни копия на файловете, на които сте на път да изпълните скрипт. Също така е много важно да използвате правилните опции, като -i за командата rm, така че да е необходимо вашето взаимодействие. Това може да предотврати някои лоши грешки. Като такива, прочетете скриптове, които изтегляте и внимавайте с данните, които имате, само в случай, че нещата се объркат.
В основата си, скриптовете са само обикновени текстови файлове. Можете да използвате всеки текстов редактор, за да ги напишете: gedit, emacs, vim, nano … Този списък продължава. Просто не забравяйте да го запазите като обикновен текст, а не като богат текст или документ на Word. Тъй като обичам лекотата на използване, която нано предлага, ще използвам това.
Скрипни разрешения и имена
Скриптовете се изпълняват като програми и за да се случи това, те трябва да имат съответните разрешения. Можете да направите скриптовете изпълним, като изпълните следната команда:
chmod +x ~/somecrazyfolder/script1
Това ще позволи на всеки да изпълни този конкретен скрипт. Ако искате да го ограничите само до вашия потребител, можете да го използвате вместо това:
chmod u+x ~/somecrazyfolder/script1
За да стартирате този скрипт, трябва да направите cd в правилната директория и след това да изпълните този сценарий:
cd ~/somecrazyfolder
./script1
За да направите нещата по-удобни, можете да поставите скриптове в папка "bin" в домашната си директория:
~/bin
В много съвременни дистрибуции тази папка вече не се създава по подразбиране, но можете да я създадете. Това обикновено е мястото, където се съхраняват изпълними файлове, които принадлежат на вашия потребител, а не на други потребители. С пускането на скриптове тук можете просто да ги изпълните, като напишете името им, точно както другите команди, вместо да се налага да ги намирате и да използвате префикса './'.
Преди да зададете име на скрипт, трябва да изпълните следната команда, за да проверите дали имате инсталирана програма, която използва това име:
which [command]
Много хора назовават своите "тестове" за първите си скриптове и когато се опитат да ги изпълнят в командния ред, нищо не се случва. Това е така, защото е в конфликт с тестовата команда, която не прави нищо без аргументи. Винаги се уверете, че скриптовите ви имена не са в конфликт с командите, в противен случай може да откриете, че правите неща, които не възнамерявате да правите!
Указания за скриптове
- Всеки скрипт трябва да бъде с "#! / Bin / bash"
- Всяка нова линия е нова команда
- Линиите за коментар започват с #
- Командите са заобиколени от ()
Хаус-взривът
Когато една черупка се пресмята чрез текстов файл, най-прекият начин за идентифициране на файла като скрипт е като направите първия си ред:
#!/bin/bash
Ако използвате друга обвивка, заменете нейния път тук. Линиите за коментар започват с хешове (#), но добавят буквата (!) И пътя за shell, след като това е нещо като хак, което ще заобиколи това коментарно правило и ще принуди скрипта да се изпълни с черупката, която тази линия сочи.
Нова линия = Ново командване
Всяка нова линия трябва да се счита за нова команда или за компонент на по-голяма система. Ако / / else / else изявленията, например, ще поемат няколко реда, но всеки компонент на тази система е в нов ред. Не позволявайте на командата да изтече в следващия ред, тъй като това може да съкрати предишната команда и да ви даде грешка на следващия ред. Ако текстовият ви редактор прави това, трябва да изключите текстовото обвиване, за да сте на сигурно място. Можете да изключите обвиването на текст в нано бит, като натиснете ALT + L.
Коментар Често с #s
Ако започнете линия с #, линията се игнорира. Това го превръща в коментар, където можете да си припомните какви са резултатите от предишната команда или какво ще направи следващата команда. Отново изключете обвиването на текста или прекъснете коментара си в няколко реда, които започват с хеш. Използването на много коментари е добра практика, за да се запази, тъй като ви позволява и други хора да ощипвам скриптове по-лесно. Единственото изключение е гореспоменатото Hash-Bang hack, така че не следвайте #s с! S.;-)
Командите са заобиколени от скоби
В по-старите дни подмяната на командите е извършена с единични отметки (`, споделя ~ key). Няма да се докосваме дотук, но тъй като повечето хора излизат и опознават, след като са научили основите, вероятно е добра идея да споменем, че вместо това трябва да използвате скоби. Това е главно, защото когато гнездото - сложите команди в други команди - скобите работят по-добре.
Вашият първи скрипт
Нека да започнем с прост скрипт, който ви позволява да копирате файлове и да добавяте дати до края на името на файла. Да го наречем "datecp". Първо, нека да проверим дали това име е в конфликт с нещо:
Нека да създадем празен файл в папката ~ / bin:
touch ~/bin/datecp
nano ~/bin/datecp
И нека да продължим напред и да включим предпоставката за първия ред и коментар за това, което прави този скрипт.
Какво ще направим в променливата? Е, нека да съхраним датата и часа! За да направите това, ще се обадите на командата за дата.
Обърнете внимание на екранната снимка по-долу за това как да създадете изхода на командата за дата:
Да използваме последната итерация на командата за дата "date +% m_% d_% y-% H.% M.% S" и да я използваме в нашия скрипт.
variable=$(command –options arguments)
И за нас, ще го изградим така:
date_formatted=$(date +%m_%d_%y-%H.%M.%S)
Ето примерният скрипт и неговият изход:
Да се върнем към нашия скрипт. Нека следва да добавим в копиращата част на командата.
cp –iv $1 $2.$date_formatted
След това можете да видите, че съм добавил опцията "$ 1".При създаването на скриптове знакът за долар ($), последван от число, ще обозначи този номериран аргумент на скрипта, когато бъде извикан. Например, в следната команда:
cp –iv Trogdor2.mp3 ringtone.mp3
Първият аргумент е "Trogdor2.mp3", а вторият аргумент е "рязко".
Ако погледнем отново нашият скрипт, можем да видим, че се позовават на два аргумента:
Вторият аргумент, $ 2, ще действа като изходен файл за същата команда. Но можете също да видите, че това е различно. Добавихме период и ние посочихме променливата "Äúdate_formatted" от по-горе. Любопитно ли е какво прави това?
Ето какво се случва, когато се стартира скриптът:
Можете да видите, че изходният файл е посочен като нещо, което съм въвел за $ 2, последвано от период, а след това изхода на командата за дата! Има смисъл, нали?
Сега, когато стартирам командата datecp, ще стартира този скрипт и ще ми позволи да копирам всеки файл на ново място и автоматично да добавя датата и часа до края на името на файла. Полезно за архивиране!
Shell скриптовете са в основата на това, че вашата OS работи за вас. Не е нужно да научите нов език за програмиране, за да го направите. Опитайте скриптове с някои основни команди у дома и започнете да мислите за това, за което можете да използвате това.
Сценарий ли си? Имате ли съвет за начинаещи? Споделете вашите мисли в коментарите! Има още какво да се случи в тази серия!