Ottieni cURLy: 10 cose utili che puoi fare con cURL

Il terminale Linux ha così tanti modi per interagire e manipolare i dati, e forse il modo migliore per farlo è con cURL. Questi 10 consigli e trucchi ti mostrano quanto sia potente.

Il terminale Linux ha così tanti modi per interagire e manipolare i dati, e forse il modo migliore per farlo è con cURL.  Questi 10 consigli e trucchi ti mostrano quanto sia potente.
Annuncio pubblicitario

Quando iniziamo a conoscere gli strumenti della riga di comando, tendiamo a vederli come a scopo singolo. Ti viene insegnato che il cat stampa il contenuto del file, ls elenca tutti gli elementi in una directory e du mostra l'utilizzo dello spazio del disco. Tuttavia, molti strumenti a riga di comando hanno dozzine di opzioni, tutte ben descritte nei loro file man . Alcuni di loro possono fare meraviglie se combinati con altri comandi.

Certo, è irragionevole aspettarsi che qualcuno ricordi ogni singola opzione. Con questo in mente, è bene aggiornare occasionalmente la nostra conoscenza dei comandi di Linux An AZ di Linux - 40 Comandi essenziali che dovresti sapere su AZ di Linux - 40 Comandi essenziali che dovresti sapere Linux è la terza ruota spesso ignorata per Windows e Mac. Sì, negli ultimi dieci anni, il sistema operativo open source ha guadagnato molta trazione, ma è ancora ben lontano dall'essere considerato ... Leggi altro, perché potresti scoprire nuovi usi per loro.

arricciatura-comandi-introduzione

Questa volta, ci stiamo concentrando su cURL, uno strumento per il trasferimento di dati tramite una serie di protocolli Internet come HTTP (S), FTP, Telnet, LDAP, IMAP, POP3, SMTP e altro.

In termini semplificati, cURL esegue varie richieste da un client a un server, stabilendo una connessione tra loro mediante un protocollo specifico e i suoi metodi associati. Ad esempio, come client HTTP, CURL può inviare una richiesta per visualizzare o scaricare il contenuto (metodo di richiesta GET) o per pubblicare contenuti tramite un modulo su un sito Web (metodo di richiesta POST). Molte applicazioni e servizi Web consentono a cURL di interagire con le loro API (Application Programming Interface).

Perché la loro funzionalità si sovrappone in una certa misura, cURL e wget Mastering Wget & Learning alcuni trucchetti per il download ordinario Mastering Wget & Learning alcuni trucchetti per il download ordinario A volte non è sufficiente salvare un sito Web localmente dal browser. A volte hai bisogno di un po 'più di energia. Per questo, c'è un piccolo e semplice strumento a linea di comando noto come Wget. Wget è ... Read More sono spesso confrontati tra loro. Entrambi gli strumenti possono scaricare contenuti da Internet, ma wget supporta download ricorsivi, scraping Web e in genere è più semplice da utilizzare. Se vuoi solo scaricare i file dal terminale Scarica i video Web con la riga di comando usando Movgrab [Linux] Scarica i video Web con la riga di comando usando Movgrab [Linux] Usa la riga di comando per scaricare rapidamente video da YouTube, Vimeo, Ted, Discovery e oltre 40 altri siti che utilizzano un semplice programma. Si chiama MovGrab ed è un ottimo programma gratuito per Linux. Abbiamo mostrato ... Per saperne di più, wget è probabilmente una scelta migliore.

D'altra parte, se hai bisogno di metodi di autenticazione HTTP avanzati, e vuoi caricare file e scaricarli, vale la pena imparare come cURL. Inoltre, wget supporta solo HTTP (S) e FTP, mentre cURL copre una vasta gamma di protocolli. Ciò significa che cURL può fare cose interessanti - e qui ci sono dieci esempi per dimostrarlo.

1. Ottieni il bollettino meteorologico

Se qualcuno ti dicesse di controllare il tempo dal terminal, ti aspetteresti di vedere alcuni numeri noiosi. Non con questo comando.

curl http://wttr.in/LOCATION

arricciatura-comandi-meteo

