Cum se configurează smartphone-uri și PC-uri. Portal informativ

Ghid de scriptare Bash. Scrierea de scripturi în codurile sursă pentru scripturi Bash Shell

În comunitatea administratorilor de sistem și a utilizatorilor obișnuiți de Linux, practica scrierii de scripturi Bash este adesea renumită pentru a facilita și simplifica execuția unor obiective specifice în sistemul de operare Linux. În acest articol ne vom uita la scrierea de scripturi în Bash, ne vom uita la operatorii de bază, precum și la modul în care funcționează, ca să spunem așa, scripturile Bash de la zero. Mai simplu spus, ați scris odată ordinea evenimentelor care trebuie făcute, ați notat datele și așa mai departe, apoi ați scris ușor și simplu o singură comandă mică și toate procedurile sunt efectuate după cum este necesar.

Este posibil să mergeți și mai departe și să programați execuția automată a unui script. Dacă sunteți deja un utilizator mai experimentat, atunci, cel mai probabil, destul de des îndepliniți diverse obiective prin intermediul terminalului. Acesta este doar un exemplu și există o mulțime de astfel de acțiuni, chiar și luarea de rezervă și încărcarea fișierelor copiate pe un server la distanță. Există adesea sarcini pentru care trebuie să rulați mai multe comenzi pe rând, de exemplu, pentru a actualiza sistemul, trebuie mai întâi să actualizați depozitele și abia apoi să descărcați versiuni noi de pachete.

Acesta este un shell de comandă în care aveți posibilitatea de a emite diferite comenzi care vor începe să desfășoare diverse lucrări la viteză mare și fructuoasă. Absolut toată puterea sistemului de operare Linux este în utilizarea terminalului. Prin urmare, pentru a nu tasta aceleași comenzi de mai multe ori, puteți folosi scripturi. Acest lucru este foarte convenabil, pur și simplu combinați mai multe comenzi care au un anumit efect și apoi le executați cu aceeași comandă sau chiar folosind o comandă rapidă. Pentru sistemul de operare Linux, au fost create multe scripturi care sunt executate în diverse shell-uri de comandă. Ei bine, în principiu, evident că deja înțelegeți acest lucru.

Sistemul de operare consideră executabile doar acele fișiere cărora li se atribuie caracteristica de executabilitate. Iar interpretul pronunță rând cu rând și execută toate directivele care sunt prezente în fișier. Dar dacă caracteristica de executabilitate este setată pentru ele, atunci se folosește un program de calculator specializat pentru a le lansa - un interpret, în special, shell-ul bash. Îl putem rula ca orice alt program folosind un server terminal sau putem executa un shell și îi spunem ce fișier să execute.

În acest caz, nici măcar nu aveți nevoie de un indicator de executabilitate. În schimb, sunt utilizate semnături de pornire a fișierului și steaguri speciale. Avem mai multe metode diferite pentru a activa scriptul în sistemul de operare Linux. Sistemul de operare Linux practic nu folosește o extensie de fișier pentru a determina tipul acesteia la nivel de sistem. Managerii de fișiere pot face acest lucru, dar nu întotdeauna. Sistemul de operare consideră executabile doar acele fișiere cărora li se atribuie caracteristica de executabilitate. Acestea sunt fișiere obișnuite care conțin text.

Scripturi Linux Bash pentru dumies

Construcția bash poate fi descrisă în 7 obligații de tip similar: „apelarea interpretului de comandă - corpul scriptului bash - sfârșitul scriptului”. Scripturile sunt scrise cu suportul diferitelor editori de text și sunt stocate ca date de computer text. Dar, pentru a fi mai convenabil, le stochez împreună cu extensia „*.sh”. Dar să privim toate acestea cu exemplul unui obiectiv specific. Există o utilizare care trebuie lansată cu un set destul de mare de caracteristici. Va trebui să începi des și ești prea lene să introduci aceste caracteristici de fiecare dată. Pentru a fi mai specific, să vedem cum arată acest efect:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u user -c 100

Pentru acest script, să folosim interpretul bash. Procesul principal de care aveți nevoie și cu mine este să sunăm pe interpret. Deschide un editor de text și scrie cod.

Să adăugăm această operație ținând cont de variabilele introduse:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u $user -c $cash

Textul pe care îl vom introduce în jurnalele va fi astfel: text=”Soldul utilizatorului „utilizator” a fost completat cu ruble „cash” la timp”

Argumentul text variază în funcție de utilizator, numerar și variabile de timp

dacă [ -e /home/Admin/scripts/sgconf/sgconf.log] atunci echo text >> /home/Admin/scripts/sgconf/sgconf.log altfel echo text > /home/Admin/scripts/sgconf/sgconf.logfi

Acum, când trebuie să depunem bani cuiva, rulăm scriptul cu comanda „sh sgconf.sh”, introducem numele plătitorului și suma plății. Fără rânduri lungi, fără bătăi de cap cu introducerea constantă a acelorași valori.

