Kør kommandolinjen på din iPad

vidste du, at du kan køre en kommandolinje på din iOS-enhed? Du spørger måske, ” hvorfor vil jeg bruge tekstbaserede applikationer på min lille iPhone?”Okay, fair nok. Det er et ret rimeligt spørgsmål. Men hvis du læser Opensource.com, du ved sikkert svaret: brugere vil kunne bruge en hvilken som helst enhed, og de vil også bruge deres egne tilpasninger.

og mest af alt vil de have en udfordring.

jeg har en syv år gammel iPad 2 Mini, der stadig fungerer fint til læsning af e-bøger og andre opgaver. Men jeg vil også bruge den til at få adgang til kommandolinjen til applikationer og min pakke med programmer og scripts, som jeg ikke ser ud til at undvære. Jeg vil have det miljø, jeg er vant til, såvel som mit standardudviklingsmiljø. Sådan gjorde jeg det.

Opret forbindelse til et tastatur

brug af kommandolinjen til programmering på en telefon eller tablet skærmtastaturet er ikke meget sjovt. Jeg anbefaler at tilslutte et eksternt tastatur, enten via Bluetooth eller ved at bruge en kameraforbindelsessætadapter til at tilslutte et kablet tastatur (min præference). Tilslutning af mit Kinesis Advantage split keyboard til min iPhone 6 giver nogle mærkelige optik, som en corp ‘ s cyberdeck fra det klassiske rollespil Skyggekørsel.

Hent en shell på iOS

du har to muligheder for at køre et komplet system på iOS:Kør et virtualiseret system ved hjælp af ish, som er open source, men skal installeres ved hjælp af Apples proprietære TestFlight-app

alternativt er der to open source-terminalemulatorapps, der leverer open source-værktøjer i et begrænset miljø. Dette er den mest begrænsede mulighed-det giver dig ikke rigtig mulighed for at køre Google, men du kører Google tools. Der er store begrænsninger på, hvad du kan gøre på enheden med disse apps, men de giver dig nogle kommandolinjefunktionaliteter.

Jeg vil se på den enkleste tilgang, før jeg udforsker mere udfordrende løsninger.

mulighed 1: en sandkasse shell

en af de nemmeste måder at komme i gang er med iOS app LibTerm. Dette er en sandkasse open source kommandolinjeskal med 80+ kommandoer bundtet i en $0 app. Det leveres med Python 2.7, Python 3.7, Lua, C, Clang og meget mere.

langs lignende linjer er a-Shell, beskrevet som en “tekstbaseret brugergrænseflade til en skærmbaseret platform.”a-Shell er open source, i aktiv udvikling, giver adgang til filsystemet, og skibe med Lua, Python, Vim, JavaScript, C, og C++, sammen med Clang og Clang++. Det giver dig endda mulighed for at installere Python-pakker med pip.

Mulighed 2: SSH overalt

et trin op fra at hente en app konfigurerer en SSH-klient. I lang tid nu har det været muligt at bruge en af mange SSH-klientapps på iOS til at oprette forbindelse til en server, der kører en eller BSD. Fordelen ved at bruge SSH er, at din server kan køre enhver distro med ethvert program, du kan lide. Du arbejder eksternt, og din output bliver bare ført til din iOS-enheds terminalemulator.

Blink shell er en populær betalt open source SSH app. Uden for den lille skærm, ved hjælp af dette program er beslægtet med at forbinde til en server via en anden kommandoprompt. Blink ‘ s terminal ser smuk ud med en række inkluderede temaer og muligheden for at oprette dine egne temaer, herunder tilpasning og tilføjelse af nye skrifttyper.

Mulighed 3: Brug af SSH til at oprette forbindelse til en server, der kører en prompt, er en fantastisk måde at få adgang til en prompt, men det kræver adgang til en ekstern server og en forbindelse. Dette er ikke den værste adgangsbarriere, men det er ikke helt ubetydeligt, og du vil måske bruge uden dette serverkrav.

hvis det er din sag, skal du bryde ud noget lidt mere på forkant. TestFlight er en proprietær service til implementering af apps under udvikling, før de sendes til Apples App Store. Du kan hente TestFlight-appen fra butikken og derefter tilmelde dig et antal testapplikationer. Apps i TestFlight tillader et begrænset antal eksterne betatestere (generelt op til 10.000) i en begrænset periode. For at hente en testapp skal du få adgang til et link direkte fra din enhed, som generelt findes på testappudviklerens hjemmeside.

kør Alpine linuk med iSH

iSH er en open source TestFlight-app, der kører en virtuel maskine med Alpine Linuks distro ud af kassen (men du kan køre andre distributioner med lidt mere tinkering).

en vigtig advarsel: Dette er eksperimentelt. Da iSH i øjeblikket er en testapp, forvent ikke permanent eller robust service. TestFlight-apps er tidsbegrænsede. Min nuværende bygning varer 60 dage. Det betyder, at jeg om 60 dage bliver låst ude og skal tilslutte mig ishs næste testfase. Desuden mister jeg mine filer, medmindre jeg eksporterer dem med filer på iOS eller sikkerhedskopierer dem til en Git-vært eller med SSH. For at være klar: stol ikke på dette for at fortsætte med at arbejde! Læg ikke noget på Her, der er vigtigt! Sikkerhedskopier dit arbejde andetsteds!

installer iSH

kom i gang ved at installere TestFlight gennem App Store. Installer derefter iSH ved at få installationslinket via sin hjemmeside. Der er en anden installationsmetode, der bruger AltStore, men jeg har ikke prøvet det. Eller hvis du har en betalt udviklerkonto, kan du hente ishs repo fra GitHub og implementere det selv.ved hjælp af linket installerer TestFlight en iSH-app på din enhed. Som enhver anden app vises den på din skærm med et ikon.

