2011-06-21 10:31:01 +0000 2011-06-21 10:31:01 +0000
37
37

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

Usando la shell sh (non bash), quale comando in Linux/UNIX stampa la mia directory corrente?

$ *showmewhereiam*
/sys/kernel/debug
$

Risposte (4)

60
60
60
2011-06-21 10:32:09 +0000

Prova pwd.

$ pwd
/home/<username>
11
11
11
2011-06-21 12:48:02 +0000

Mentre la risposta generale è pwd, notate che questo può dare risultati diversi a seconda di come avete raggiunto una data directory, e se il percorso ha incluso collegamenti simbolici.

Per esempio, se avete una directory chiamata real e un link simbolico a quella directory chiamato virtual, e voi cd alla directory virtual, allora pwd mostrerà il nome della directory virtual, anche se la directory reale in cui vi trovate è real.

Per mostrare la vera directory sottostante, usate o pwd -P o readlink -f (per un percorso arbitrario):

$ mkdir real $ ln -s real virtual $ cd virtual $ pwd /home/_username_/tmp/virtual $ pwd -P /home/_username_/tmp/real $ readlink -f . /home/_username_/tmp/real

Notate che le shell spesso sostituiscono il comando pwd con la loro versione interna, così sul mio sistema (RHEL6), anche se la pagina di manuale di pwd(1) suggerisce che --physical funzionerà come -P, perché sto usando bash, non lo fa:

$ pwd --physical bash: pwd: --: invalid option pwd: usage: pwd [-LP] $ /bin/pwd --physical /home/_username_/tmp/real $ /usr/bin/env pwd --physical /home/_username_/tmp/real
1
1
1
2017-02-20 09:13:21 +0000
$ pwd
/your/current/directory
$

pwd proviene dalla stampa della directory di lavoro.

Dalla pagina man di Linux:

Nome

pwd - stampa il nome della directory corrente/di lavoro

Sinossi

pwd [OPZIONE]…

Descrizione

Stampa il nome completo del file della directory di lavoro corrente.

-L , –logico

usa PWD dall'ambiente, anche se contiene symlink

-P , –physical

evita tutti i collegamenti simbolici

–help

visualizza questo aiuto ed esci

–version

visualizza informazioni sulla versione ed esci

NOTA: la vostra shell potrebbe avere una propria versione di pwd, che di solito sostituisce quella qui descritta. Fai riferimento alla documentazione della tua shell per i dettagli sulle opzioni che supporta.

(…)

1
1
1
2011-06-21 13:24:23 +0000

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

Su tutte le shell di uso comune oggi, siete in grado di personalizzare l'aspetto del prompt dei comandi. Mi piace personalizzare il mio in modo che mi mostri sia il nome del computer in cui mi trovo che 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 usata per SSH in un server remoto). Per esempio, quando apro una nuova finestra di terminale sul mio portatile, che chiamo Plastico, vedo questo:

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

Potete vedere che sta abbreviando la mia home directory come ~. Trovo che fare questo per i miei prompt del terminale sia incredibilmente comodo - so sempre a colpo d'occhio esattamente dove mi trovo, anche più di quanto farei guardando una finestra del Finder.

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

Modifica: Ho appena notato che l'OP afferma che sei interessato a sh, non a bash. Oh bene; spero che la gente trovi questo utile a prescindere.