Come posso cambiare directory nel terminale e sapere in quale directory mi trovo?


15

Sto seguendo le indicazioni della guida della community di Ubuntu ; tuttavia, sono ancora confuso su alcune cose. L'ho cercato e ho trovato questo post: usare il terminale per cambiare directory , ma è sopra di me e non sono ancora sicuro di come procedere. Sono nuovo e ho bisogno di un po 'di direzione in più, quindi resta con me! ;-) Quanto segue è lo script dal mio terminale:

christy@ubuntu:~$ ls
Desktop    examples.desktop     install-tl-unx.tar.gz  Pictures  Templates
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
christy@ubuntu:~$ cd/
bash: cd/: No such file or directory

Come faccio a sapere cosa c'è in quale directory e come posso navigare nella directory. So che devo tralasciare qualcosa di semplice.


4
Hai sempre bisogno di uno spazio dopo il comando come "cd". Il comando funzionerebbe se si immette "cd /" e si sposta nella directory principale.
Marty Fried l'

Fantastico, Marty! La tua assistenza è molto apprezzata. ;-)
user74713

Risposte:


19

Nella tua sessione lsvisualizza il contenuto della directory corrente (ma non i file nascosti che iniziano con un punto nel nome file). Si accede a un'altra directory digitando cd dirname. Qui devi sostituire "dirname" con il nome di una directory in cui vuoi cambiare. Normalmente inizi con la tua home directory come directory di lavoro corrente. Nel tuo caso è molto probabile /home/christy. Se lsti mostra una directory chiamata "Template" puoi cambiare in "Template" (= rendilo la tua attuale directory di lavoro) digitando (attenzione allo spazio) il comando:

cd Templates

cambierai la tua attuale directory di lavoro in "Modelli" o stamperai "Nessun tale file o directory", se una directory con quel nome non esiste nella directory corrente. La digitazione pwdti darà sempre la patch completa per la tua attuale directory di lavoro, inclusi i genitori.

È possibile fornire argomenti opzionali per ciascun comando. Per cdla stringa "Modelli" era un argomento così facoltativo. Se si digita ls -aad esempio, il lscomando stamperà anche i file nascosti. O con ls Templatesesso stamperà il contenuto della directory Tempaltes anziché il contenuto della directory di lavoro corrente. Gli argomenti devono essere separati da almeno uno spazio dal nome del comando e l'uno dall'altro. La mancanza di uno spazio tra i due era la ragione per cui il tuo comando non funzionava.

Dal momento che il personaggio spaziale ha un significato speciale, dovrai citarlo o sfuggirlo, se fa parte di un argomento. Quindi, se ad esempio vuoi cambiare la tua attuale directory di lavoro in "File di origine" devi digitare uno di questi comandi:

cd Source\ Files
cd "Source Files"

La riga superiore viene "salvata" mentre la riga inferiore viene "quotata".

Se vuoi saperne di più, la guida migliore per te potrebbe essere: Introduzione a Linux ( pdf ) ( html )


Modifica :

Okay adesso, scusa non ho visto il tuo link lì. Il tuo post è stato un po 'fuorviante, ora penso di averti preso:

Quindi vuoi installare tex-live dall'archivio di origine che è collegato nella guida "Guida introduttiva" che hai pubblicato. Per fare ciò devi prima rimuovere qualsiasi installazione preesistente di tex-live. Lo fai aprendo un terminale facendo questo:

christy@ubuntu:~$ pwd 
/home/christy # <---- This is the directory you are working in
christy@ubuntu:~$ sudo apt-get remove texlive-*
[sudo] password for christy: 

A questo punto devi inserire la tua password e sarai ricompensato con alcuni messaggi noiosi, che ometterò qui. Quindi dovrai scaricare l'archivio denominato install-tl-unx.tar.gz(l'hai già fatto e non devi scaricarlo di nuovo, ma ti mostrerò come farlo comunque nel caso):

christy@ubuntu:~$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz

--2012-07-09 15:08:23--  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
Resolving mirror.ctan.org... 80.237.159.15
Connecting to mirror.ctan.org|80.237.159.15|:80... connected.
HTTP request sent, awaiting response... 302 Found
# ... some more stuff like this ...
Saving to: `install-tl-unx.tar.gz'

100%[=====================================>] 2,530,831   --.-K/s   in 0.1s    

2012-07-09 15:08:23 (17.3 MB/s) - `install-tl-unx.tar.gz' saved [2530831/2530831]

Ora che hai scaricato l'archivio puoi decomprimerlo

christy@ubuntu:~$ tar xvf install-tl-unx.tar.gz
install-tl-20120701/
install-tl-20120701/readme-txt.dir/
install-tl-20120701/readme-txt.dir/README.RU-cp1251
# ... bla bla skipping over some more messages like this ...
install-tl-20120701/readme-html.dir/readme.sr.html
install-tl-20120701/readme-html.dir/readme.ru.html
install-tl-20120701/readme-html.dir/readme.de.html

Ora che hai decompresso l'archivio puoi cambiare nella directory che è stata decompressa.

christy@ubunut:~$ ls | grep install-tl-  # <---- with this line you find out the number
install-tl-20120701                      # <---- in this case "20120701"
install-tl-unx.tar.gz                    # <---- if just this is present with no number you did something wrong
christy@ubuntu:~$ cd install-tl-20120701 # <---- enter this number here
christy@ubuntu:~$ pwd
/home/christy/install-tl-20120701/       # <--- this is your new working directory

Il numero "20120701" è un timestamp che dice quale versione di tex-live hai. Questo numero potrebbe essere diverso per te, ma il comando ls | grep install-t1-ti dirà cosa usare invece. Se tutto ciò ha funzionato, puoi eseguire lo script di installazione da qui:

christy@ubuntu:~$ sudo ./install-tl
[sudo] password for jan: 
Loading http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2012 from: http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet
Platform: x86_64-linux => 'x86_64 with GNU/Linux'
# ... bla bla and so on bla ...
Actions:
  <I> start installation to hard disk
  <H> help
  <Q> quit

Enter command: I
# ... and so on ...

Da qui in poi basta rispondere alle domande che ti vengono poste dallo script di installazione e dovresti andare bene.


@ con-f-use: grandi informazioni! Ora, facendo riferimento allo script del terminale nel mio post originale: in quale directory è install-tl-unx.tar.gz e come posso eseguirlo? Conosco i comandi di installazione, ma suppongo di dover installare i pacchetti? I comandi per decomprimere il tarball sono @ ubuntu-manual.org/getinvolved/editors . Se puoi indicarmi la giusta direzione ... Grazie mille; sei stato estremamente istruttivo.
user74713

Nessun problema. Non sono sicuro di quale sia esattamente il tuo obiettivo alla fine, quindi è un po 'difficile aiutarti senza ulteriori informazioni. Apparentemente stai cercando di installare TeX-Live dall'archivio 'install-tl-unx.tar.gz'. Per fare ciò devi prima decomprimere l'archivio, quindi eseguire lo script di installazione. Modificherò il mio post sopra con alcune istruzioni per farlo presto.
con-f-use

10

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.


5

Per esempio:

cd Desktop/ Passa alla directory Desktop se ci si trova nella directory principale.

cd - Torna alla directory precedente.

cd / Ti porta alla directory principale.

cd ~/Desktop Ti porterà alla tua Directory del desktop indipendentemente da dove ti trovi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.