Flytt over Shell-skript Sh.py er her, og det er fantastisk.

Flytt over Shell-skript Sh.py er her, og det er fantastisk. / Linux

Jeg vedder på at du ikke visste at du kunne skrive shell-skript i Python.

For enhver programmerer eller systemadministrator er shell scripting en viktig ferdighet å mestre. Det lar deg automatisere kjedelige oppgaver, og gjøre dem til konsekvente, repeterbare handlinger. Problemet er at det kan være litt skremmende, spesielt når du vurderer at de fleste shell-scripting dialekter mangler den syntaktiske finessen som finnes i slike som Python and Ruby.

Jeg blir jævlig blunter. De fleste shell-skript er ugligere enn den gjennomsnittlige puggen.

Videre er det en rekke skjell tilgjengelig for UNIX-lignende plattformer, inkludert Bash, CSH, KSH og (min favoritt) FISH. Som et resultat kan det være utfordrende å skrive konsekvente, shell-skript som fungerer på tvers av hver plattform.

Det må være en bedre måte, riktig?

Vi presenterer sh.py

Det er. Når jeg ikke skriver for MakeUseOf, skriver jeg kode i Python for moro og fortjeneste. Jeg liker Python på grunn av sin fleksibilitet, dens inneboende skjønnhet og hvordan den mandater skriver god kode ved design. Hvis det høres bra ut for deg, men du vet ikke allerede dette fantastiske språket, hvorfor ikke sjekke ut disse fem flotte nettstedene for å lære Python programmering De 5 beste nettstedene å lære Python programmering De 5 beste nettstedene å lære Python programmering Ønsker å lære Python programmering? Her er de beste måtene å lære Python på nettet, hvorav mange er helt gratis. Les mer ?

Jeg kom over dette virkelig fantastiske biblioteket noen måneder tilbake kalt sh.py, som lar deg ringe programmer, passere parametere og håndtere utganger, alt innenfor rammen av et Python-program.

Så, hva betyr dette? Enkelt sagt betyr det at du har full funksjonalitet av shell-skript, men fra et språk som er lett å lese, er modulært i naturen og støtter objektorientert programmering. Kul, høyre?

Så, hvordan bruker vi det?

Jeg gjør noen forutsetninger om deg. Den første er at du kjører Linux, OS X eller FreeBSD. Som det er akkurat nå, fungerer ikke sh.py på Windows. Men hvis det er nødvendig, kan du alltid installere en Linux virtuell maskin. Min kollega Justin Pot har skrevet en ganske nyttig artikkel om dette, som du kan sjekke ut her. Slik bruker du VirtualBoxes. Gratis bilder for å teste og kjøre Open Source-operativsystemer. [Linux]. Slik bruker du VirtualBoxes. Gratis bilder for å teste og kjøre operativsystemer med åpen kildekode. [Linux] Prøv raskt et stort utvalg av operativsystemer med åpen kildekode, noe du er kjent med og noen du ikke er. Du kan begynne å surfe nå på Virtualboxes, et nettsted som tar nesten alt arbeidet ut ... Les mer .

Den andre antakelsen jeg lager er at du kjører en nylig versjon av Python (enten 2,7 eller 3,2), og du har installert PIP-pakkebehandleren. Hvis dette ikke er tilfelle, ta en titt på den offisielle Python-dokumentasjonen.

Helt fint? Så fortsetter vi.

La oss starte koding

I en terminal installerer du sh.py med følgende kommando.

sudo pip install sh

Grunnen til at vi bruker "sudo" her, er fordi vi må heve våre tillatelser for å legge til nye Python-pakker. Hvis sh.py installeres riktig, ser du følgende linjer som er tilstede i terminalen din.

Nedlasting / utpakking sh Nedlasting sh-1.09.tar.gz Kjører setup.py egg_info for pakke sh Installering av samlepakker: sh Kjører setup.py installerer for sh Vellykket installert sh Rengjøring ... 

