[RIPRODUZIONE DI BRANI MUSICALI] 

DOUG LLOYD: OK. Quindi parliamo di come utilizzare la riga di comando di Linux. Ora, il CS50 IDE, o Infatti, anche un dispositivo CS50, se si ha familiarità con questo, o si sta prendendo una versione precedente di CS50, è una macchina basata su cloud che gestisce Ubuntu, che è uno dei tanti sapori del sistema operativo Linux. Sistema operativo Linux è favorita dai programmatori, perché è solo più fresco, giusto? 

Molte distribuzioni Linux moderne hanno interfacce grafiche, che noi chiamiamo anche GUI, G-U-I, a permettere una facile navigazione basato sul mouse, che probabilmente stai familiarità con, se sei un utente Windows o Mac, muoversi il mouse, doppio clic sulle icone, e così via. Ancora, però, come programmatore, e anche se l'IDE contiene la capacità di fare qualche utente grafica roba, clic, e trascinamento, e tutto ciò che, ci si può comunque utilizzare il tuo finestra di terminale piuttosto frequente. E si può fare molte delle stesse attività che è possibile fare con un mouse con i comandi della tastiera. E stiamo andando a parlare un po ' su quello che alcuni di questi comandi sono in questo momento. 

Ora, questi comandi possono essere utilizzati su qualsiasi operativo basato su Unix sistema, che comprende Linux, ma comprende anche Mac OS. Se si apre terminale sul vostro Mac, è possibile utilizzare questi comandi esatti. Windows ha anche Comando Prompt, ma alcuni dei comandi sono leggermente diversi, così in realtà non funziona, perché Windows non è un sistema basato su Unix. 

Quindi, diamo uno sguardo ad alcuni di questi comandi di Linux. Il primo che ti probabilmente usare un bel po 'è ls. Questa è una l minuscola, seguita da una minuscolo s, che è l'abbreviazione di lista. E che il comando list fa è che ti dà una lettura di tutti i file e cartelle nella directory corrente. Così si può vedere tutto il possibile arrivare da dove siete attualmente. 

Così ho aperto qui l'IDE CS50. E ho intenzione di zoom-in in un secondo per dare un'occhiata più da vicino, ma ecco la quadro generale di ciò che l'IDE assomiglia. Sulla sinistra, si può vedere che abbiamo un albero di file, che probabilmente stai familiarità con, doppio clic, e file e cartelle, e tutta quella roba. Ecco, questo è ancora lì nell'apparecchio CS50. Al centro in alto è dove sei intenzione di scrivere il codice, una volta si fa clic su un file. E in fondo, abbiamo avere una finestra di terminale, che è dove siamo in grado di eseguire questi comandi del terminale. 

Ho intenzione di zoom-in e la testa qui, per dimostrare che, in realtà, non posso clicca su questi file e cartelle. Quindi, chiaramente, dove attualmente sono, io ho due cartelle, denominate pset0 e pset1, e tre file, uno chiamato ciao, uno chiamato hello.c, e uno chiamato ciao.txt. 

Quindi cerchiamo di spostare verso il basso al terminale finestra e ottenere uno sguardo più da vicino. Quindi abbiamo appena parlato, ancora una volta, sulla fatto di avere tre file e due cartelle nella directory corrente. Se digito ls, che ancora una volta è il comando per elencare il contenuto della corrente directory, e poi mi ha colpito Invio, Guardo ciò che vedo, ciao, hello.c, ciao.txt, pset0 e pset1. 

pset0 e pset1 sono di colore blu, per indicare a voi che quelle sono le directory che abbiamo potuto navigare in. E impareremo un po ' po 'su come navigare in directory in un minuto. E ogni altra cosa è di colore nero, se si tratta di un file di testo o un codice sorgente File e verde, se si tratta di un file eseguibile. Quindi, chiaramente, questo significa che io potrebbe eseguire un programma chiamato, ciao. Questo è ciò che quella verde lì significa. Ma in fondo, digitando il comando ls ha permesso che guardi tutto ciò che esiste nella mia directory corrente, che corrisponde a quello che vediamo qui, in rappresentazione grafica della stessa. Il comando successivo Avrete probabilmente usare un po ' è CD, minuscola c, d minuscola, che è l'abbreviazione di change directory. Questo ci permette di fare quello che ero parlando di un secondo fa, che è quello di navigare tra directory negli comando linea, anziché doppio clic su cartelle. Quindi, se digitiamo cd e poi il nome di una directory, possiamo entrare in quella directory. 

