Riepilogo esecutivo (TL; DR)
- Usa
pwdper sapere dove ti trovi (o guarda tra il :e il $nel tuo prompt).
- Utilizzare
cdper cambiare directory altrove. A differenza di Windows, cddeve sempre essere seguito da uno spazio; comandi come cd/e cd..non funzioneranno, ma cd /e cd ..funzioneranno.
Sapere dove sei
Modo 1: corri pwd.
La directory in cui ti trovi attualmente è specifica della shell (e più in generale, specifica dell'applicazione). Potrebbe essere in esecuzione una shell in cui ci si trova in una directory e un'altra shell in cui ci si trova in un'altra directory.
Per sapere in quale directory ti trovi attualmente, esegui:
pwd
Ad esempio (da una shell mi è capitato di aprire ora, sulla mia macchina):
ek@Kip:~$ pwd
/home/ek
Questo mi dice che sono nella directory /home/ek. /homeè (un po 'confusamente) la directory che contiene le home directory degli utenti umani (non è essa stessa la home directory di qualsiasi utente). L'utente umano usernameha la home directory ./home/username
L' rootutente non ha una home directory in /home. Invece, rootla home directory è /root. Questo non deve essere confuso con la directory principale , che è /.
Modo 2: esaminare il prompt.
La configurazione predefinita per il tuo prompt è che ti dice in quale directory sei attualmente. Il tuo prompt è il testo che appare per avvisarti che la shell è pronta ad accettare un comando.
Nell'esempio che ci hai mostrato nella tua domanda, il tuo prompt è:
christy@ubuntu:~$
christyè il tuo nome utente. Il @personaggio lo separa dal ubuntunome host del tuo computer. (Se stai eseguendo un CD live, lo sarà il suo nome host ubuntue alcune persone lo scelgono come nome del proprio computer durante l'installazione.)
Il :carattere lo separa dal nome della directory in cui ci si trova attualmente. In questo caso, è rappresentato da ~. ~è una scorciatoia per la tua home directory. Quando non sei nella tua home directory, dovresti vedere un nome di directory completo. Per esempio:
ek@Kip:~$ cd /var/log
ek@Kip:/var/log$
(Per finire, ciò che significa ogni parte del prompt: per i prompt che seguono questa convenzione, appare $un #carattere o un carattere. $, Come in questo caso, significa che è una normale shell utente. Un #carattere significherebbe che è una rootshell.)
Cambiare dove sei
Perché il comando "cd" non ha funzionato.
Per cambiare directory, utilizzare il cdcomando
Hai corso cd/. Questo non funziona perché non è stato effettivamente eseguito il cdcomando. In Ubuntu e altri sistemi operativi simili a Unix (in realtà, in shell in stile Unix come bash, la shell che stai usando), il nome di un comando è considerato terminare solo in uno spazio o alla fine della linea.
Quindi, diversamente dal Prompt dei comandi in Windows (dove cd\viene interpretato come cd \ed cd..è interpretato come lo stesso cd ..), in bash(la shell che stai usando in Ubuntu), cd/non è un comando valido. È necessario utilizzare cd /.
cd/significa "la voce nella directory corrente il cui nome è cde che è anche una directory". Se esiste una sottodirectory del genere, non può essere eseguita come comando, quindi in entrambi i casi otterrai un errore (anche se l' errore che otterrai sarà diverso):
ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory
Passare alla directory principale
Per andare alla tua home directory, esegui cdda solo senza alcun argomento:
cd
Alcune persone preferiscono nominare la propria directory home in modo esplicito. Puoi usare il suo nome completo o
cd ~
Ma cdda solo è sufficiente.
Spostamento di una directory
Per cambiare la directory nella directory principale della directory corrente (ovvero la directory che la contiene), utilizzare:
cd ..
..rappresenta la directory principale della directory corrente. Se ci si trova nella directory principale ( /), esiste un'eccezione: ..rappresenta solo /. Quindi l'esecuzione corre cd ..su una directory quando eseguita ovunque ma /; quando corri /, rimani dentro /.
Ogni directory contiene una ..voce. Contengono inoltre tutte una .voce che fa riferimento alla directory corrente stessa. Non è molto da eseguire cd .però. Rimani sempre dove sei.
Percorsi assoluti e relativi
Se ti trovi cdin qualcosa che non inizia con a /, allora prova ad andare a quella directory all'interno della directory corrente .
Ad esempio, se hai corso
cd var/log
Quindi proverebbe ad andare nella varsottodirectory di dove ti trovi attualmente, e nella logsottodirectory di quello. A meno che non esistano entrambi, e in quei luoghi, quel cdcomando fallirà (e rimarrai dove eri originariamente).
Se vuoi andare nella logsottodirectory della varsottodirectory della directory principale , esegui invece questo:
cd /var/log
Solo se ci si trova /è cd var/logequivalente a cd /var/log.
Un percorso che inizia con /è assoluto. Il modo in cui viene risolto non dipende da dove ti trovi attualmente.
Anche il percorso ~è assoluto, perché è (essenzialmente) una scorciatoia per $HOME. HOMEè una variabile di ambiente e l'espressione si $HOMEespande nel percorso completo e assoluto della home directory dell'utente corrente.
~la notazione può anche essere usata per rappresentare la home directory di un altro utente. Se scrivi , questo rappresenta la home directory.~usernameusername
Tornare a dove eri prima
La directory in cui ci si trova attualmente è memorizzata nella PWDvariabile d'ambiente. L' ultima directory in cui ti trovavi è memorizzata nella OLDPWDvariabile d'ambiente. Puoi visualizzare OLDPWDnello stesso modo in cui visualizzerai qualsiasi variabile d'ambiente:
echo $OLDPWD
Poiché queste informazioni sono memorizzate, cdè in grado di avere un modo speciale, rapido e semplice per tornare a dove eri prima. Come dice pst007x , per andare all'ultima directory in cui ti trovavi , esegui:
cd -
Se non ci fosse mai stata una directory precedente in quella shell , la OLDPWDvariabile d'ambiente non sarebbe stata impostata e il tentativo di eseguire cd -provocherà un errore (e rimarrai dove sei):
ek@Kip:~$ cd -
bash: cd: OLDPWD not set
Cambiare dove sei come un boss
pushde popd: lo stack di directory
Immagina una pila di nomi di directory. Per pila , intendo qualcosa in cui quando aggiungi qualcosa va in cima, e puoi rimuovere solo una cosa alla volta, e la cosa che rimuovi è sempre ciò che è attualmente in cima.
È possibile spingere qualsiasi directory dirnello stack eseguendo:
pushd dir
Se vuoi spingere la directory corrente in cima allo stack, puoi usare .(che, come spiegato sopra, rappresenta sempre la directory corrente):
pushd .
Quindi puoi occuparti della tua attività, cambiando directory quanto vuoi. Quando vuoi tornare all'ultima directory con cui hai inserito lo stack pushd, esegui:
popd
Questo va a quella directory e lo fa anche uscire dallo stack. Ora lo stack è una directory più breve. Se quella era l'unica directory nello stack, allora lo stack è ora vuoto.
È possibile avere uno stack di dimensioni superiori a 1. In altre parole, è possibile utilizzare pushdcomandi separati per inserire più directory nello stack. Ogni popdcomando successivo passerà alla (e aprirà, cioè rimuoverà dallo stack ) la directory push più recente non ancora spuntata.
Ecco un esempio:
ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$
pushde popdsono usati molto meno frequentemente di cd. Hanno anche altri usi ancora più avanzati. Esegui help pushde help popdper i dettagli.
Ulteriori informazioni e accesso alla documentazione
cde pwdhanno anche usi più avanzati. Per conoscerli, corri help cde man pwd.
helpè per i builtin della shell . manè per comandi autonomi - comandi che vengono eseguiti come processi separati ed esistono come eseguibili separati. Il typecomando rivela se un comando è una shell incorporata o meno e, in caso contrario, dove si trova il programma che esegue. Ad esempio, è possibile eseguire type help, type typeo type man.