Quale comando nella shell sh Linux / UNIX restituisce la mia directory corrente?


37

Usando la shshell (no bash), quale comando in Linux / UNIX stampa la mia directory corrente?

$ *showmewhereiam*
/sys/kernel/debug
$

4
Una semplice ricerca su Google avrebbe dato la risposta, vero?
Scienziato pazzo,

9
@ Mad-scientist Anche se questo può essere vero, vanifica lo scopo di un sito di domande / risposte per dire alla gente di andare su Google. Il 90% del nostro traffico proviene da ricerche web .
slhck,


2
Niente è troppo semplice per il SEO!
Kenzo,

Stranamente, questa domanda è la risposta alla semplice ricerca di googleunix whereami
Jay Killeen,

Risposte:


60

Prova pwd.

$ pwd
/home/<username>

6
quando ho toccato Linux per la prima volta, ho pensato che fosse un comando sulla password e /devriguardasse lo sviluppo (codici sorgente o qualcosa del genere)
LiuYan 刘 研

2
Oh, dev significa dispositivo ?! Ho sempre pensato fino ad ora che significava solo dev ... Ho pensato che dev / null fosse il luogo in cui gli sviluppatori Linux inserivano l'oggetto null speciale. Grazie @LiuYan 刘 研
1owk3y

@LiuYan 刘 研 - Sono assolutamente d'accordo che sia confuso se non lo sai. Ho dovuto cercarlo. Sta per "Stampa directory di lavoro" per chiunque sia sconcertato dal motivo per cui sceglierebbe quel comando per quella funzionalità.
squarecandy

1
@squarecandy, Ecco perché eviterò di usare gli acronimi il più possibile quando invecchierò, anche l'acronimo non ha un significato ambiguo in questo momento - Non si sa mai quale significato avrà in futuro. C'è una battuta detta dalla bambola di Jeff Dunham Walter: cosa succede in DC resta su YouTube! , Dove i mezzi DC D igital C amera ma significa anche Washington, D istrict di C olumbia nello scherzo.
LiuYan 刘 研

11

Mentre la risposta generale è pwd, nota che ciò può dare risultati diversi a seconda di come hai raggiunto una determinata directory e se il percorso includeva collegamenti simbolici.

Ad esempio, se hai una directory chiamata reale un link simbolico a quella directory chiamato virtual, e tu cdalla virtualdirectory, allora pwdmostrerai quel virtualnome di directory, anche se la directory attuale in cui ti trovi real.

Per mostrare la directory sottostante reale, utilizzare pwd -Po readlink -f(per un percorso arbitrario):

$ mkdir real
$ ln -s virtual reale
$ cd virtuale
$ pwd
/ home / nome utente / tmp / virtual
$ pwd -P
/ home / nome utente / tmp / real
$ readlink -f.
/ home / nome utente / tmp / real

Si noti che le shell sostituiscono spesso il pwdcomando con la propria versione interna, quindi sul mio sistema (RHEL6), anche se la pwd(1)pagina del manuale suggerisce che --physicalfunzionerà così come -P, poiché sono in esecuzione bash, non:

$ pwd - fisico
bash: pwd: -: opzione non valida
pwd: use: pwd [-LP]
$ / bin / pwd - fisico
/ home / nome utente / tmp / real
$ / usr / bin / env pwd --physical
/ home / nome utente / tmp / real

1

Come altri hanno detto, di pwdsolito fa abbastanza bene il lavoro. Tuttavia, vorrei aggiungere un'idea che mi ha aiutato.

Su tutte le shell oggi in uso comune, è possibile personalizzare l'aspetto del prompt dei comandi. Mi piace personalizzare il mio in modo che mi mostri sia il nome del computer su cui mi trovo sia la mia directory di lavoro. In questo modo, so sempre dove sono. (La parte del nome del computer mi aiuta a capire se la finestra del terminale che sto usando è stata utilizzata per SSH in un server remoto.) Ad esempio, quando apro una nuova finestra del terminale sul mio laptop, che chiamo Plastico, vedo questo:

Plastico ~> cd Desktop/
Plastico ~/Desktop> cd ~/Sites/raygunrobot.com
Plastico ~/Sites/raygunrobot.com> cd /usr
Plastico /usr> 

Puoi vedere che sta abbreviando la mia home directory come ~. Trovo che farlo per i miei messaggi terminali sia incredibilmente utile: so sempre a colpo d'occhio esattamente dove sono, anche più di quanto farei guardando una finestra del Finder.

Su tcsh, lo faccio aggiungendo set prompt = 'Plastico %~%# ' al mio file .tcshrc nella mia directory home. L'ho fatto anche su ksh aggiungendo export PS1="Plastico $PWD $ "al mio file .profile. Ma essendo un utente Linux, probabilmente usi Bash, di cui non ho molta esperienza (sono un tipo strano). Ma sembra che potrei essere in grado di farlo aggiungendo PS1="Plastico \w $ "al mio file .bashrc.

Modifica: ho appena notato gli stati OP che ti interessano a sh, non a bash. Oh bene; spero che la gente lo trovi utile a prescindere.


È una bella idea. Potrebbe funzionare bene per un semplice caso d'uso desktop. Sembra che potrebbe diventare ingombrante per directory super profonde se il tuo prompt da solo è Plastico /var/www/vhosts/myveryexcellentwebsite.com/public_html/wp-content/themes/myveryexcellenttheme/js/vendor/excellentjs/ >o qualcosa del genere.
squarecandy

1
$ pwd
/your/current/directory
$

pwdproviene dalla directory di lavoro della stampa .

Dalla pagina man di Linux:

Nome

pwd - stampa il nome della directory corrente / di lavoro

Sinossi

pwd [OPZIONE] ...

Descrizione

Stampa il nome file completo della directory di lavoro corrente.

-L , --logico

usa PWD dall'ambiente, anche se contiene collegamenti simbolici

-P , - fisico

evitare tutti i collegamenti simbolici

--Aiuto

visualizza questo aiuto ed esce

--versione

informazioni sulla versione di output ed uscita

NOTA: la tua shell potrebbe avere la sua versione di pwd, che di solito sostituisce la versione qui descritta. Per i dettagli sulle opzioni supportate, consultare la documentazione della shell.

(...)


Ciò duplica le informazioni nella risposta accettata di oltre cinque anni fa . Puoi aggiungere qualcos'altro?
bertieb,
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.