Creați un script bash în sistemul de operare Linux

Pentru a scrie un script simplu în bash, trebuie să efectuăm următoarele proceduri obișnuite. Să creăm un fișier fără sens pe linia de comandă Linux (de exemplu îl numim firstscript) și să-l deschidem pentru editare în editorul nostru de text preferat (vi/vim, nano, gedit și așa mai departe). Pentru a dezvolta un scenariu nu veți avea nevoie de mult efort, dar pentru a schița un scenariu (program), va trebui să studiați diverse literaturi auxiliare. Vom descrie elementele de bază ale scrierii de scripturi, așa că să începem, dar dacă nu știi ce este un terminal și cum să-l folosești, atunci acesta este locul potrivit pentru tine. La început, pentru a scrie bash, trebuie să creăm un director pentru scripturile noastre și un fișier în care vom scrie totul, pentru aceasta deschidem terminalul și creăm un director.

Comutați la directorul nou creat

Și creați un fișier

sudo gedit script.sh

În exemplul meu, voi crea un script de actualizare a sistemului și îl voi scrie în acest fișier. Vom deschide editorul de text gedit, îmi place mai mult vim, dar nu va fi general acceptat printre voi, așa că îl arăt pe cel standard.

sudo apt update;sudo apt upgrade complet;

Faceți fișierul script executabil (dacă nu este deja așa). Rularea scripturilor sh din linia de comandă este ușoară. Rulați bash script linux.

chmod +x script.sh

Rulăm scriptul specificând pur și simplu calea către acesta:

cale/spre/script.sh

Dacă scriptul se află în directorul curent, atunci trebuie să specificați ./ înainte de numele fișierului script:

Uneori aveți nevoie de drepturi de superutilizator pentru a rula un script, apoi scrieți comanda sudo înainte de script:

sudo./script.shsudo cale/la/script.sh

Puteți, desigur, să porniți scriptul specificând direct interpretul: sh, bash și altele:

bash script.shsh cale/la/script.sh

După cum puteți vedea, pornirea unui script sh în Linux este o sarcină destul de comună, chiar dacă nu sunteți încă foarte familiarizat cu terminalul. Există într-adevăr o mulțime de scripturi și poate fi necesar să rulați unele dintre ele. În acest ghid, ne-am uitat la scripturi Linux bash utile pe care le puteți folosi atunci când utilizați sistemul de operare Linux. În acest articol, am analizat scripturile Linux bash utile pe care le puteți utiliza atunci când lucrați cu sistemul. Unele dintre ele constau din mai multe linii, câteva sunt plasate într-o singură linie. Există atât fragmente minore pe care le puteți folosi în scripturile dvs., cât și scripturi de dialog cu drepturi depline pentru a lucra cu ele prin consolă.

În primul rând, să ne dăm seama despre ce este vorba scenariuși de ce este nevoie.

Scenariul tradus din engleza - scenariu. Cu toții ne uităm la filme, mulți dintre noi ne uităm la piese de teatru. Pentru a crea un film/piesa de teatru, scenariștii le scriu scenarii, pe baza cărora actorii își interpretează rolurile pe scenă, scenă cu scenă, din care este alcătuit filmul/piesa. Munca de creare a unui scenariu este destul de minuțioasă, în care trebuie să țineți cont de totul până la cel mai mic detaliu, pentru ca, în final, artiștii să poată îndeplini ceea ce a intenționat scenaristul, iar privitorul să poată vedea o lucrare completă.

În mod similar, scripturile sunt scrise pentru a executa o listă de sarcini pe care utilizatorul le pune împreună (cod) pentru a le face mai ușor și mai rapid de finalizat pe sistemul de operare. Pentru a scrie scripturi simple, nu este deloc necesar să aveți o educație de programator.

Mai întâi, să creăm pe cel mai simplu script-Shell pentru a actualiza sistemul.

Voi efectua toate acțiunile cu sistemul Ubuntu, dar sunt aplicabile și altor sisteme Linux, derivat de la Ubuntu. Pentru asta avem nevoie de: Editor de text să-l completeze cu sarcinile necesare pentru a crea un script (cod) și Terminal- pentru a executa scriptul creat. Aceste instrumente sunt instalate în orice distribuție Linux Mod implicit.

