
Michael Fisher
0
971
277
Jeg ved, at du ikke vidste, at du kunne skrive shell-scripts i Python.
For enhver programmør eller systemadministrator er shell-scripting en vigtig færdighed til at mestre. Det giver dig mulighed for at automatisere kedelige opgaver og omdanne dem til konsistente, gentagne handlinger. Problemet er, at det kan være en smule skræmmende, især når du overvejer, at de fleste shell-scripting-dialekter mangler den syntaktiske finesse, der findes i form af Python og Ruby.
Jeg bliver endnu mere sløret. De fleste shell-scripts er grimme end den gennemsnitlige pug.
Desuden er der en række skaller til rådighed for UNIX-lignende platforme, inklusive Bash, CSH, KSH og (min favorit) FISH. Som et resultat kan det være udfordrende at skrive konsistente shell-scripts, der fungerer på tværs af hver platform.
Der skal være en bedre måde, ikke?
Vi præsenterer sh.py
Der er. Når jeg ikke skriver til MakeUseOf, skriver jeg kode i Python for sjov og fortjeneste. Jeg kan virkelig godt lide Python på grund af dens fleksibilitet, dens iboende skønhed og hvordan det kræver skrivning af god kode ved design. Hvis det lyder godt for dig, men du ikke allerede kender dette fantastiske sprog, hvorfor tjekker du ikke disse fem fantastiske websteder for at lære Python-programmering De 5 bedste websteder til at lære Python-programmering De 5 bedste websteder til at lære Python-programmering Ønsker du at lære Python programmering? Her er de bedste måder at lære Python online, hvoraf mange er helt gratis. ?
Jeg stødte på dette virkelig fantastiske bibliotek for et par måneder tilbage kaldet sh.py, som giver dig mulighed for at ringe til programmer, videregive parametre og håndtere output, alt inden for rammerne af et Python-program.
Så hvad betyder dette? Kort sagt betyder det, at du har den fulde funktionalitet af shell-scripts, men indefra et sprog, der er let at læse, er modulopbygget og understøtter objektorienteret programmering. Sej, ret?
Så hvordan bruger vi det?
Jeg laver et par antagelser om dig. Den første er, at du kører Linux, OS X eller FreeBSD. Som det er lige nu, fungerer sh.py ikke på Windows. Hvis det er nødvendigt, kan du dog altid installere en virtuel Linux-maskine. Min kollega Justin Pot har skrevet en temmelig nyttig artikel om dette, som du kan tjekke her Hvordan man bruger VirtualBoxes Gratis billeder til at teste og køre Open Source-operativsystemer [Linux] Sådan bruges VirtualBoxes Gratis billeder til at teste og køre Open Source-operativsystemer [Linux] Prøv hurtigt en lang række open source-operativsystemer, nogle kender du og nogle er du ikke. Du kan begynde at gennemsøge nu på Virtualboxes, et websted, der tager næsten al træning ... .
Den anden antagelse, jeg laver, er, at du kører en nylig version af Python (enten 2,7 eller 3,2), og at du har PIP-pakkehåndtereren installeret. Hvis dette ikke er tilfældet, skal du se på den officielle Python-dokumentation.
Alt godt? Så fortsætter vi.
Lad os starte kodning
I en terminal skal du installere sh.py med følgende kommando.
sudo pip installere sh
Årsagen til, at vi bruger 'sudo' her, er fordi vi er nødt til at hæve vores tilladelser for at tilføje nye Python-pakker. Hvis sh.py installeres korrekt, ser du følgende linjer på din terminal.
Download / udpakning sh Download af sh-1.09.tar.gz Kører setup.py egg_info til pakke sh Installation af indsamlede pakker: sh Kører setup.py installation for sh Vellykket installeret sh Oprydning…
Hvis det ikke siger dette, er oddsene gode for, at din installation mislykkedes. Trist. Hvis det er tilfældet, kan du prøve at kontrollere dine tilladelser, og at du faktisk har installeret PIP. Hvis det stadig ikke er der, kan du prøve at spørge om Stack Overflow (som tidligere er blevet diskuteret 10 websteder, der kan hjælpe begynderprogrammøren med prøvekodestykker 10 websteder, der kan hjælpe nybegynderprogrammøren med eksempler på kodestykker af vores internetredaktør, Saikat Basu) eller MakeUseOf-svar.
Nu, der er sorteret, opret en ny mappe. Det er her vi skal placere al vores kode. Åbn en teksteditor og opret en fil kaldet 'shtest.py'. Her skal vi blot oprette en ny fil og derefter liste indholdet af det bibliotek, vi er i. Lyder godt?
I shtest.py skal du tilføje følgende linjer.
#! / usr / bin / env python import sh
sh.touch ('hej') udskrivning (sh.ls ('- l'))
Enkle ting her. Lad os nedbryde dette.
#! / usr / bin / env python
Denne linje kaldes hash-bang og instruerer din shell til at åbne denne fil som et Python-program. Dette giver dig mulighed for at åbne det, som du ville have et shell-script (./shtest.py), i stedet for at åbne det direkte med Python (python shtest.py). Sej, ret?
import sh
Denne linje importerer sh-biblioteket, som vi installerede for et øjeblik siden. Vi kan ikke fortsætte uden dette, så sørg for, at det er i din kode!
sh.touch ( 'hallo')
Du kender måske Linux-kommandoen 'touch'. Dette opretter en tom fil med filnavn, som du angiver. Her kalder vi direkte 'touch' inde fra Python. Som du kan se, har vi forordet dette med 'sh.', Og vi overfører det som en parameter for 'hej'.
print (sh.ls ( '- L'))
Du kender måske kommandoen 'print', der udsender tekst til konsollen. Her overfører vi det 'sh.ls' som en parameter. Dette kalder Linux ls-programmet, der viser indholdet af et bibliotek. Vi overfører også en parameter af '-l', der udskriver mere detaljerede oplysninger om indholdet af det bibliotek, vi udfører dette i.
Virker det? Se selv.
De af jer med haukøje vil bemærke, at der er en anden fil, der flyder rundt i det bibliotek kaldet 'gitsh.py'. Hvad der muligvis kan være derinde?
Underkommandoer
sh.py har nogle kroge til populære programmer, der allerede er bagt i. Disse inkluderer git, sudo og et betydeligt antal Linux-værktøjer. Disse gør det lettere at interagere med disse tjenester inden for Python.
Hvor let? Jeg vil vise dig, hvordan du initialiserer et tomt Git-arkiv i kun tre kodelinjer. Opret først en fil kaldet 'gitsh.py' og åbn den op i din foretrukne teksteditor.
Skriv inden i følgende tre linjer.
#! / usr / bin / env python fra sh import git print (git.init ())
Det meste af dette skal være temmelig velkendt for dig. Du vil bemærke, at vi importerede 'git' fra 'sh'. Dette betyder bare, at vi har importeret et specifikt stykke funktionalitet fra et modul, mens vi ignorerer alt andet.
Derefter initialiserer vi vores lager.
print (git.init ())
Vi har talt om udskrivning. Du skal bemærke, at vi kalder 'git' uden '.sh' at fortsætte med det. Dette skyldes, at vi specifikt importerede git-funktionaliteten fra 'sh' -biblioteket.
Og det handler om det. Når vi kører gitsh.py, skal vi se følgende linjer vises i din terminal.
Konklusion
Det var en rimelig let introduktion til sh.py. Hvis du er ivrig efter at lære mere om det, så tjek den officielle dokumentation her. Men hvis du sidder fast, er du velkommen til at give mig en kommentar nedenfor, så prøver jeg at hjælpe dig.