Per inciso, sapere che il nome della directory corrente è sempre dot, e il nome della directory un livello superiore in cui ci troviamo ora, questo è il nome della cartella in che la nostra cartella è, puntino, dot-- o in cui la nostra cartella è, è punto, punto. E se siete curiosi di sapere sempre il nome della directory, è possibile digitare pwd, che sta per directory di lavoro. Daremo uno sguardo a tutti questi ora, per tornare all'IDE CS50. Così sono tornato nel mio lavoro ora. E io lo zoom-in di nuovo sul terminale, in modo che possiamo dare un'occhiata a muoversi all'interno dell'IDE. Quindi ho intenzione di elencare la contenuti della mia directory ancora una volta, solo per rifondare noi dove siamo. Quindi, se digito ls, che è per la lista di nuovo, Vedo che posso arrivare a pset0 e pset1. Queste sono le directory Posso raggiungere da qui. Lo so, perché l'IDE dà me un indizio colorando loro blu. 

Diciamo che voglio entrare nel mio elenco pset1, perché sto lavorando su problema set 1. Posso scrivere cd-- di nuovo, breve per cambiare directory-- spazio, pset1. E se premete Invio, notare cosa succede. Non sembra come sono successe molte cose. Ma se si guarda al prompt, ora mi dice che io sono in ~ / lavoro / pset1. Ho navigato nel pset1 cartella che era nel mio lavoro. 

E se digito ls, Vedo alcuni roba diverso qui, giusto? Questo non è lo stesso lista che ho visto prima. Ho navigato in pset1. E così ora, quando digito ls, sono ottenere il contesto di quello che posso vedere all'interno della cartella pset1. 

Ora, sto andando a digitare il controllo l, che ha appena pulisce lo schermo. E ho intenzione di elencare la contenuto della directory ancora una volta, solo così si può vedere. Volevo solo fare questo a cancellare alcune delle cose che si è visto in basso e per evitare questo di andare troppo in basso fuori portata. 

Ora, ho già detto che, se voglio per passare alla directory corrente, Posso digitare cd spazio puntino. Premere Invio. Non fa niente, giusto? Sto cambiando directory nella directory corrente. Non stai andando sempre trovare una necessità per un singolo punto, ma si vuole tanto in tanto. 

Diciamo che voglio per salire di un livello. Voglio tornare a mia directory di lavoro. Non è possibile inserire cd di lavoro, non ci sono file o directory. E la ragione di che-- se digito ls un'altra tempo-- è che non vi è alcuna directory chiamata spazio di lavoro all'interno della mia directory pset1. Ho intenzione di cancellare la mia schermo di nuovo con il controllo l. Ricordate ciò che ho detto prima, però, che ci può navigare indietro con il puntino, dot. Questo è il nome della directory principale. Quindi, se digito cd, spazio, punto, dot, e poi premere Invio, ora guardare a ciò che è accaduto. Il mio richiamo di ordine mi dice che io sono indietro nella mia directory ~ / lavoro. Mi sono trasferito di un livello, grazie a dot, dot. 

Ora, diciamo che sto usando un sistema operativo è basato su Linux, ma non lo fa necessariamente dimmi dove mi trovo. Questo accade a dirci che Sono in ~ / lavoro in questo momento, a destra al prompt. Ma potrei essere completamente perso in un pasticcio di cartelle, e non ho idea di dove sono e nessuna idea di dove voglio tornare a. Ci sono due cose che posso fare. 

Prima di tutto, io riesco a capire dove sono io, digitando pwd. Questa è la mia directory di lavoro. E se premete Invio, esso mi dice esattamente dove sono. Ora / home / ubuntu è la lungo modo di dire, tilde, che è la vostra directory home. Ma mi dice che io sono in home / ubuntu / area di lavoro, o ~ / area di lavoro. 

Io vado a navigare mia directory pset1 di nuovo, e ho intenzione di elencare il contenuto. E vedo che ho un altro directory là, chiamato comparse. Quindi ho intenzione di cd in comparse, e poi ho intenzione di cancellare il mio schermo. 