Administrer pakker

iSH kører en H86 emulator med Alpine. Alpine er en lille, under-5mb distro. Dette var min første gang at køre Alpine, og jeg troede, jeg ville blive frustreret over en så minimal distro, men jeg nød det faktisk virkelig.

ish-install.png

Alpine Linuk på iOS

(Lee Tusman, CC BY-SA 4.0)

Alpine bruger APK package manager, som er enklere end endda apt eller pacman.

for at installere en pakke:

apk add package

for at fjerne en pakke:

apk del package

Find andre kommandoer og info med:

apk --help

Opdater pakkeadministratoren:

apk updateapk upgrade

få en teksteditor

Alpine ‘ s standard teksteditor er Vi, men jeg foretrækker Vim, så jeg installerede den:

apk add vim

Du kan vælge at vælge en kunne installere nano eller emacs, hvis du foretrækker det.

Skift skallen

Jeg ved ikke om dig, men jeg har brug for fiskeskallen. Andre mennesker foretrækker Bash eller SSH. Men Alpine bruger aske! Ash er en gaffel af Dash shell, selv en gaffel af den oprindelige ash eller Almkvist shell. Det er designet til hastighed. Jeg besluttede at handle hastighed til fordel for den indbyggede auto-færdiggørelse, farve, Vim-nøgle kontrol, og syntaksfremhævning, som jeg kender og elsker i fish shell.

Install fish:

apk add fish

Hvis du vil have Bash og dets færdiggørelser og man-sider i stedet, skal du installere dem og nogle ekstra ting:

apk add bash bash-doc bash-completion

Alpine minimalistiske ideologi betyder generelt, at nogle programmer, der ville være en enkelt pakke i andre distros, er opdelt i flere mindre pakker. Dette betyder også, at du kan tilpasse og slanke dit system nøjagtigt, hvordan du vil.

Du kan finde flere detaljer om installation af Bash i denne vejledning.

Skift standardskallen

efter installation af fish kan du midlertidigt skifte til den og prøve den ved at skrivefish og slippe ind i skallen. Men jeg vil gøre fisk til min standardskal, og kommandoen chsh jeg er vant til fra andre distroer virker ikke.

find først ud af, hvor fisk er installeret:

which fish

min output:

/usr/bin/fish

rediger derefter loginskallen for at bruge fisk. Du kan bruge enhver editor, du er fortrolig med. Hvis du er nybegynder, skal du installere Nano (med apk add nano), så du kan redigere konfigurationsfiler og gemme dem med CTRL+H, bekræfte og afslutte.

men jeg brugte Vim:

vim /etc/passwd

min første linje var:

root:x:0:0:root:/root:/bin/ash

for at gøre fisk til standard, skift den linje til:

root:x:0:0:root:/root:/usr/bin/fish

gem derefter og afslut.

Jeg er sikker på, at der er en god måde at genkilde skallen på, så du kan begynde at bruge den med det samme. Men jeg er ikke sikker, så jeg anbefaler at vende tilbage til app-bro.ser, tvinge-afslutte skallen, og for godt mål, lukke ned og genstarte din iPad eller iPhone. Genåbn iSH, og nu, ud over “Velkommen til Alpine!”besked og info om at komme i gang med apk, du vil se standard fisk login velkommen besked: velkommen til fisk, den venlige interaktive shell. Hurra!

ish.png

fiskeskal på Alpine Linuk

(Lee Tusman, CC BY-SA 4.0)

Opsæt Python og pip

Jeg besluttede at tilføje Python (version 3.jeg kunne skrive kode, men fordi jeg stoler på flere Python-programmer. Installer det:

apk add python3

selvom Python 2.

apk add python

Installer Python package manager, pip og setuptools:

python3 -m ensurepip --default-pip

det tager lidt tid at installere og konfigurere pakkehåndteringen, så vent bare.

derefter kan du hente curl, netværksoverførselsværktøjet:

apk add curl

Læs manualen

fisk bruger indbygget automatisk færdiggørelse baseret på man-sider. Ligesom andre kommandolinjebrugere stoler jeg på man manual, og Alpine kommer ikke med den installeret. Så jeg installerede det sammen med den mindre personsøger:

apk add man man-pages less less-doc

ud over man bruger jeg det fabelagtige TLDR pages-projekt, der giver forenklede, samfundsdrevne man-sider.

Jeg installerede det med pip:

pip install tldr

kommandoentldr opretter forbindelse til internettet for at hente sider, når den støder på en anmodning om en ny. Hvis du har brug for at lære at bruge en kommando, kan du bare skrive noget som tldr curl for at få en almindelig engelsk forklaring og gode eksempler på, hvordan du bruger kommandoen.

Du kan selvfølgelig automatisere alt dette installationsarbejde med dotfiler eller et installationsskript, men det ville ikke rigtig falde inden for den Alpine måde at tilpasse en minimal installation nøjagtigt til dine specifikationer. Desuden tog det ikke så lang tid, gjorde det?

få mere at vide

iSH indeholder en “Hvad virker” – side med rapporter om, hvilke pakker der aktuelt virker. Bemærk, npm ser ikke ud til at fungere på dette tidspunkt.en anden side forklarer, hvordan du kan få adgang til iSH-filer fra iOS-filer-appen. Dette er en måde, du kan flytte og overføre filer på.


Skriv et svar

Din e-mailadresse vil ikke blive publiceret.