¿Qué comando en el shell sh de Linux / UNIX devuelve mi directorio actual?


37

Usando el shshell (no bash), ¿qué comando en Linux / UNIX imprime mi directorio actual?

$ *showmewhereiam*
/sys/kernel/debug
$

44
Una simple búsqueda en Google habría dado la respuesta, ¿no?
Científico loco

9
@ Científico loco Si bien esto puede ser cierto, frustra el propósito de un sitio de preguntas / respuestas para decirle a la gente que vaya a Google. El 90% de nuestro tráfico proviene de búsquedas web .
slhck


2
¡Nada es demasiado simple para SEO!
Kenzo

Curiosamente, esta pregunta ES la respuesta a la simple búsqueda de Googleunix whereami
Jay Killeen,

Respuestas:


60

Tratar pwd.

$ pwd
/home/<username>

66
Cuando toqué Linux por primera vez, pensé que era un comando sobre contraseña y /devera algo sobre desarrollo (códigos fuente o algo así)
LiuYan 刘 研

2
Oh, dev significa dispositivo? Siempre pensé que hasta ahora solo significaba dev ... Pensé que dev / null era donde los desarrolladores de Linux colocaban el objeto nulo especial. Gracias @LiuYan 刘 研
1owk3y

@LiuYan 刘 研 - Estoy totalmente de acuerdo en que es confuso si no lo sabes. Tuve que buscarlo. Significa "Imprimir directorio de trabajo" para cualquier otra persona que esté desconcertada por qué elegirían ese comando para esa funcionalidad.
squarecandy

1
@squarecandy, es por eso que evitaré usar acrónimos lo más posible cuando crezca, incluso el acrónimo no tiene un significado ambiguo en este momento: nunca se sabe qué significado tendrá en el futuro. Hay una broma de la muñeca de Jeff Dunham , Walter: ¡ Lo que sucede en DC se queda en YouTube! , Donde los medios de CC D IGITAL C Amera pero también significa Washington, D istrito de C olumbia en la broma.
LiuYan 刘 研

11

Si bien la respuesta general es pwd, tenga en cuenta que esto puede dar resultados diferentes dependiendo de cómo llegó a un directorio determinado y si la ruta incluía enlaces simbólicos.

Por ejemplo, si tiene un directorio llamado realy un enlace simbólico a ese directorio llamado virtual, y usted cdal virtualdirectorio, pwdmostrará ese virtualnombre de directorio, aunque el directorio real en el que se encuentra es real.

Para mostrar el directorio subyacente real, use uno pwd -Po readlink -f(para una ruta arbitraria):

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

Tenga en cuenta que los shells a menudo reemplazan el pwdcomando con su propia versión interna, por lo que en mi sistema (RHEL6), aunque la pwd(1)página del manual sugiere que --physicalfuncionará tan bien como -P, porque lo estoy ejecutando bash, no lo hace:

$ pwd --físico
bash: pwd: -: opción no válida
pwd: uso: pwd [-LP]
$ / bin / pwd --físico
/ home / nombre de usuario / tmp / real
$ / usr / bin / env pwd --físico
/ home / nombre de usuario / tmp / real

1

Como otros dijeron, pwdgeneralmente hace el trabajo lo suficientemente bien. Sin embargo, me gustaría agregar una idea que me ha ayudado.

En todos los shells de uso común hoy en día, puede personalizar la apariencia del símbolo del sistema. Me gusta personalizar el mío para que me muestre el nombre de la computadora en la que estoy y mi directorio de trabajo. De esa manera, siempre sé dónde estoy. (La parte del nombre de la computadora me ayuda a darme cuenta si la ventana de terminal que estoy usando se ha utilizado para SSH en un servidor remoto). Por ejemplo, cuando abro una nueva ventana de terminal en mi computadora portátil, que llamo Plastico, veo esto:

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

Puede ver que abrevia mi directorio de inicio como ~. Creo que hacer esto para mis indicaciones de terminal es increíblemente útil: siempre sé de un vistazo exactamente dónde estoy, incluso más de lo que lo haría mirando una ventana del Finder.

En tcsh, hago esto agregando set prompt = 'Plastico %~%# ' a mi archivo .tcshrc en mi directorio de inicio. También lo hice en ksh agregando export PS1="Plastico $PWD $ "a mi archivo .profile. Pero como usuario de Linux, probablemente uses Bash, con el que no tengo mucha experiencia (soy un bicho raro como ese). Pero parece que podría hacerlo agregando PS1="Plastico \w $ "a mi archivo .bashrc.

Editar: Acabo de notar que el OP dice que estás interesado en sh, no bash. Oh bien; Espero que la gente encuentre esto útil independientemente.


Esa es una idea genial. Podría funcionar bien para un caso de uso de escritorio simple. Parece que podría ser difícil de manejar para directorios súper profundos si su mensaje solo es Plastico /var/www/vhosts/myveryexcellentwebsite.com/public_html/wp-content/themes/myveryexcellenttheme/js/vendor/excellentjs/ >o algo así.
squarecandy

1
$ pwd
/your/current/directory
$

pwdproviene del directorio de trabajo de impresión .

Desde la página de manual de Linux:

Nombre

pwd - imprime el nombre del directorio actual / de trabajo

Sinopsis

pwd [OPCIÓN] ...

Descripción

Imprima el nombre de archivo completo del directorio de trabajo actual.

-L , --lógico

usar PWD del entorno, incluso si contiene enlaces simbólicos

-P , --físico

evitar todos los enlaces simbólicos

--ayuda

muestra esta ayuda y sal

--versión

salida de información de versión y salida

NOTA: su shell puede tener su propia versión de pwd, que generalmente reemplaza la versión descrita aquí. Consulte la documentación de su shell para obtener detalles sobre las opciones que admite.

(...)


Esto duplica la información en la respuesta aceptada de hace más de cinco años . ¿Puedes agregar algo más?
bertieb
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.