Hvis det ikke sier dette, er det bra at oddsene dine mislyktes. Lei seg. Hvis det er tilfelle, prøv å sjekke dine tillatelser og at du faktisk har installert PIP. Hvis det fortsatt ikke er der, kan du prøve å spørre om Stack Overflow (som tidligere har blitt diskutert 10 nettsteder som kan hjelpe nybegynnerprogrammer med prøvekodeoppslag 10 nettsteder som kan hjelpe nybegynnerprogrammer med prøvekodeutdrag Les mer av vår Internettredaktør, Saikat Basu ) eller MakeUseOf svar.

Nå som er sortert, opprett en ny katalog. Det er her hvor vi skal plassere all vår kode. Åpne et tekstredigeringsprogram og opprett en fil som heter 'shtest.py'. Her skal vi bare lage en ny fil, og deretter oppgi innholdet i katalogen vi er inne. Lyder bra?

I shtest.py, legg til følgende linjer.

#! / usr / bin / env python import sh
sh.touch ('hallo') utskrift (sh.ls ('- l'))

Enkle ting her. La oss bryte dette ned.

#! / usr / bin / env python

Denne linjen kalles hash-bang, og instruerer skallet ditt for å åpne denne filen som et Python-program. Dette gjør at du kan åpne den som du ville ha et skallskript (./shtest.py), i stedet for å åpne det direkte med Python (python shtest.py). Kul, høyre?

import sh

Denne linjen importerer sh-biblioteket som vi installerte for noen få minutter siden. Vi kan ikke fortsette uten dette, så sørg for at det er i koden din!

sh.touch ( 'Hei')

Du kan være kjent med Linux-kommandoen, 'touch'. Dette lager en tom fil med filnavn som du angir. Her kaller vi direkte 'touch' fra Python. Som du kan se, har vi prefaced dette med 'sh.', Og vi overfører det til en parameter av 'hallo'.

trykket (sh.ls ( '- L'))

Du kan være kjent med kommandoen 'print', som sender ut tekst til konsollen. Her overfører vi det 'sh.ls' som en parameter. Dette kaller Linux ls-programmet, som viser innholdet i en katalog. Vi overfører også en parameter av '-l', som skriver ut mer detaljert informasjon om innholdet i katalogen vi utfører dette i.

Virker det? Se for deg selv.

De av dere med hawk-eyes vil merke at det er en annen fil som flyter om i den katalogen som heter 'gitsh.py'. Hva kan muligens være der inne?

Delkommandoer

sh.py har noen kroker for populære programmer som allerede er bakt inn. Disse inkluderer git, sudo og et betydelig antall Linux-verktøy. Disse gjør interaksjon med disse tjenestene fra Python enda enklere.

Hvor lett? Vel, jeg skal vise deg hvordan du kan initialisere et tomt Git-depot i bare tre linjer med kode. Først oppretter du en fil kalt 'gitsh.py' og åpner den i din favoritt tekstredigerer.

På innsiden skriver du følgende tre linjer.

 #! / usr / bin / env python fra sh import git print (git.init ())

Mesteparten av dette bør være ganske kjent for deg. Du vil merke at vi importerte "git" fra "sh". Dette betyr bare at vi har importert en bestemt funksjonalitet fra en modul, mens du ignorerer alt annet.

Deretter initialiserer vi vårt lager.

print (git.init ())

Vi har snakket om utskrift. Du bør merke at vi kaller 'git' uten '.sh' fortsetter det. Dette skyldes at vi spesifikt importerte git-funksjonaliteten fra 'sh'-biblioteket.

Og det handler om det. Når vi kjører gitsh.py, bør vi se følgende linjer vises i terminalen din.

Konklusjon

Det var en rimelig enkel introduksjon til sh.py. Hvis du er ivrig etter å lære mer om det, sjekk ut den offisielle dokumentasjonen her. Men hvis du sitter fast, vær så snill å slippe meg en kommentar nedenfor, og jeg vil prøve deg og hjelpe deg.

Utforsk mer om: Programmering, Python, Terminal.