Le informazioni sono fornite da un'applicazione CLI chiamata wego, ma se non si desidera installarlo, cURL può recuperare la previsione dal suo frontend web wttr.in. Tutto ciò di cui ha bisogno è la posizione per cui si desidera la previsione. Basta digitare il nome di una città, il suo codice aeroportuale o il tuo attuale indirizzo IP. Una nuova funzione mostra le informazioni sulle fasi lunari se si digita:

curl wttr.in/Moon

arricciatura-comandi-moonphase

2. Scarica file e riprendi i download

Il download di file è qualcosa che di solito facciamo nel browser. A volte ti consigliamo di utilizzare un gestore di download Ottieni una Gestione download gratuita per velocizzare i tuoi download Ottieni una Gestione download gratuita per velocizzare i tuoi download Il tuo browser non fa un buon lavoro nella gestione di download di grandi dimensioni. Se sei stufo di velocità di download lente e arresti anomali, prova un download manager. Ti consigliamo 9 strumenti gratuiti per gestire i tuoi download. Leggi di più ; ad esempio, quando si scaricano più file contemporaneamente o quando si desidera mettere in pausa i download. Sebbene cURL non sia una scelta popolare per i download simultanei (si consiglia invece wget), è comunque possibile utilizzarlo a tale scopo combinando le sue potenti opzioni (switch). Innanzitutto avrai bisogno di un link diretto al file. In questo esempio, useremo un PDF della rivista Linux Voice.

curl -O -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

L'interruttore O maiuscole (-O) consente a cURL di salvare il file con il nome file predefinito (di solito quello del collegamento stesso). Se si desidera salvarlo con un nome diverso, si utilizzerà la lettera minuscola o seguita dal nuovo nome:

curl -o magazine.pdf -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

Per impostazione predefinita, i file vengono salvati nella directory corrente (controllarlo con il comando pwd ). Per salvarli altrove, fornire il percorso dopo l'opzione -o. L'opzione -C - consente a cURL di riprendere il download. Dovresti metterlo in pausa premendo Ctrl + C nel terminale e riprendere eseguendo di nuovo lo stesso comando di download:

curl-comandi-riprendere-download

cURL mostra l'avanzamento del download in un formato simile a una tabella, con colonne contenenti informazioni sulla velocità di download, la dimensione totale del file, il tempo trascorso e altro. Se non ti piace, puoi optare per una barra di progresso più semplice aggiungendo - # o -progress-bar al tuo comando cURL.

Per scaricare più file contemporaneamente, elenca i collegamenti uno dopo l'altro:

curl -O file1.txt -O file2.pdf -O file3.zip

Con l'aiuto di altri strumenti da riga di comando, possiamo scaricare in batch tutte le immagini PNG e JPG da un blog Tumblr:

curl http://concept-art.tumblr.com/ | grep -o 'src="[^"]*.[png-jpg]"' | cut -d\" -f2 | while read l; do curl "$l" -o "${l##*/}"; done

In questo caso, cut e grep raccolgono informazioni sui nomi dei file e formattano in modo che vengano visualizzati solo i file con estensioni specificate. Se si esegue il comando senza l'ultima pipe:

curl http://concept-art.tumblr.com/ | grep -o 'src="[^"]*.[png-jpg]"' | cut -d\" -f2

riceverai solo un elenco di file che soddisfano i nostri criteri, ma non verranno effettivamente scaricati. cURL può ottenere un elenco di immagini da una gamma di pagine, a condizione che il blog usi l'impaginazione standard:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src="[^"]*.[png-jpg]"' | cut -d\" -f2