Così ora, sono abbastanza lontano, giusto? Che cosa devo fare per tornare di area di lavoro subito? Ci sono un paio di cose che potrei fare. Potrei scrivere cd, punto, punto, tagliare, puntino, puntino, per salire di un livello e poi un altro livello. Ma questo è un po 'fastidioso. 

Quindi, se mai voglia di tornare a solo la mia home directory, tilde, Posso digitare cd con niente dopo di esso. Cd, Invio. E ora, io sono in tilde. E se voglio arrivare a lavoro, Posso solo tipo di CD di lavoro. Ed è così che si lavora cambiando le directory all'interno dell'IDE CS50 o Linux sistema operativo dalla riga di comando. Tutto ok. Il prossimo che potrebbe tornare utile è mkdir, che è l'abbreviazione di creare una directory, se ho bisogno di creare una nuova cartella. Se si ha familiarità con il sistema operativo GUI, si potrebbe fare clic destro. E poi, quando il menu contestuale si apre, scegliete Nuova cartella. Questo è probabilmente il modo che hai fatto prima. Ma possiamo anche creare directory nella riga di comando. Così siamo tornati nell'IDE. Io zoom-in sul terminale e elencare il contenuto della mia directory di nuovo, giusto per dare noi un quadro di riferimento. Diciamo che, ora, ho finito di lavorare sul problema impostato 0 e problema set 1. Quindi voglio creare una nuova directory a lavorare sul problema di set 2. Come lo faccio? 

Bene, ancora una volta, ho potuto fare clic destro nel lato sinistro ci e scegli Nuova cartella e creare una directory PSet2. Che avrebbe funzionato anche. Ma poi faccio anche al linea di comando abbastanza rapidamente, digitando mkdir, io space-- digitato n, ma-- spazio PSet2. Se mi ha colpito Enter e poi vi elenco il contenuti della mia directory di nuovo, Vedo che, guarda, ora Ho una cartella PSet2. E posso navigare in che l'uso di cd e fare tutto il lavoro che ho bisogno di fare per PSet2. Per inciso, mi limiterò a pop sopra qui molto velocemente per la struttura dei file. E si può vedere che, anche, in File Explorer grafica, possiamo vedere che la directory PSet2 è stato creato anche lì. E posso passare a esso, utilizzando la GUI pure. La prossima volta e che è probabilmente andando a venire in aiuto è cp, che è breve per la copia. Copia, a differenza di tutti gli altri i comandi che abbiamo visto prima, prende due argomenti, una fonte, la il nome del file che si desidera copiare, e una destinazione, dove si vuole copiare il file. E 'abbastanza facile da copiare un file, quindi cerchiamo di farlo. 

Così siamo tornati nell'IDE. Io vado a elencare il contenuto della mia directory corrente con ls. Ora, diciamo che voglio per fare una copia di ciao.txt. Anche in questo caso, dall'albero file sul a sinistra, l'interfaccia grafica, Potrei fare clic destro sul ciao.txt, fare una copia, incolla la copia. Ma posso farlo abbastanza rapidamente nella riga di comando troppo. 

Diciamo che voglio copiare ciao.txt a hi.txt. Posso cp, spazio, ciao.txt. Questo è il mio file di origine, ecco perché Ho intenzione di scegliere prima quella. E poi ho bisogno di chiamare il file di destinazione, hi.txt. Mi ha colpito Invio. E se vi elenco il contenuto del mio directory di nuovo, c'è hi.txt. Ho fatto una copia di esso. E infatti, se sono andato in hi.txt, ho potuto vedere che sarebbe un esatto duplicare di tutto ciò che esisteva nel mio file ciao.txt. 

Ecco come si copia un file. Ma cosa succede se si vuole copiare un'intera directory? Così, per un secondo, diamo uno sguardo a ciò che è nella mia directory pset0. Se io cd pset0 e elencare il contenuto, Ho una directory chiamata, campione, e un file di lavoro, scratch.sb2. Così che è bene sapere. Quindi cerchiamo di cancellare lo schermo, e ho intenzione di tornare indietro al mio directory dell'area di lavoro per un secondo. 

