Jag slår vad om att du inte visste att du kunde skriva skalskript i Python.
För någon programmerare eller systemadministratör är shell scripting en viktig färdighet att behärska. Det låter dig automatisera tråkiga uppgifter, vilket gör dem till konsekventa, repeterbara åtgärder. Problemet är att det kan vara lite skrämmande, speciellt när man anser att de flesta skalskriptdialekter saknar den syntaktiska finess som finns i Python och Ruby.
Jag blir jämnare. De flesta skalskript är grimligare än den genomsnittliga puggen.
Dessutom finns en mängd olika skal tillgängliga för UNIX-liknande plattformar, inklusive Bash, CSH, KSH och (min favorit) FISH. Som ett resultat kan det vara utmanande att skriva konsekventa skalskript som fungerar över varje plattform.
Det måste vara ett bättre sätt, eller hur?
Introducerar sh.py
Det finns. När jag inte skriver för MakeUseOf skriver jag kod i Python för skojs skull och vinst. Jag gillar verkligen Python på grund av dess flexibilitet, dess inneboende skönhet och hur det mandatar skrivandet av bra kod genom design. Om det låter bra för dig, men du vet inte redan detta fantastiska språk, varför kolla inte dessa fem bra webbplatser för att lära dig Python programmering De 5 bästa hemsidorna att lära sig Python Programmering De 5 bästa hemsidorna för att lära sig Python programmering Under det senaste decenniet har Pythons programmeringsspråk exploderat i popularitet bland programmerare inom alla områden av kodning. Från webbutvecklare till videospelkonstruktörer till inbyggda verktygsskapare har många fallit i ... Läs mer?
Jag kom över det här fantastiska biblioteket några månader tillbaka, kallat sh.py, som låter dig ringa program, skicka parametrar och hantera utdata, alla inom ramen för ett Python-program.
Så vad betyder detta? Enkelt uttryckt betyder det att du har fullständig funktion av skalskript, men från ett språk som är lätt att läsa, är modulärt i naturen och stöder objektorienterad programmering. Cool, eller hur?
Så, hur använder vi det?
Jag gör några antaganden om dig. Det första är att du kör Linux, OS X eller FreeBSD. Som det är just nu fungerar inte sh.py på Windows. Om det behövs kan du dock alltid installera en virtuell Linux-maskin. Min kollega Justin Pot har skrivit en ganska användbar artikel om detta, som du kan kolla här. Så här använder du VirtualBoxes Gratis bilder för att testa och köra operativsystem med öppen källkod [Linux] Så här använder du VirtualBoxes Gratis bilder för att testa och köra operativsystem med öppen källkod [Linux] Snabbt prova ett brett utbud av operativsystem med öppen källkod, något du är bekant med och vissa du inte är. Du kan börja surfa nu på Virtualboxes, en webbplats som tar nästan allt arbete ut ... Läs mer.
Det andra antagandet jag gör är att du kör en ny version av Python (antingen 2, 7 eller 3, 2) och du har PIP-pakethanteraren installerad. Om så inte är fallet, ta en titt på den officiella Python-dokumentationen.
Allt väl? Då fortsätter vi.
Låt oss börja kodning
I en terminal installerar du sh.py med följande kommando.
sudo pip installera sh
Anledningen till att vi använder "sudo" här är att vi måste höja våra behörigheter för att lägga till nya Python-paket. Om sh.py installeras korrekt ser du följande rader i din terminal.
Nedladdning / utpakning sh Nedladdning sh-1.09.tar.gz Running setup.py egg_info för paket sh Installera samlade paket: sh Running setup.py installera för sh Installerad framgångsrik sh Rengöring ...
Om det inte säger det här är oddsen bra att din installation misslyckades. Ledsen. Om så är fallet, försök kontrollera behörigheterna och att du faktiskt installerat PIP. Om det fortfarande saknas, försök att fråga om Stack Overflow (som tidigare har diskuterats 10 webbplatser som kan hjälpa nybörjareprogrammet med provkodsutdrag 10 webbplatser som kan hjälpa nybörjareprogrammet med provkodssedlar Läs mer av vår internetredaktör Saikat Basu ) eller MakeUseOf svar.
Nu är det sorterat, skapa en ny katalog. Det är här där vi ska placera all vår kod. Öppna en textredigerare och skapa en fil som heter shtest.py. Här ska vi helt enkelt skapa en ny fil och sedan lista innehållet i katalogen vi är inne. Låter bra?
I shtest.py lägg till följande rader.
#! / usr / bin / env python import sh
sh.touch ('hej') utskrift (sh.ls ('- l'))
Enkla saker här. Låt oss bryta ner det här.
#! / usr / bin / env python
Denna rad kallas hash-bang, och instruerar ditt skal att öppna den här filen som ett Python-program. Detta låter dig öppna det som du skulle ha ett skalskript (./shtest.py), istället för att öppna det direkt med Python (python shtest.py). Cool, eller hur?
import sh
Denna linje importerar sh-biblioteket som vi installerade för några minuter sedan. Vi kan inte fortsätta utan detta, så se till att det finns i din kod!
sh.touch ( 'Hej')
Du kanske känner till Linux-kommandot, "touch". Detta skapar en tom fil med filnamn som du anger. Här ringer vi direkt "touch" från Python. Som du kan se har vi prefaced detta med "sh.", Och vi överför det till en parameter av "hej".
print (sh.ls ( '- l'))
Du kanske känner till kommandot "skriv ut", som matar ut text till konsolen. Här överför vi det 'sh.ls' som en parameter. Detta kallar Linux ls-programmet, som listar innehållet i en katalog. Vi passerar också en parameter av '-l', som skriver ut mer detaljerad information om innehållet i katalogen vi kör det här.
Fungerar det? Se efter själv.
De av er med hack-ögon kommer märka att det finns en annan fil som flyter om i den katalogen som heter "gitsh.py". Vad kan eventuellt vara där inne?
Delkommandon
sh.py har några krokar för populära program som redan är bakade. Dessa inkluderar git, sudo och ett betydande antal Linux-verktyg. Dessa gör det enklare att interagera med dessa tjänster från Python.
Hur enkelt? Tja, jag ska visa dig hur du initialiserar ett tomt Git-arkiv på bara tre rader av kod. Skapa först en fil som heter "gitsh.py" och öppna den i din favorit textredigerare.
Innehåll, skriv följande tre rader.
#! / usr / bin / env python från sh import git print (git.init ())
Det mesta av detta borde vara ganska bekant för dig. Du märker att vi importerade "git" från "sh". Det innebär bara att vi har importerat en viss del av funktionalitet från en modul, samtidigt som vi ignorerar allt annat.
Därefter initierar vi vårt förråd.
trycket (git.init ())
Vi har pratat om utskrift. Du bör märka att vi kallar "git" utan att ".sh" fortsätter det. Detta beror på att vi specifikt importerade git-funktionaliteten från "sh" -biblioteket.
Och det handlar om det. När vi kör gitsh.py ska vi se följande rader visas i din terminal.
Slutsats
Det var en ganska lätt introduktion till sh.py. Om du är angelägen om att lära dig mer om det, kolla in den officiella dokumentationen här. Om du fastnar kan du dock släppa en kommentar nedan och jag försöker hjälpa dig.