È possibile modificare l'intervallo modificando i numeri tra parentesi quadre. Ancora una volta, questo comando dovrebbe solo elencare le immagini; per scaricarli, eseguire il comando completo nella directory in cui si desidera salvare le immagini:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src="[^"]*.[png-jpg]"' | cut -d\" -f2 | while read l; do curl "$l" -o "${l##*/}"; done

Se sei esperto in espressioni regolari RegExr: strumento di test di espressioni regolari basato sul web RegExr: strumento di test di espressioni regolari basato sul web Per saperne di più, puoi migliorare l'aspetto e l'efficienza di questo comando e condividere il risultato nei commenti.

3. Gestire i file su un server FTP

Di questi tempi non sappiamo molto di FTP, ma ciò non significa che sia obsoleto. In effetti, molti progetti open source e distribuzioni Linux condividono il loro software su server FTP. Poiché FTP è supportato da cURL, puoi usarlo come un semplice client FTP FileZilla - Perché questo client FTP trionfa sui suoi concorrenti FileZilla - Perché questo client FTP trionfa sui suoi concorrenti Le app portatili ti rendono indipendente. Memorizzato su una chiavetta USB o nella tua cartella Dropbox, tutti gli strumenti essenziali saranno a portata di mano ovunque tu vada. Non dovrai installare nulla neanche. Ulteriori informazioni per caricare e scaricare file. È possibile sfogliare i file su un server FTP accedendo alle directory:

curl ftp://ftp.debian.org/debian/

Per inserire una sottodirectory, digitarne il nome seguito da una barra (/).

curl-comandi-ftp-browse

Il download di file è simile ai download HTTP descritti nella sezione precedente. È possibile utilizzare -o o -O e aggiungere -C - se si desidera mettere in pausa i download.

curl -O ftp://ftp.heanet.ie/mirrors/linuxmint.com/stable/17.3/linuxmint-17.3-kde-64bit.iso

Sebbene cURL non supporti i download ricorsivi (ricorda, wget!), Può comunque scaricare un intervallo di file contemporaneamente. L'unica condizione è che i nomi dei file seguano uno schema. Ad esempio, è possibile scaricare da un server di hosting della carta da parati in cui tutti gli sfondi sono denominati "wallpaperNUMBER":

curl -O ftp://ftp.myserver.com/files/wallpaper[0-120].jpg"

Alcuni server FTP richiedono l'autenticazione prima di poter scaricare i file. cURL ti consente di accedere con l'opzione -u (utente):

curl -u username:password -O ftp://ftp.protectedserver.com/files/example.txt

Puoi anche caricare file su un server FTP con l'opzione -T (trasferimento):

curl -u username:password -T /home/user/Documents/test.txt ftp://ftp.myserver.com

Qui puoi anche definire più file come intervallo. Questa funzionalità è talvolta chiamata "globbing". Se i nomi dei file non seguono uno schema, basta elencarli tra parentesi graffe ( -T "{file1.txt, image27.jpg"}" ). Al contrario, se hanno nomi simili, applica la stessa logica dall'esempio di download di Tumblr e usa parentesi quadre ( -T "photo[1-50].jpg"" ). Assicurati di fornire il percorso completo ai file se non sono nella tua directory corrente.

4. Controlla se un sito web non funziona

Siamo stati tutti lì. Un sito Web di cui hai assolutamente bisogno improvvisamente smette di funzionare. Quindi Facebook non verrà caricato. Di fronte a un vero problema del primo mondo, cosa fai?

Puoi farlo da Google, chiedere ad un amico di testarlo per te o utilizzare uno di quei siti a servizio singolo che ti dicono se un sito web non funziona. Oppure potresti semplicemente avviare il terminale ed eseguire cURL:

curl -Is https://www.twitter.com -L | grep HTTP/

L'interruttore I maiuscolo (-I) controlla l'intestazione HTTP di una pagina Web e l'opzione -L (posizione) viene aggiunta per fare in modo che cURL segua i reindirizzamenti. Ciò significa che non devi digitare l'intero URL di Facebook; basta scrivere su facebook.com e cURL si prenderà cura di tutto il resto grazie a -L. Se ci sono dei reindirizzamenti, verranno visualizzati con il loro stato HTTP.

curl-comandi-http-status

Il messaggio che ci interessa è "200 OK", il che significa che tutto va bene con il sito web. Se è davvero basso, vedrai qualcosa di simile a questo:

curl-comandi-http-status-down

I codici di stato HTTP sono solo informativi quanto consente la comprensione di essi. Questo metodo non è completamente affidabile, in quanto un sito Web può restituire un codice di stato che indica una richiesta elaborata correttamente, ma sarà vuoto quando lo si apre nel browser. Tuttavia, nella maggior parte dei casi dovrebbe corrispondere alla situazione reale e farvi sapere cosa succede - o giù.

5. Espandi URL abbreviati