Diciamo che, ora, voglio fare una copia della mia directory pset0. Non posso dire cp pset0 pset3, per esempio. Si ottiene questo messaggio strano, omettendo directory pset0. Perché si ottiene quel messaggio? Beh, si scopre che, quando si dispone di una directory che ha altre cose all'interno di esso, il comando cp non lo fa davvero necessariamente sapere che cosa fare con esso. 

Dobbiamo esplicitamente dire a Linux, il terminale, Voglio di copiare il directory pset0 e copia ogni cartella che esiste dentro di esso e ogni file esiste all'interno di esso. In altre parole, ho bisogno che ricorsivamente tuffarsi giù in pset0 e fare una copia di tutto lì dentro. 

Se voglio farlo, che cosa posso fare è cp-r, per ricorsivo, pset3 pset0. Premere Invio. Ora, se vi elenco il contenuti della mia directory, Vedo che c'è il pset3 directory che posso lavorare con. E se I cd in pset3 adesso e poi elencare il contenuto, guardare, c'è il campione e scratch.sb2 di nuovo. Ecco, questo è piuttosto fresco. Ecco come è possibile copiare un intero directory, e non solo un singolo file. Quindi, se si desidera copiare un directory, basta ricordare per utilizzare il flag -r quando sei lavorare con il comando cp. Tutto ok. Così ho copiato un file, ma L'ho fatto per errore. E ora, voglio sbarazzarsi di esso. Come lo faccio? Anche in questo caso, se si ha familiarità con un'interfaccia grafica, è possibile fare clic destro e basta scegliere Elimina. E sarà inviarlo al cestino o il Cestino. Ma nella riga di comando, ci può solo digitare rm, per rimuovere, e quindi il nome del file che vogliamo eliminare. 

Ora, rm è molto attento. Si fa un sacco di duplice controllo, fare in modo che in realtà vuole eliminare il file. Non vuole fare errori, perché non c'è Cestino qui. Una volta che si elimina un file, non c'è più. E non c'è davvero nessun modo per recuperarlo. Quindi abbiamo bisogno di essere abbastanza attento, e così rm sta per essere molto attenti per noi. 

Così torniamo all'IDE e di sbarazzarsi di quel file hi.txt che ho creato un minuto fa con copia. Quindi siamo nell'IDE. E io elencare il contenuto della mia directory ancora una volta, solo per darci un po 'di contesto. Voglio dire, si può vedere che c'è hi.txt, che ho creato un po 'di tempo fa. Ora, voglio sbarazzarsi di esso. Come lo faccio? 

Anche in questo caso, solo rm. Così posso digitare rm hi.txt e premere Invio. E c'è rm benessere molto attenti per noi e assicurandosi che in realtà voler eliminare questo file. Sei sicuro di voler rimuovere regolare hi.txt file vuoto? Questo è solo come un operativo sistema, come Windows o Mac, che si può essere familiarità con popping up quella scatola dice che sei veramente sicuri di voler fare questo. 

Sono abbastanza sicuro che voglio questo, così ho intenzione di scrivere, yes-- Oppure potrei anche solo digitare y-- e premere Invio. E se vi elenco il contenuto del mio directory nuovamente, hi.txt è andato. Non male, vero? Facciamo premere Control L, appena per sbarazzarsi di tutta questa roba e farci tornare a la parte superiore dello schermo. 

Ora, vi è un modo per cortocircuito rm, così che non ci chiede questa domanda. Sappiamo davvero vogliamo per sbarazzarsi di quel file, e non abbiamo nemmeno vogliamo da porsi la domanda. Come lo facciamo? Beh, siamo in grado di specificare un Bandiera in più, proprio come noi ha fatto con cp dove siamo potrebbe aggiungere il flag -r, per copiare ricorsivamente in una directory. C'è un'altra bandiera per rm, che è -f, che è quello di forzare rm per fare esattamente quello che stiamo dicendo di fare. 

Quindi diciamo che, ora, voglio per sbarazzarsi del mio file ciao.txt. Non voglio che si sia. Cosa posso fare? Beh, posso rm -f ciao.txt. Cosa pensi sia succederà qui? È andato. Non ho nemmeno a me fare la domanda. E infatti, se vi elenco i contenuti di mia directory di nuovo, non c'è più. Non c'è nessun annullamento qui. ciao.txt è andato, e io non era anche chiesto se volevo cancellarlo. Che cosa devo fare per liberarsi di un'intera directory? Il modo di fare che è molto simile a copiare. Se si desidera eliminare un directory, non è necessario solo di voler cancellare la directory, che si desidera di eliminare tutto all'interno di esso. E così si utilizza -r, a ricorsivamente cancellare una directory. 

