A maggio, Nettuts + pubblicò un grande articolo intitolato "7 semplici e utili suggerimenti da linea di comando"; questo è stato un ottimo articolo per iniziare a usare la riga di comando. Ma c'è molto di più che puoi imparare a usare una shell, e ti porterò al livello successivo in questo tutorial!
Se stai usando Mac OS X o il tuo gusto preferito Linux, sei pronto. Basta accendere il terminale e andare avanti. Se sei su Windows, beh, il set di comandi predefinito non è proprio quello che è una shell bash. Se vuoi un po 'di energia, controlla Microsoft PowerShell; tuttavia, i comandi seguenti non funzioneranno necessariamente lì. tu può ottenere una shell bash su Windows, però:
Va bene, saltiamo dentro!
Come sviluppatore, una delle attività più comuni è la creazione di file. Se lavori dalla riga di comando, la maggior parte delle volte passerai semplicemente il nome del file che vuoi creare al tuo editor:
$ mate index.html $ mvim default.css
Tuttavia, occasionalmente ti basta creare uno o più file, senza modificarlo. In questo caso, utilizzerai il toccare
comando:
$ touch index.html $ tocca one.txt due.txt tre.txt
È così facile In realtà, il toccare
comando è per aggiornare la data di accesso / modifica di un file; è solo un bel effetto collaterale che se il file non esiste, lo creerà.
Beh, dato che si tratta di file, c'è un bel cambiamento che vorrete vedere il contenuto di un file dal terminale prima o poi. Ci sono alcuni comandi che faranno questo per te. Il primo è gatto
; gatto
è l'abbreviazione di "concatenare" e questo comando fa più dell'output del contenuto del file; tuttavia, questo è ciò che vedremo qui. È semplice come passare il comando a un file:
$ cat shoppingList.txt
Tuttavia, se il file è di grandi dimensioni, i contenuti scorreranno tutti oltre e rimarranno in fondo. Certo, puoi scorrere di nuovo, ma è zoppo. Che ne dici di usare Di meno
?
$ meno shoppingList.txt
Less è un modo molto migliore per ispezionare file di grandi dimensioni sulla riga di comando. Otterrai uno schermo pieno di testo alla volta, ma non di più. Puoi spostare una linea in su o una linea in giù con il K
e j
rispettivamente e sposta una finestra in alto o in basso con B
e f
. Puoi cercare un pattern digitando /modello
. Quando hai finito, colpisci q
per uscire dal Di meno
spettatore.
Dal momento che probabilmente lavori con la tua giusta quota di librerie di framework, ti troverai spesso a scaricare questi file mentre lavori. Oh, lo so: puoi semplicemente scaricarlo dal web, navigare nella cartella, decomprimerlo e copiare i pezzi nel tuo progetto, ma non sembra tanto lavoro? È molto più semplice usare la riga di comando. Per scaricare file, puoi usare arricciare
; procedi come segue:
$ curl -O http://www.domain.com/path/to/download.tar.gz
Il -O
la bandiera dice arricciare
per scrivere il contenuto scaricato in un file con lo stesso nome del file remoto. Se non si fornisce questo parametro, arricciatura probabilmente mostrerà il file nella riga di comando (assumendo che sia testo).
Curl è uno strumento abbastanza esteso, quindi controlla la pagina man (vedi sotto) se pensi di usarla molto. Ecco un suggerimento che utilizza l'espansione della parentesi della shell:
$ curl -0 http://www.domain.com/one,two,three.txt
Sì, è così facile scaricare più file da un posto alla volta. (Nota che questa non è una funzionalità di arricciatura, ma è parte della shell, quindi puoi usare questa notazione in altri comandi, controlla questo link per saperne di più)
Quindi, ora stai scuotendo i download da riga di comando; tuttavia, ci sono ottime possibilità che la maggior parte delle cose che scarichi vengano archiviate e compresse con gzip, con un'estensione di .tar.gz (o, in alternativa, .tgz). Quindi, cosa fai con quello? Facciamo un passo indietro per un secondo e capiamo cosa significa esattamente "archiviato e gzip". Probabilmente hai familiarità con gli archivi. Hai visto file .zip; sono un'incarnazione di archivi. In sostanza, un archivio è solo un singolo file che racchiude più di un file. Spesso gli archivi comprimono i file, in modo che il file finale sia più piccolo di quelli originali insieme. Tuttavia, puoi ancora diventare un po 'più piccolo comprimendo l'archivio ... ed è qui che entra in gioco gzipping. Gzipping è una forma di compressione.
Quindi, torniamo a quel download. È stato incapsulato (archiviato) e gzip. Potresti decomprimerlo e poi cancellarlo, ma qui stiamo facendo un numero minore di sequenze di tasti, giusto? Ecco cosa faresti:
$ tar xvzf download.tar.gz
Aspetta cosa? Ecco la ripartizione: catrame
è il comando che stiamo eseguendo; xvzf
sono le bandiere che stiamo usando (di solito, avresti un trattino in primo piano, ma questo è opzionale qui). Le bandiere sono le seguenti:
X
facciamo catrame
sappiamo che siamo eXlavorazione, non archiviazione.v
facciamo catrame
sappiamo che vogliamo che sia verbose (dacci un output sull'azione che sta eseguendo).z
facciamo catrame
sapere che il file con cui stiamo lavorando è stato gzip (quindi decomprime il file).f
facciamo catrame
sappiamo che gli passeremo il nome del file di archivio.Se si desidera creare uno di questi archivi compressi con gzip, è semplice come sostituire il X
bandiera con a c
(a creare un archivio). Il v
e z
i flag sono opzioni: vuoi l'output? che ne dici di gzipping? Certo, vattene f
; dovrai dare il nome del file per il nuovo archivio (altrimenti verrà inviato alla riga di comando). Dopodiché, passerai il comando a tutti i file che vuoi mettere nell'archivio:
$ tar cvzf archive.tar.gz index.html css js auth.php $ tar cvzf archive.tar.gx * .txt
Solo per completezza, menzionerò che puoi gzipare archivi (o altri file) singolarmente; quando lo fai, gzip sostituisce il file originale con la versione gzip. Per decomprimere, aggiungi il -d
bandiera (pensa decompress).
$ gzip qualcosa.txt $ gzip -d qualcosa.txt.gz
Un'altra cosa che farai spesso come sviluppatore web è cambiare i permessi dei file. Esistono tre autorizzazioni che è possibile impostare e sono disponibili tre classi che possono ricevere tali autorizzazioni. Le autorizzazioni sono leggere, Scrivi, e eseguire; le classi sono utente, gruppo, e altri. L'utente di solito è il proprietario del file, l'utente che ha creato il file. È possibile avere gruppi di utenti e la classe del gruppo determina le autorizzazioni per gli utenti del gruppo che possono accedere al file. Prevedibilmente, la classe degli altri include tutti gli altri. Solo l'utente (proprietario del file) e il super utente possono modificare i permessi dei file. Oh, e tutto ciò che hai appena letto vale anche per le directory.
Quindi, come possiamo impostare queste autorizzazioni? Il comando qui chmod
(change mode). Ci sono due modi per farlo. Primo, puoi farlo con notazione ottale; questo è un po 'criptico, ma una volta capito, è più veloce. Fondamentalmente, execute ottiene 1 'point', write ottiene 2 e read ottiene 4. Puoi aggiungerli per dare più permessi: read + write = 6, read + write + execute = 7, ecc. Quindi per ogni classe, tu otterrà questo numero e li allineerà per ottenere un numero di tre cifre per Utente, Gruppo e Altro. Ad esempio, 764 fornirà all'utente tutte le autorizzazioni, darà capacità di lettura e scrittura di gruppo e darà agli altri il permesso di leggere. Per una spiegazione migliore, controlla l'articolo di Wikipedia.
Se hai difficoltà a ricordare la notazione ottale, potresti trovare più semplice la notazione simbolica (anche se richiede qualche altra sequenza di tasti). In questo caso, userete l'iniziale 'u', 'g' e 'o' per utente, gruppo e altri rispettivamente (e 'a' per tutte le classi). Quindi, userete "r", "w" e "x" per leggere, scrivere ed eseguire. Infine, userete gli operatori '+', '-' e '=' per aggiungere, sottrarre e impostare in modo assoluto i permessi. Ecco come utilizzerai questi simboli: class, operator, permessi. Per esempio, u + rwx
aggiunge tutte le autorizzazioni alla classe utente; go-x
rimuove il permesso eseguibile dal gruppo e da altri; a = rw
imposta tutte le classi in sola lettura e scrittura.
Per utilizzare tutta questa teoria sulla riga di comando, inizierai con il comando (chmod
), seguito dai permessi, seguito dai file o dalle directory:
$ chmod 760 someScript.sh $ chmod u = rwx g + r o-x dataFolder
Se hai usato il controllo di versione come Git o Subversion, sai quanto è utile un tale sistema quando vuoi condividere un progetto con altri sviluppatori, o semplicemente tenere traccia delle versioni. Ma cosa succede se si desidera inviare ad un amico alcuni aggiornamenti su un singolo file? O se un altro sviluppatore ti ha inviato per email la nuova versione di un file che hai modificato da quando hai ricevuto l'ultima copia? A volte il controllo completo della versione è eccessivo, ma hai ancora bisogno di qualcosa di piccolo. Bene, la linea di comando ti ha coperto. Ti consigliamo di utilizzare il diff
comando. Prima di apportare modifiche a un file, copiare il file in modo da avere l'originale. Dopo l'aggiornamento, esegui diff
; se non si invia l'output a un file, verrà semplicemente inviato alla riga di comando, quindi includi a >
con il nome del tuo file di patch:
$ cp originalFile newFile $ vim newFile #edit newFile $ diff originalFile newFile 1c1 < This is a sentence. --- > Questa è una frase breve. $ diff originalFile newFile> changes.patch
Come puoi vedere, il diff
è solo un semplice file di testo che usa una sintassi il diff
e toppa
il comando capirà. toppa
? Bene, questo è il comando che va di pari passo con diff
. Se hai ricevuto un file patch, aggiornerai l'originale come segue:
patch originalFile2 changes.patch
E ora sei tutto aggiornato.
sudo
non è veramente un comando come gli altri, ma è uno di quelli di cui avrai bisogno mentre ti avventuri più in profondità nel mondo della linea di comando. Ecco lo scenario: ci sono alcune cose che gli utenti normali non dovrebbero essere in grado di fare sulla riga di comando; non è difficile fare danni irrevocabili. L'unico utente che ha il diritto di fare qualsiasi cosa lui o lei vuole è il superutente, o utente root. Tuttavia, non è sicuro di essere loggato come superutente, a causa di tutto quel potere. Invece, puoi usare il sudo
(Super user farecomando per fornire i permessi di root per un singolo comando. Ti verrà chiesta la password dell'account utente e, quando viene fornito, il sistema eseguirà il comando.
Ad esempio, l'installazione di una gemma di rubino richiede le autorizzazioni di super utente:
$ gem installa heroku ERRORE: Durante l'esecuzione di gem ... (Errno :: EACCES) Autorizzazione negata - /Users/andrew/.gem/ruby/1.9.1/cache/heroku-1.9.13.gem $ sudo gem installa heroku Password: riuscito installato heroku-1.9.13
La maggior parte dei comandi che userai in una shell bash sono abbastanza flessibili e hanno molti talenti nascosti. Se si sospetta che un comando possa fare ciò che si desidera, o semplicemente si desidera vedere alcune istruzioni generali sull'uso di un comando, è ora di premere i manuali o le pagine man, come vengono chiamate. Basta digitare uomo
seguito dal comando di cui sei curioso.
$ man ln
Noterai che le pagine man sono aperte Di meno
.
Quando hai finito per la giornata, puoi persino spegnere il computer dalla riga di comando. Il comando sotto i riflettori è spegnimento
, e dovrai usare sudo
per eseguirlo. Dovrai dare al comando una bandiera o due; i più comuni sono -h
per fermare il sistema (spegnerlo), -r
riavviare, e -S
metterlo a dormire Successivamente, passerai il tempo che dovrebbe accadere, sia come adesso
, +numberOfminutes
, o YYMMDDHHMM
. Infine, puoi trasmettere un messaggio agli utenti quando l'atto sta per essere fatto. Se volessi far dormire il mio computer in mezz'ora, eseguirò questo:
$ sudo shutdown -s +30
Dal momento che la riga di comando si basa sull'efficienza, dovrebbe essere facile ripetere i comandi. Ci sono alcuni modi per farlo. Innanzitutto, puoi usare il storia
comando per ottenere un elenco numerato di molti dei tuoi comandi recenti. Quindi, per eseguirne uno, digita un punto esclamativo e il numero della cronologia.
$ cronologia ... 563 chmod 777 one.txt 564 ls -l 565 ls 566 cat one.txt ... $! 565
Certo, questo è un esempio terribile, perché sto scrivendo più caratteri per utilizzare la cronologia di quanto sarebbe necessario per ri-digitare il comando. Ma una volta che si combinano i comandi per creare stringhe lunghe, questo sarà più veloce.
È ancora più rapido accedere all'ultimo comando e all'ultimo argomento che hai usato. Per l'ultimo comando, usa !!
; il solito caso d'uso dato per questo è l'aggiunta di sudo alla parte anteriore di un comando. Per l'ultimo argomento, usa !$
; con questo, spostarsi in una nuova cartella è probabilmente l'esempio comune. In entrambi questi casi, la shell stamperà il comando completo in modo da poter vedere cosa stai effettivamente eseguendo.
$ gem install datamapper ERRORE: Durante l'esecuzione di gem ... (Errno :: EACCES) Autorizzazione negata - /Users/andrew/.gem/ruby/1.9.1/cache/datamapper-1.0.0.gem $ sudo !! sudo gem install datamapper Password: installato con successo datamapper-1.0.0 $ mkdir lib $ cd! $ cd lib
Se sei appassionato di produttività come me, l'idea di usare la riga di comando il più possibile dovrebbe entrare in risonanza con te. Quello che ti ho mostrato qui è solo un campionamento dei comandi incorporati ... quindi, ce ne sono molti di più di quelli che puoi installare tu stesso (guarda ad esempio il gestore di pacchetti homebrew, per esempio). Ma forse sei già esperto sulla linea di comando; se è così, puoi condividere un altro grande comando con il resto di noi? Colpisci i commenti!