Qual comando no shell sh do Linux / UNIX retorna meu diretório atual?


37

Usando o shshell (não bash), qual comando no Linux / UNIX imprime meu diretório atual?

$ *showmewhereiam*
/sys/kernel/debug
$

4
Uma simples pesquisa no Google teria dado a resposta, não é?
Mad-scientist

9
@ Mad-scientist Embora isso possa ser verdade, ele derrota o objetivo de um site de perguntas / respostas para pedir às pessoas que acessem o Google. 90% do nosso tráfego é proveniente de pesquisas na web .
slhck


2
Nada é simples demais para SEO!
Kenzo

Curiosamente, esta pergunta é a resposta para a simples busca no Google porunix whereami
Jay Killeen

Respostas:


60

Tente pwd.

$ pwd
/home/<username>

6
quando eu primeiro toque linux, eu pensei que é um comando sobre senha e /devé algo sobre o desenvolvimento (códigos fonte ou algo parecido)
Liuyan刘研

2
Ah, dev significa dispositivo ?! Sempre pensado até agora, significava apenas dev ... Eu pensei que dev / null era onde os desenvolvedores do linux colocavam o objeto nulo especial. Obrigado @LiuYan 刘 研
1owk3y

@LiuYan 刘 研 - Concordo totalmente que é confuso se você não sabe. Eu tive que procurá-lo. Significa "Imprimir diretório de trabalho" para qualquer outra pessoa que se surpreenda com o motivo pelo qual escolheria esse comando para essa funcionalidade.
Squarecandy

11
@squarecandy, é por isso que evitarei usar os acrônimos o máximo possível quando crescer mais e mais, mesmo o acrônimo não tem um significado ambíguo no momento - você nunca sabe qual o significado que terá no futuro. Há uma piada contada pela boneca de Jeff Dunham , Walter: O que acontece na DC permanece no YouTube! , Em que os meios DC D igital C Amera mas também significa Washington, D istrict de C olumbia na brincadeira.
LiuYan # 13/0117

11

Embora a resposta geral seja pwd, observe que isso pode gerar resultados diferentes, dependendo de como você alcançou um determinado diretório e se a rota incluiu links simbólicos.

Por exemplo, se você tiver um diretório chamado reale um link simbólico para esse diretório chamado virtuale você cdpara o virtualdiretório, pwdmostrará esse virtualnome de diretório, mesmo que o diretório atual em que você esteja seja real.

Para mostrar o diretório subjacente real, use pwd -Pou readlink -f(para um caminho arbitrário):

$ mkdir real
$ ln -s real virtual
$ cd virtual
$ pwd
/ home / nome de usuário / tmp / virtual
$ pwd -P
/ home / nome de usuário / tmp / real
$ readlink -f.
/ home / nome de usuário / tmp / real

Observe que os shells geralmente substituem o pwdcomando por sua própria versão interna, portanto no meu sistema (RHEL6), mesmo que a pwd(1)página do manual sugira que --physicalfuncionará tão bem quanto -P, porque estou executando bash, não funciona:

$ pwd --physical
opção bash: pwd: -: inválida
pwd: uso: pwd [-LP]
$ / bin / pwd --physical
/ home / nome de usuário / tmp / real
$ / usr / bin / env pwd --physical
/ home / nome de usuário / tmp / real

1

Como outros disseram, pwdgeralmente faz o trabalho suficientemente bem. No entanto, gostaria de acrescentar uma ideia que me ajudou.

Em todos os shells de uso comum hoje em dia, você pode personalizar a aparência do prompt de comando. Eu gosto de personalizar o meu para que ele me mostre o nome do computador em que estou e meu diretório de trabalho. Dessa forma, eu sempre sei onde estou. (A parte do nome do computador me ajuda a perceber se a janela do terminal que estou usando foi usada para SSH em um servidor remoto.) Por exemplo, quando abro uma nova janela do terminal no meu laptop, que chamo de Plastico, vejo o seguinte:

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

Você pode ver que está abreviando meu diretório pessoal como ~. Acho que fazer isso pelos meus prompts de terminal é incrivelmente útil - sempre sei de imediato exatamente onde estou, ainda mais do que faria olhando para uma janela do Finder.

No tcsh, faço isso adicionando set prompt = 'Plastico %~%# ' ao meu arquivo .tcshrc no meu diretório pessoal. Também fiz isso no ksh adicionando export PS1="Plastico $PWD $ "ao meu arquivo .profile. Mas, como usuário de Linux, você provavelmente usa o Bash, com o qual não tenho muita experiência (sou uma pessoa estranha assim). Mas parece que posso fazê-lo adicionando PS1="Plastico \w $ "ao meu arquivo .bashrc.

Edit: Acabei de notar que o OP indica que você está interessado em sh, não no bash. Ah bem; espero que as pessoas achem isso útil independentemente.


Essa é uma ideia legal. Pode funcionar bem para um caso de uso de desktop simples. Parece que pode ficar complicado para diretórios super profundos, se o seu prompt sozinho for Plastico /var/www/vhosts/myveryexcellentwebsite.com/public_html/wp-content/themes/myveryexcellenttheme/js/vendor/excellentjs/ >ou algo parecido.
Squarecandy

1
$ pwd
/your/current/directory
$

pwdvem do diretório de trabalho de impressão .

Na página do manual do Linux:

Nome

pwd - imprime o nome do diretório atual / ativo

Sinopse

pwd [OPÇÃO] ...

Descrição

Imprima o nome do arquivo completo do diretório de trabalho atual.

-L , --logical

use PWD do ambiente, mesmo que contenha links simbólicos

-P , --físico

evite todos os links simbólicos

--Socorro

exibir esta ajuda e sair

--versão

informações da versão de saída e saída

NOTA: seu shell pode ter sua própria versão do pwd, que geralmente substitui a versão descrita aqui. Por favor, consulte a documentação do seu shell para detalhes sobre as opções que ele suporta.

(...)


Isso duplica as informações na resposta aceita de mais de cinco anos atrás . Você pode adicionar mais alguma coisa?
bertieb
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.