Quindi cerchiamo di rm -r PSet2. Io non sono in realtà lavorando su PSet2, così posso liberarmi di quella directory. Mi ha colpito Invio. Voglio rimuovere la directory, PSet2? Sì. E se vi elenco i contenuti della il mio elenco di nuovo, non c'è più. Tutto ok? 

Ancora una variazione su questo tema. Così io cancellare di nuovo lo schermo, mettere tutto in alto. Hit ls. Ora, voglio liberarmi di mia directory pset3, e so davvero che voglio sbarazzarsi della mia directory pset3. Posso ricorsivamente e forza rimuovere il mio elenco pset3. 

Ora, si sta andando ad essere veramente Fare attenzione quando si sta utilizzando rm -rf. Come si programma più, sarà qualcosa basta fare molto velocemente. E infatti, lo faccio tutto il tempo. Ma può portare a qualche conseguenze disastrose, se accidentalmente eliminare la cosa sbagliata. Quindi io voglio che tu sia consapevole del fatto che questa è un'opzione disponibile per voi, ma usarlo con parsimonia, e utilizzarlo con cautela. 

So per certo che non sto lavorando il mio problema set 3 più, quindi sono intenzione di sbarazzarsi di tutti i file. E so che non voglio essere chiesto ogni volta se voglio cancellare un file, in modo ho intenzione di rm -rf pset3. Non ho nemmeno chiedermi se io voleva sbarazzarsi di esso. Mi ha colpito ls. pset3 è andato. Ecco, questo è tutte le variazioni che si può utilizzare per sbarazzarsi di file con rm. 

Il comando di riga di comando che è ultima andando a molto utile per voi è mv, che è l'abbreviazione di movimento. Move è sostanzialmente equivalente a rinominare. Si sposta un file da una posizione a un'altra, sorgente alla destinazione. Vediamo dove utilizzando una potenza mossa essere utile alla finestra del terminale. 

Quindi sono nel mio pset1 directory, e ho notato qualcosa è andato un po 'sbagliato. Stavo lavorando al mio problema avidi, ma accidentalmente ho chiamato GReddy. Così, quando provo ed eseguirlo tramite check50, in realtà non funziona. Ho un paio di opzioni. Potremmo fare quello che abbiamo fatto prima, che è quello di fare una copia del file. Potrei copiare greddy.c a greedy.c, giusto? Premere Invio. Vedo che entrambi i file ci sono. E poi potrei rm, di rimuovere, greddy.c. Che si sbarazza di esso. In modo che avrebbe funzionato, dopo che confermo che voglio sbarazzarsi di esso. E io ho effettivamente greddy.c rinominato greedy.c. Ho copiato, e poi rimosso l'originale. 

Ma questo è un processo multi-step. E certamente, c'è un modo migliore. In realtà, non c'è. Quindi cerchiamo di colpire controllo L, solo per portare questo back up, ed elencare i contenuti di mia directory di nuovo. 

Quindi diciamo che, oh, ho fatto un errore. Io in realtà volevo davvero per chiamare quel file greddy.c. In un colpo solo, posso digitare spostare greedy.c a greddy.c. Premere Invio. Ed ora, non ho avuto di copiare e rimuoverlo, Sono appena stato in grado di rinominarlo. One-stop shopping. 

Ora, ci sono un sacco di altri utilità di base della riga di comando che è possibile utilizzare con la linea di comando di Linux. E parleremo molto di loro in futuro in CS50. Ma per ora, solo per i piedi bagnato con il lavoro con questo terminale ambiente, questi cinque comandi dovrebbe arrivare abbastanza lontano in navigazione intorno e lavorare con i file nel vostro IDE o in qualunque basato su Linux il sistema operativo che si sta utilizzando. 

Se siete curiosi e volete guardare avanti un po 'a un certo i comandi della riga di comando useremo in futuro, ecco una lista di una coppia di quelli più comuni. Sono Doug Lloyd. Questo è CS50.