Deci, deschideți un editor de text Geditși introduceți în el primele caractere necesare apelate shebang.
shebangîn programare, aceasta este o secvență de două caractere: un hash și un semn de exclamare ( #! ) la începutul fișierului script. Și adăugați la aceste caractere fără spații /bin/sh- interpretul unde va fi executat scriptul. /bin/sh- asta este de obicei coajă Bourne sau un interpret de linie de comandă compatibil care trece „cale/spre/script” ca prim parametru.
Prima linie necesară a scriptului va arăta astfel:

# Prima mea actualizare Ubuntu Script

Semnul hash (#) de la începutul liniei arată clar interpretului/terminalului că această linie nu trebuie citită și executată. Linia este necesară în codul acestui script pentru ca creatorul scriptului să știe ce va face în acest segment/scenă din cod, pentru a nu se încurca pe viitor când există multe astfel de linii. Astfel de linii cu un semn hash se numesc - comentat .

actualizare sudo apt
sudo apt upgrade -y

-y la sfârșitul celei de-a doua comenzi, îi explică interpretului/terminalului că această acțiune/comandă trebuie efectuată automat, fără confirmare suplimentară din partea utilizatorului prin apăsarea unei taste introduce. y- prescurtare pentru engleză da, adică da.

Asta e tot. Primul tău script a fost creat. Ar trebui să obțineți ceva ca în poză:


Tot ce rămâne este să salvezi fișierul/scriptul creat și să-l dai Nume cu prelungire obligatorie la final - .SH. Extensie .SH atribuit fișierului executabil.
i-am dat Nume - update.sh, economisind în Dosarul de acasă utilizator:


Pentru ca fișierul/scriptul creat să fie executabil, trebuie să i se acorde permisiunea de a face acest lucru. Există două moduri de a face acest lucru.

1. Rulați următoarea comandă în terminal:

sudo chmod +x update.sh

2. Sau deschideți managerul de fișiere în Dosarul de acasă(unde ați salvat scriptul creat), faceți clic dreapta pe fișier, în meniul contextual - Proprietăți - Drepturiși activați elementul - Performanţă: Permiteți executarea fișierului ca program:


Pentru a executa script-ul creat, trebuie să deschideți terminalul (cum am scris chiar la începutul articolului că terminalul este un atribut/instrument necesar pentru executarea script-ului), introduceți SH, separate printr-un spațiu, numele scriptului - update.shși apăsați tasta introduce:


Sau in terminal intram SHși trageți fișierul creat cu scriptul din managerul de fișiere (separat de asemenea printr-un spațiu):


Odată ce calea fișierului este afișată după comandă SHși spațiu, doar apăsați tasta introduce(Enter) pentru a efectua o actualizare a sistemului:


Acum, oricând puteți actualiza sistemul folosind propriul script.

Da, cineva ar putea argumenta că actualizarea sistemului nu este dificil de făcut executând aceste două comenzi în terminal, de ce să umflați și să creați niște scripturi? Asta e corect. Dar acesta este un exemplu de creare a unui scenariu simplu pentru a arăta că „nu zeii ard oalele” 😃.

După ce ați învățat să scrieți și să utilizați scripturi simple, puteți crea un script pentru configurarea sistemului, astfel încât, dacă sistemul este reinstalat, puteți utiliza scriptul creat fără a fi nevoie să căutați pe Internet site-uri cu setări similare de fiecare dată.

Mulți dintre voi folosesc cel mai probabil site-uri de configurare a sistemului, cum ar fi cele pe care le public după următoarea ediție. Ubuntu - Ubuntu după instalare sau site-uri similare. Deschideți unul dintre aceste site-uri: , apoi un editor de text pentru a crea un script.
De exemplu, am făcut următorul gol.

Într-un editor de text, introduceți prima linie necesară:

# Configurarea Ubuntu după instalare
# Actualizare de sistem

Următoarele sunt comenzile de actualizare a sistemului:

actualizare sudo apt
sudo apt upgrade -y

Linia descriere: Adăugarea de depozite:

# Adăugarea de depozite

Și adăugați depozitele necesare pentru instalarea ulterioară a software-ului:

sudo add-apt-repository „deb http://archive.canonical.com/ $(lsb_release -sc) partner” -y
sudo add-apt-repository ppa:atareao/telegram -y
sudo add-apt-repository ppa:atareao/atareao -y

sudo add-apt-repository ppa:nemh/systemback -y
sudo add-apt-repository ppa:gerardpuig/ppa -y
sudo add-apt-repository ppa:haecker-felix/gradio-daily -y

După ce au fost adăugate depozitele necesare (repet, este posibil să aveți propriile depozite, am un exemplu), trebuie să actualizați sistemul:

Linia descriere:

# Actualizarea sistemului după conectarea depozitelor

Și comanda de executat:

actualizare sudo apt

Acum că depozitele au fost adăugate și sistemul a fost actualizat, este timpul să instalați programe:

# Instalarea programelor

Pentru a instala programe, trebuie doar să introduceți comanda o dată sudo apt install, și apoi adăugați câte programe doriți în această linie, separate printr-un spațiu, principalul lucru este că acestea sunt compuse corect. Dacă un program este format din mai multe cuvinte, comanda sa trebuie să fie monolitică, adică. toate cuvintele din el trebuie introduse printr-o liniuță, de exemplu: unity-tweak-instrument:

sudo apt install my-weather-indicator telegram skype lm-sensors hddtemp psensor gdebi systemback unity-tweak-tool ubuntu-cleaner gradio -y

Instalarea de codecuri suplimentare

# Multimedia și codecuri

sudo apt install ubuntu-restricted-extras -y

Dezactivarea defecțiunilor sistemului

# Dezactivează raportarea blocării sistemului

sudo sed -i "s/enabled=1/enabled=0/g" "/etc/default/apport"

Ei bine, asta este probabil tot. Acest fișier script generat ar trebui să arate astfel:


Trebuie să-l salvați (faceți clic pe butonul Salvați) si da Nume cu extensie .SH. l-am sunat Setări\Ubuntu.sh(puteți să-l denumiți diferit, dar asigurați-vă că utilizați extensia .sh):


Să facem executabil scriptul creat:

sudo chmod +x Setup\Ubuntu.sh

Pentru a executa scriptul creat, intrați în terminal SHși numele scriptului creat separat de un spațiu, sau SH, bara de spațiu și trageți fișierul creat în terminal, așa cum sa explicat mai devreme în cel mai simplu script și apăsați tasta introduce, să o ducă la îndeplinire.

Notă. Backslash la comandă Setări\Ubuntu.sh scapă un spațiu într-un nume de fișier terminal între două cuvinte separate.

După ce scriptul este executat, stocați-l pentru viitor, pentru o posibilă reinstalare a sistemului și reconfigurare, cel mai bine pe o partiție separată a hard disk-ului din folder /Acasă. Dacă nu există, atunci într-un serviciu cloud (stocare de date în cloud) cum ar fi: DropBox, Cloud Mail.Ru, Mega.co etc., astfel încât să puteți folosi singur scriptul în orice moment sau să ajutați prietenii sau rudele să configureze sistemul.

Linia de comandă și lucrurile incredibile pe care le puteți face cu ea sunt semnul distinctiv al UNIX și al tuturor succesorilor săi. Și acolo unde există o linie de comandă, există scripturi. Și azi... nu, nu vom învăța să scriem scripturi, ne vom uita la cele mai utile dintre ele, cele pe care le poți folosi zilnic pentru a rezolva o gamă largă de probleme, de la rapoarte meteo și un server web într-o singură linie până la un bot pentru Twitter în zece rânduri și un script pentru a lansa automat orice client torrent.

Permiteți-mi să fac imediat o rezervare că nu sunt deloc un adept al șamanismului și în niciun caz nu vă îndemn să vă așezați într-o consolă verde și neagră și să tastați o grămadă de litere pentru a efectua acțiuni pentru care în interfața grafică doar trebuie să plasați mouse-ul peste elementul dorit. Cu toate acestea, sunt convins că pentru rezolvarea multor probleme consola și scripturile sunt mult mai bune decât interfața grafică și, prin urmare, nu pot fi neglijate. Mai mult, orice DE vă permite să creați o pictogramă pentru script, astfel încât nici măcar nu trebuie să deschideți consola pentru a o rula.

Exemple simple

Așadar, fără a dezvălui mai departe, să trecem direct la exemple:

$ curl ifconfig.co

Această comandă simplă vă va arăta IP-ul extern - ideal dacă accesați rețeaua printr-un router. Tot ce face este să contacteze serverul ifconfig.co, care returnează IP-ul înapoi pe o singură linie în loc de o pagină web completă.

Și da, acesta nu este deloc un script, este doar o comandă, dar pentru a transforma o comandă într-un script, puneți-o într-un fișier text și adăugați așa-numitul shebang ca primă linie, adică simbolurile # !, urmat de numele interpretului de comenzi:

$ chmod +x ~/bin/myip.sh

Acum poate fi apelat din linia de comandă cu comanda myip.sh.

#!/bin/sh curl -4 wttr.in/Moscow

Acest script vă permite să obțineți un raport meteo pentru patru zile. Principiul de aici este același ca și în cazul ifconfig.co.

Raport meteorologic în consola #!/bin/sh dig +short txt $1.wp.dg.cx

Și în acest fel puteți obține o scurtă descriere a ceva de pe Wikipedia, folosind o interogare DNS în loc să contactați un server web. Apropo, este, de asemenea, foarte ușor să creezi un server web prin linia de comandă:

#!/bin/sh while (nc -l 80< file.html >:) ; face: ; Terminat

Acest script se bazează pe utilitarul netcat (nc), care se numește cuțitul elvețian al operațiunilor de rețea. Scriptul pornește o buclă care execută comanda nc, care ascultă pe portul 80 și răspunde la cerere cu fişier.html, trimițând cererea transmisă nicăieri (simbolul înseamnă noop, adică o operațiune goală).

Folosind scripturi și comenzi simple, puteți asculta cu ușurință radioul pe internet:

#!/bin/sh mpv --volume=50 -playlist ~/16bit.fm_128.m3u

Desigur, lista de redare în format M3U trebuie descărcată în prealabil de pe site-ul postului de radio. Apropo, dacă rulați MPlayer cu argumentul --input-ipc-server=/tmp/mpvsocket, poate fi controlat prin scrierea de comenzi într-un fișier. De exemplu, reglați volumul:

Ecou „volum +10” | socat - /tmp/mpvsocket

Creați două scripturi: unul pentru a porni, celălalt pentru a opri radioul (cu linia killall mpv), agățați-le pe desktop și configurați tastele rapide DE pentru a controla redarea. Voila, aveți un player gata făcut pentru radio pe Internet, pe care îl puteți lansa făcând clic pe pictograma de pe desktop. Și cu greu va consuma memorie sau va ocupa tava.

Dar să luăm o pauză de la operațiunile de rețea și să revenim la afacerile locale.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Acesta este unul dintre scenariile mele preferate. Acesta creează o arhivă tar.gz a directorului curent. Deosebit de remarcată aici este construcția $(PWD##*/), care ia calea completă către directorul curent (variabila $PWD) și elimină prima parte din acesta până la ultima bară oblică, lăsând astfel doar numele directorul în sine. În continuare, i se adaugă extensia tar.gz. Puteți citi mai multe despre astfel de construcții în man bash.

#!/bin/sh în timp ce este adevărat; do inotifywait -r -e MODIFY DIRECTORY && YOUR_COMMAND finalizat

Și acesta este un script care rulează o comandă ca răspuns la modificările fișierelor din director. Poate fi folosit în multe scopuri diferite, cum ar fi pornirea automată a player-ului la salvarea unui fișier MP3. Sau pur și simplu afișați o notificare pe desktop folosind notify-send ca comandă:

Notify-send „Fișier schimbat”

Desktop

Din moment ce vorbim despre desktop, să continuăm. Ca și consola, poate fi și scriptat. De exemplu, iată un script care descarcă imagini de fundal aleatorii publicate pe canalul Reddit de fundal:

Continuarea este disponibilă numai pentru membri

Opțiunea 1. Alăturați-vă comunității „site” pentru a citi toate materialele de pe site

Calitatea de membru al comunității în perioada specificată vă va oferi acces la TOATE materialele Hacker, vă va crește discountul cumulat personal și vă va permite să acumulați un rating profesional Xakep Score!

Consola Linux este un instrument care vă permite să efectuați astfel de manipulări pe care linia de comandă din Windows nu vă permite să le faceți; consola Linux este cartea de vizită a UNIX. Materialul de astăzi nu este despre cum să scrieți scenarii, nu, nu vă voi învăța cum, ce și de ce. Ne vom uita la o mică selecție de scripturi utile pe care le puteți folosi în fiecare zi pentru a rezolva diverse tipuri de probleme, de exemplu, priviți vremea cu câteva zile înainte, scripturi pentru un server web într-o singură linie, scrierea unui bot pentru Twitter și un script pentru a lansa automat orice client torrent.

Acest material nu a fost scris pentru ca tu sa te angajezi in samanism, in nici un caz nu te incurajez sa stai in consola si sa tastezi sute de caractere pentru a realiza niste actiuni pe care le poti realiza in interfata grafica doar trecand mouse-ul peste elementul pe care il faci. nevoie. Dar există un lucru, interfața grafică nu este întotdeauna cea mai bună soluție; de ​​multe ori, pentru rezolvarea multor probleme, consola și scripturile fac față sarcinii mult mai bine decât aplicațiile cu interfață grafică și, prin urmare, nu ar trebui să uitați de scripturi, deoarece acestea rezolva o mulțime de lucrări de rutină mai bine decât instrumentele grafice. De asemenea, merită adăugat că orice DE vă permite să creați o pictogramă pentru scripturile dvs., făcând clic pe care le puteți lansa cu ușurință fără a deschide consola.

Să începem cu exemple simple

Comanda de mai jos vă va afișa IP-ul dvs. extern - acest lucru este ideal dacă accesați rețeaua folosind un router. Această comandă apelează serverul ifconfig.co, care returnează IP-ul într-o singură linie fără scrieri inutile de care nu aveți nevoie.

Curl ifconfig.co

Da, acesta nu este un script, aceasta este o comandă mică, dar dacă doriți să transformați această comandă într-un script, trebuie doar să o puneți într-un fișier text, în final vom obține un mic script bash:

#!/bin/bash curl ifconfig.co

Salvăm scriptul în directorul ~/bin și acordăm drepturi de execuție:

Chmod +x ~/bin/yourip.sh

Aproape gata, puteți executa scriptul din linia de comandă folosind comanda yourip.sh.

Am terminat cu IP-ul, haideți să verificăm vremea de pe consolă.

#!/bin/sh curl -4 wttr.in/Kiev

Acest script vă permite să obțineți un raport meteo pentru patru zile, în acest caz vremea pentru orașul Kiev.

#!/bin/sh dig +txt scurt $1.wp.dg.cx

Mai sus vedeți un exemplu despre cum puteți obține o scurtă descriere a ceva pe Wikipedia, în cazul nostru folosim o interogare DNS în loc să contactăm serverul web. De asemenea, este foarte ușor să creezi un server web prin intermediul consolului:

#!/bin/sh while (nc -l 80< file.html >:) ; face: ; Terminat

Scriptul de mai sus se bazează pe utilitarul netcat (nc), adesea numit cuțitul elvețian, deoarece vă permite să faceți multe trucuri pentru operațiunile de rețea. Scriptul este simplu, pornește o buclă care execută comanda nc, care deja ascultă portul 80 și răspunde la cerere fişier.html, trimițând cererea transmisă nicăieri (simbolul înseamnă noop, adică o operațiune goală).

Folosind scripturi și comenzi simple, puteți asculta radio pe internet:

#!/bin/sh mpv --volume=50 -playlist ~/16bit.fm_128.m3u

Desigur, înainte de aceasta trebuie să descărcați lista de redare radio în format M3U de pe site-ul postului de radio. Dacă lansați MPlayer folosind argumentul -input-ipc-server=/tmp/mpvsocket, poate fi controlat prin scrierea de comenzi într-un fișier. De exemplu, reglați volumul:

Ecou „volum +10” | socat - /tmp/mpvsocket

Creăm două scripturi: primul pentru a porni și celălalt pentru a opri radioul (în care vom scrie linia killall mpv), apoi îl agățăm pe desktop, setând împreună tastele rapide DE pentru a controla redarea. Și gata, ai un player cu care poți asculta radio pe internet.

Ne-am lăsat duși de operațiuni de rețea, să trecem la cele locale.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Acest script creează o arhivă tar.gz pentru directorul curent. O atenție deosebită trebuie acordată construcției $(PWD##*/), care ia întreaga cale către directorul curent (variabila $PWD), apoi elimină prima parte până la ultima bară oblică, lăsând doar numele directorului și adăugându-i extensia tar.gz. Dacă doriți să aflați mai multe informații despre astfel de construcții, puteți citi rulând comanda man bash în consolă.

#!/bin/sh în timp ce este adevărat; do inotifywait -r -e MODIFY DIRECTORY && YOUR_COMMAND finalizat

Scriptul de mai sus rulează o comandă ca răspuns la modificările aduse fișierelor dintr-un director. Îl puteți folosi în diferite scopuri, ca exemplu pentru pornirea automată a playerului atunci când salvați MP3. Sau, de exemplu, afișați o notificare pe desktop folosind comanda notify-send:

Notify-send „Fișier schimbat”

Pentru desktop

Mai jos veți vedea un exemplu de script care încarcă imagini de fundal aleatorii care sunt publicate pe canalul reddit de fundal:

#!/bin/bash wget -O - http://www.reddit.com/r/wallpaper |\ grep -Eo "http://i.imgur.com[^&]+jpg" |\ shuf -n 1 |\ xargs wget -O background.jpg feh --bg-fill background.jpg

Totul funcționează destul de simplu. Folosind utilitarul wget, scriptul descarcă pagina www.reddit.com/r/wallpaper, apoi o transmite grep, care caută deja link-uri către imgur și selectează una aleatoare folosind shuf, o descarcă folosind wget și o setează ca tapet pentru desktop, folosind comanda feh (acesta este un vizualizator de imagini în miniatură care trebuie instalat mai întâi). Puteți adăuga acest script la un fișier text obișnuit așa cum am descris mai sus, îl puteți salva în format sh, îl puteți face executabil, adăugați o pictogramă și rulați-l de pe desktop făcând clic și imaginea de fundal se va schimba.

#!/bin/sh state=`synclient | grep TouchpadOff | cut -d "=" -f 2` if [ $state = "1" ]; apoi synclient TouchpadOff=0 altfel synclient TouchpadOff=1 fi

Scriptul de mai sus este folosit pentru a activa și dezactiva touchpad-ul laptopului: activați dacă este dezactivat și invers. Pentru o funcționare corectă, folosește utilitarul synclient, care vă permite să controlați touchpad-urile, care sunt în mare parte produse de Synaptics, acest lucru este posibil în proporție de 90%, chiar mai mult. După lansare, utilitarul afișează o mulțime de informații, inclusiv linia TouchpadOff = 1 dacă este activat și TouchpadOff = 2 dacă este dezactivat. Scriptul va citi aceste valori și, în funcție de starea touchpad-ului, îl va activa sau dezactiva.

!#/bin/bash mpv tv:// -frames 3 -vo jpeg mv 00000003.jpg photo.jpg rm -f 0000*.jpg

Folosind scriptul de mai sus, puteți face o fotografie folosind camera web. Scriptul folosește un player video mpv care înregistrează primele trei cadre capturate de cameră în fișiere în format JPEG cu nume 00000000.jpg, 00000002.jpg, 00000003.jpg, etc., după care a treia imagine este redenumită în foto.jpg fișier, iar restul sunt șterse. La ce sunt folosite trei poze? Sunt necesare doar pentru ca camera dvs. să aibă timp să se inițialeze; dacă utilizați primele două imagini, veți obține de obicei o imagine neagră. Există și incidente cu poziționarea, fotografia poate fi cu susul în jos; pentru a evita acest lucru, mpv trebuie să fie lansat cu indicatorul -vf flip:

Mpv tv:// -frames 3 -vf flip -vo jpeg

Puteți folosi aceeași comandă pentru a crea o cameră de securitate care va face fotografii numai atunci când utilizatorul atinge mouse-ul:

#!/bin/bash în timp ce este adevărat; face sudo cat /dev/input/mouse0 | citește -n1 mpv tv:// -frames 3 -vo jpeg mv 00000003.jpg `date +%F-%H-%M`.jpg rm -f 0000*.jpg sleep 10 terminat

Scriptul de mai sus folosește o buclă infinită, preluând date de pe dispozitivul /dev/input/mouse0. Dacă există date, înseamnă că mouse-ul a fost mutat sau unul dintre butoanele acestuia a fost apăsat. Apoi mpv este folosit pentru a crea trei instantanee, celui de-al treilea instantaneu i se dă numele datei curente și primele două sunt șterse.

Dacă doriți să înregistrați un videoclip complet de pe o cameră web, puteți utiliza un script similar ca exemplu:

#!/bin/bash mencoder tv:// -tv driver=v4l2:width=800:height=600:device=/dev/video0:fps=30:outfmt=yuy2:forceaudio:alsa:advice=hw.2, 0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800 -ffourcc xvid -oac mp3lame -lameopts cbr=128 -o video.avi

Ca urmare, veți primi un fișier numit video.avi în format MPEG4, bitrate 1800 și un fișier audio în format MP3 cu bitrate 128.

#!/bin/bash ffmpeg -f x11grab -r 25 -s 1366x768 -i:0.0 screencast.mpg

Folosind scriptul de mai sus, puteți înregistra un ecran complet. 1366×768 este rezoluția desktopului, o poți personaliza după cum ți se potrivește. Pentru a face o captură de ecran a unei singure ferestre, puteți utiliza comanda de import:

Import screenshot.png

Dacă executați comanda de mai sus, pictograma cursorului mouse-ului se va schimba într-o cruce, folosind care puteți selecta o zonă a ecranului așa cum faceți atunci când faceți capturi de ecran folosind aplicații sau extensii terțe. Dacă atașați această comandă la una dintre tastele rapide, veți obține un sistem aproape ideal pentru a face capturi de ecran, iar această combinație nu vă va consuma memoria RAM, ceea ce îi oferă în mod semnificativ un avantaj imens.

De asemenea, puteți configura un monitor extern folosind consola:

#!/bin/sh dacă [ -z "$1" ]; apoi exit fi if [ $1 == "off" ]; apoi xrandr --output VGA-0 --off xrandr -s 0 else if [ $1 == "pornit"]; Apoi XRandr --Output LVDS --auto --primary --output vga-0 --auto --Left-of lvds xrandr-newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync xrandr- addmode VGA-0 1920x1080 xrandr --ieșire VGA-0 --mod 1920x1080 fi xrandr --dpi 96

Acest script se bazează pe faptul că monitorul principal se numește LVDS, iar monitorul extern se numește VGA-0. Aceasta este o situație standard pentru toate laptopurile; dacă nu sunteți sigur, puteți verifica rulând comanda xrandr: când treceți un argument scriptului oprit dezactivează monitorul extern, argument pe, la rândul său, îl include, plasându-l în partea stângă a celui principal (argument -stânga din LVDSîn prima echipă). Scriptul creează apoi o nouă configurație pentru monitor cu o rezoluție de 1920 x 1080 și o activează. Și, în cele din urmă, scriptul setează valoarea DPI implicită - deoarece atunci când conectați un monitor cu o rezoluție diferită, acesta se blochează adesea.

În cele mai multe cazuri, comenzile xrandr -newmode...Și xrandr -addmode... nu sunt necesare deoarece Xorg va obține configurația și rezoluția monitorului folosind EDID. Uneori, însă, acest lucru nu se întâmplă, iar șirul de configurare specificat după argument - mod nou, trebuie să-l generați singur folosind instrumentul cvt:

CVT 1920 1080

Folosind instrumentul cvt, puteți genera rezoluții personalizate care nu sunt acceptate de monitorul implicit.

Căutând pe Google din linia de comandă

Să revenim din nou la serviciile de rețea. Cum să obțineți primele 10 rezultate de căutare în Google? Uită-te la scenariul de mai jos:

#!/bin/bash Q=" " URL="https://www.google.de/search?tbs=li:1&q=" AGENT="Mozilla/4.0" stream=$(curl -A "$AGENT" -skLm 10 "$(GOOG_URL)$(Q//\ /+)" | grep -oP "\/url\?q=.+?&" | sed "s|/url?q=||; s| &||") echo -e "$(stream//\%/\x)"

Acest script trimite o solicitare la Google folosind curl, înlocuind spațiile din șirul de căutare cu plusuri. Apoi link-urile apar în HTML de răspuns

Exemplu cu serviciul YouTube:

#!/bin/bash mpv -fs -quiet `youtube-dl -g "$1"`

Scriptul din exemplul de mai sus redă un videoclip cu ID-ul specificat în argument folosind un player mpv. Trebuie să instalați youtube-dl în avans.

Câteva exemple de lucru cu Twitter. Mai jos veți vedea un script pentru un bot cu drepturi depline, care acceptă o comandă ca intrare, o execută folosind interpretul de comenzi și trimite rezultatul utilizatorului specificat.

#!/bin/bash USER="Pseumele tău" în timp ce este adevărat; face CMD=`echo "/dma +1" | ttytter-script | sed "s/\[.*\]\ //" dacă [ $CMD != $OLD_CMD ]; apoi REPL=`$CMD` echo "/dm $USER $(REPL:0:140)" | ttytter -script CMD = $OLD_COMD fi sleep 60 terminat

Scriptul folosește clientul consolei ttytter, citind ultima valoare a mesajului direct din buclă, apoi verificând dacă această comandă a fost executată, dacă nu, o execută și o trimite utilizatorului specificat cu variabila USER, tăind până la 140 de caractere .

Pentru ca totul să funcționeze, trebuie să instalați utilitarul ttytter, să îl rulați, apoi să copiați linkul generat din consolă și să îl inserați în bara de adrese a browserului, să treceți prin confirmare, să fiți de acord, apoi să primiți cheia de autentificare, să copiați și să lipiți în consolă în ttytter. Desigur, înainte de toate acestea, este recomandabil să adăugați un utilizator separat și să vă conectați sub contul său.

Puteți folosi Twitter nu numai pentru a crea un bot, ci și pentru a vă monitoriza mașina. Scriptul de mai jos trimite un mesaj către flux cu informații despre starea mașinii (nume gazdă, timp de funcționare, încărcare, memorie liberă și încărcare CPU):

#!/bin/bash HOST=`hostname -s` UP=`uptime | cut -d" " -f4,5 | cut -d"," -f1` LOAD=`uptime | cut -d":" -f5,6` MEM=`ps aux | awk "( sum += $4 ); END ( print suma )"` CPU=`ps aux | awk "( sum += $3 ); END ( print suma )"` tweet="Gazdă: $(HOST), timp de funcționare: $(UP), CPU: $(CPU)%, memorie: $(MEM)%, loadavg $(ÎNCĂRCARE)" dacă [ $(echo "$(tweet)" | wc -c) -gt 140 ]; apoi ecou „FATAL: tweet-ul are mai mult de 140 de caractere!” ieșire 1 fi echo $tweet | ttytter-script

În cele din urmă, uitați-vă la scriptul de mai jos, acest script este folosit pentru a porni și opri clientul torrent în timp ce computerul este inactiv:

#!/bin/bash IDLE=600000 STOPCMD="transmission-remote -S" STARTCMD="transmission-remote -s" STOPPED="yes" în timp ce este adevărat; face if [ `xprintidle` -gt $IDLE ]; atunci dacă [ $STOPPED = "da" ]; apoi $STARTCMD STOPPED="nu" fi altfel if [ $STOPPED = "nu" ]; apoi $STOPCMD STOPPED="yes" fi fi sleep 60 gata

În fiecare minut, scriptul intră într-o buclă infinită și verifică cât timp a trecut în milisecunde de când utilizatorul a efectuat ultima acțiune (xprintidle este folosit în aceste scopuri). Dacă au trecut 600.000 ms (zece minute), scriptul execută comanda specificată în variabila STARTCMD. În caz contrar, comanda STOPCMD este executată, dar numai dacă STARTCMD a fost executat înaintea acesteia. Pentru a explica în termeni simpli, nu faci nimic la computer timp de zece minute, apoi se lansează STARTCMD, în cazul nostru aceasta este comanda care pornește toate descărcările în Transmission, dacă nu, toate descărcările sunt suspendate. Nu-ți place clientul Transmission? Folosim comenzi pentru Deluge, vezi mai jos:

STOPCMD="pauză deluge-console \*" STARTCMD="reluare deluge-console \*"

Concluzie

Cele mai bune articole pe această temă