Gli URL abbreviati non sono intrinsecamente cattivi. Senza di loro, sarebbe difficile condividere link su Twitter Come battere il limite di 140 caratteri di Twitter Come battere il limite di 140 caratteri di Twitter Il limite di 140 caratteri di Twitter può essere una seccatura. Fortunatamente, ci sono modi per aggirarlo. Leggi altro e altri social network a carattere limitato. Alcuni servizi di abbreviazione URL Provate 10 diversi URL accorciatori che vi offrono vantaggi aggiuntivi Provate 10 diversi URL accorciatori che vi offrono vantaggi aggiuntivi Solo in che misura si può abbreviare un localizzatore di risorse uniforme in modo diverso? Bene, il sistema di accorciamento è praticamente un lavoro run-of-the-the-mill, ma il trucco sembra essere negli extra che vengono con il servizio di accorciamento .... Ulteriori informazioni offrono anche utili analisi. Ma c'è sempre il rischio che qualcuno stia cercando di nascondere il contenuto malevolo dietro un URL abbreviato, o che un troll stia mascherando un Rickroll Beyond Parody: 5 barzellette su Internet che si sono trasformate in qualcosa di più grande oltre la parodia: 5 barzellette su Internet che sono diventate più grandi Leggi di più (o qualcosa di molto, molto peggio). Se ti senti mai sospettoso di un URL abbreviato per qualsiasi motivo, cURL può aiutarti ad espanderlo e scoprire dove porta esattamente:

curl -sIL http://buff.ly/1lTcZSM | grep ^Location;

o

curl -sI http://buff.ly/1lTcZSM | sed -n 's/Location: *//p';

arricciatura-comandi-espandono

Puoi combinare cURL con grep o sed ; la differenza principale è nella formattazione. Sed è uno di quegli strumenti che ogni utente Linux dovrebbe sapere Ogni geek di Linux ha bisogno di conoscere Sed e Awk. Ecco perché ... Ogni geek di Linux ha bisogno di conoscere Sed e Awk. Ecco perché ... Due delle utility Linux meno apprezzate dal punto di vista criminale sono il seducente arcano Sed e Awk. Ma cosa sono? Come vengono utilizzati? E come rendono più semplice l'elaborazione del testo? Ulteriori informazioni e completa cURL in questo e in altri casi d'uso. Non dimentichiamo che CURL può scaricare file da un URL abbreviato (a condizione che l'URL punti effettivamente su un file):

curl -L -o filename.txt http://short.url

La sintassi è la stessa di altri download di CURL e l'opzione -L si occupa del reindirizzamento da un URL abbreviato a quello originale.

6. Mostra il tuo apprezzamento per l'arte ASCII

Certo, non è particolarmente utile, ma sembra interessante. Con l'aiuto di pv, un'utilità per monitorare l'avanzamento dei dati, cURL può visualizzare animazioni ASCII nel terminale.

curl -s http://artscene.textfiles\.com/vt100/wineglas.vt | pv -L9600 -q

Le opzioni -s e -q mantengono entrambi i comandi in modalità silenziosa (silenziosa). L'opzione -L qui si riferisce al comando pv e consente di modificare la velocità di trasferimento dei dati in byte al secondo. In altre parole, se l'animazione si muove troppo velocemente o troppo lentamente, prova a giocare con quel numero. Oltre alle animazioni, cURL può visualizzare l'arte ASCII semplice e statica:

arricciatura-comandi-AsciiArt

Il Web ha un sacco di siti web con tutti i tipi di arte ASCII là fuori: da pezzi di alta qualità incredibilmente dettagliati a materiale strano, stupido e persino NSFW. Questa tecnica artistica digitale risale agli anni '60, e oggi fa parte della cultura e della storia di Internet 7 Le antiche tendenze Internet che influenzano il Web oggi 7 Le antiche tendenze Internet che influenzano il Web Oggi Il web di oggi potrebbe non sembrare né la rete degli anni '90, ma rimarrai sorpreso da quanto di esso sia effettivamente lo stesso quando ti immergi sotto la superficie. Leggi di più, mantenuto in vita in numerose raccolte e strumenti che ti permettono di convertire testo e immagini in ASCII art ASCII Art: Image & Text In ASCII Converter ASCII Art: Image & Text In ASCII Converter Leggi di più. Puoi usarlo per decorare il tuo terminale o per fare scherzi ai tuoi amici - qualunque cosa faccia galleggiare la tua barca.

7. Sperimenta con i social media

L'uso dei social media dal terminale non è una novità - ti abbiamo già mostrato i client Twitter da riga di comando per Linux 5 Slimline e client Twitter a linea di comando per Ubuntu 5 Slimline e client Twitter a riga di comando per Ubuntu Per un po ', la comunità Linux è stata disperatamente pianto per un buon client Twitter. Abbiamo deciso di esaminare l'attuale panorama del client Twitter di Linux, alla ricerca di app leggere e utilizzabili, con risultati interessanti. Leggi di più . Anche se probabilmente non cambierai in cURL come strumento di socializzazione online, è bene sapere che puoi postare su Facebook con esso, come descritto qui Come pubblicare su Facebook dalla riga di comando Ora che FBCMD è morto Come pubblicare su Facebook Da Riga di comando ora che FBCMD è morto Immagina di aprire una finestra di comando sul tuo PC, di digitare un comando a linea singola e di postare istantaneamente su Facebook senza nemmeno aprire un browser o un'altra app. Leggi di più . Noterai che, tecnicamente, cURL non lo fa da solo; una combinazione di strumenti fa il lavoro.

curl-facebook11

Per quanto riguarda Twitter, era possibile gestirlo direttamente dal terminale con cURL. Poi Twitter ha cambiato la sua API, e ora c'è un client cURL speciale per Twitter chiamato Twurl. Non è la cosa più facile da usare, soprattutto per i principianti, e richiede l'autenticazione con la piattaforma pubblicitaria Twitter. Questo ha senso se sei uno sviluppatore o un utente avanzato, ma non così tanto se vuoi semplicemente twittare dalla riga di comando. Ancora, ci sono modi per divertirsi con Twitter. Puoi usare cURL per controllare il conteggio dei follower di un utente:

curl -s https://twitter.com/username | grep -o '[0-9, ]* Followers';

arricciatura-comandi-twitter-seguono

8. Trova il tuo indirizzo IP esterno

Trovare il tuo indirizzo IP locale è abbastanza facile - basta eseguire ifconfig o consultare l'applet di gestione della rete. Per l'IP esterno, la maggior parte delle persone utilizza siti Web specializzati per ottenere queste informazioni. Tuttavia, alcune cose sono più semplici da eseguire dal terminale 5 Le cose più facili da fare nella riga di comando di Linux 5 Le cose più facili da fare nella riga di comando di Linux Ulteriori informazioni, e questo potrebbe essere uno di questi. È anche possibile creare un alias Come definire gli alias della riga di comando su qualsiasi sistema operativo Come definire gli alias della riga di comando su qualsiasi sistema operativo Di cui abbiamo parlato, e consigliato di fare i conti con il terminale della riga di comando del computer numerose volte in passato. Tina ha scritto un buon primer per gli utenti Windows con A Beginner's Guide To The Command di Windows ... Leggi altro per il comando cURL. Esistono diversi servizi online che collaborano con cURL:

curl ipinfo.io
curl -s https://4.ifcfg.me
curl -s http://whatismyip.akamai.com
curl ifconfig.me
curl -s icanhazip.com

Alcuni possono dirti di più su qualsiasi indirizzo IP esterno:

curl ipinfo.io/207.46.13.41
curl ifconfig.me/207.46.13.41

arricciatura-comandi-ipaddress

Tutto quello che devi fare è scegliere un servizio. Se sei indeciso, includili tutti nel tuo alias, come soluzioni di backup.

9. Incollare testo e condividere immagini

Rompere il tuo flusso di lavoro non è mai positivo per produttività e concentrazione 5 Strumenti che ti aiutano a focalizzare e ottenere un lavoro reale Fatto 5 Strumenti che ti aiutano a focalizzare e ottenere un vero lavoro La battaglia per una migliore produttività e distrazione non può essere vinta solo con l'autocontrollo. App e strumenti stanno cavalcando in soccorso. Leggi di più . Se fai la maggior parte del tuo lavoro nel terminale, passare a un browser solo per condividere alcuni file può essere poco pratico, se non fastidioso. Fortunatamente, alcuni servizi pastebin e di condivisione file sono nati per funzionare con cURL, quindi puoi usarli direttamente dal terminale, senza un account utente.

Clbin e Sprunge.us hanno una sintassi simile. Con Clbin, conduci un file locale o l'output di un comando e restituisce un collegamento al testo caricato:

cat textfile.txt | curl -F 'clbin=<-' https://clbin.com

Supporta anche upload di immagini (PNG, JPG e GIF):

curl -F '[email protected]"' https://clbin.com

Se invece vuoi usare Sprunge.us, digita:

cat textfile.txt | curl -F 'sprunge=<-' http://sprunge.us

Sprunge.us non supporta i caricamenti di immagini per ora.

Ix.io si basa sullo stesso principio dei precedenti due servizi, con alcune funzionalità extra. Per caricare un file, digita:

cat file.txt | curl -F 'f:1=<-' ix.io

o

curl -F 'f:[email protected]' ix.io

Quando si ottiene un collegamento al testo caricato, è possibile modificarne l'URL per mostrare l'evidenziazione della sintassi (con ix.io/yourpaste+, ix.io/yourpaste/ o ix.io/yourpaste/language per uno specifico linguaggio di programmazione o di scripting) . È anche possibile limitare quante volte un link può essere visualizzato modificando il numero dopo il valore 'read:1' :

cat file.txt | curl -F 'f:1=<-' -F 'read:1=2' ix.io

Ix.io è destinato principalmente ai file di testo come il codice sorgente oi log di sistema. Se si desidera caricare una varietà di formati di file, utilizzare Transfer.sh. Supporta immagini, crittografia dei file e mantiene i tuoi file online per due settimane. È possibile caricare fino a 5 GB di dati su Transfer.sh. Ecco come:

curl --upload-file bunnies.jpg" https://transfer.sh/bunnies.jpg"

Sei libero di definire il nome del file caricato. Per caricare più file, elencali uno dopo l'altro con l'opzione -F:

curl -i -F filedata=@/tmp/hello.txt -F filedata=@/tmp/hello2.txt https://transfer.sh/

10. Controllare la posta non letta su GMail

C'è un enorme potenziale da sbloccare in cURL se sei disposto ad approfondire i dettagli dei protocolli relativi alle email (SMTP, POP, IMAP). Per un rapido controllo via email, questo comando lo farà. Analizza il tuo feed GMail e formatta l'output (oggetto e mittente dell'e-mail) con i comandi tr, awk, sed e / o grep . Nota che questa soluzione è estremamente pericolosa perché espone le tue credenziali di accesso a chiunque abbia accesso al tuo terminale. La prima versione mostra il nome del mittente, mentre la seconda stampa solo gli oggetti e-mail non letti:

curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/\(.*\)\(.*\).*/\2 - \1/p"


curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | grep -oPm1 "(?<=)[^<]+" | sed '1d'

arricciatura-comandi-check-gmail

Che altro può fare cURL?

cURL è usato raramente come comando autonomo. La maggior parte delle persone lo usa come parte di uno script o di un'applicazione. Tuttavia, è possibile creare pratici one-liner con cURL, come abbiamo dimostrato qui. Molti di questi esempi sono stati adattati da CommandLineFu CommandLineFu: Incredibile collezione di gemme a linea di comando [Linux e Mac] CommandLineFu: Incredibile collezione di gemme a linea di comando [Linux e Mac] Sfoglia un assortimento di comandi straordinariamente utili. Che tu sia un veterano amministratore di sistema o un neofita della linea di comando che cerca di scoprire di più, CommandLineFu è una raccolta di comandi basata sul voto che serve migliaia di idee che tu ... Read More, una fantastica fonte di hack da linea di comando intelligenti e non dovresti considerarli come incastonati nella pietra.

Con una sufficiente conoscenza ed esperienza, possiamo modificare ogni comando, formattarlo diversamente o completamente sostituirlo con una soluzione migliore. Puoi migliorare i nostri comandi CURL suggeriti? Conoscete altri usi interessanti per cURL? Condividi i tuoi suggerimenti nei commenti.

Crediti immagine: Introduzione alla linea di comando di Osama Khalid tramite Flickr.

In this article