Como mudo de diretórios no terminal e sei em qual diretório estou?

12

Estou seguindo as instruções @ Ajuda da comunidade do Ubuntu ; No entanto, ainda estou confuso sobre algumas coisas. Eu pesquisei e & amp; achei este post: usando o terminal para alterar o diretório , mas está acima de mim & amp; Eu ainda não tenho certeza de como fazer isso. Sou novo & amp; precisa de um pouco de direção extra, então fique comigo! ;-) O seguinte é o script do meu terminal:

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

Como posso saber em qual diretório e como navegar no diretório? Eu sei que devo estar deixando de fora algo simples.

    
por user74713 08.07.2012 / 23:14

3 respostas

19

Na sua sessão ls exibe o conteúdo do diretório atual (mas não arquivos ocultos que começam com um ponto no nome do arquivo). Você navega para outro diretório digitando cd dirname . Aqui você tem que substituir "dirname" pelo nome de um diretório que você quer mudar. Normalmente, você começa com o diretório home como o diretório de trabalho atual. No seu caso, é mais provável que /home/christy . Se ls mostrar um diretório chamado "Template", você pode mudar para "Template" (= torná-lo seu diretório de trabalho atual) digitando (note o espaço) o comando:

cd Templates

você alterará seu diretório de trabalho atual para "Modelos" ou imprimirá "Nenhum arquivo ou diretório", se um diretório desse nome não existir em seu diretório atual. Digitar pwd sempre fornecerá o patch completo ao seu diretório de trabalho atual, incluindo pais.

Você pode fornecer argumentos opcionais para cada comando. Para cd , a string "Templates" era um argumento opcional. Se você digitar ls -a , por exemplo, o comando ls também imprimirá arquivos ocultos. Ou com ls Templates , ele irá imprimir o conteúdo do diretório Tempaltes em vez do conteúdo atual da sua pasta de trabalho. Os argumentos devem ser separados por pelo menos um espaço do nome do comando e um do outro. A falta de espaço entre os dois foi o motivo pelo qual seu comando não funcionou.

Como o caractere de espaço tem um significado especial, você precisará citar ou escapar dele, se for parte de um argumento. Portanto, se por exemplo você quiser alterar seu diretório de trabalho atual para "Arquivos de origem", você precisa digitar um destes comandos:

cd Source\ Files
cd "Source Files"

A linha superior é "escapada" enquanto a linha inferior é "citada".

Se você quiser saber mais, o melhor guia para você pode ser: Introdução ao Linux ( pdf ) ( html )

Editar :

Ok, desculpe, eu não vi seu link lá. Seu post foi um pouco enganador, agora acho que tenho você:

Você quer instalar o tex-live a partir do arquivo de origem que está vinculado no guia "Primeiros passos" que você postou. Para fazer isso você deve primeiro remover qualquer instalação pré-existente do tex-live. Você faz isso abrindo um terminal fazendo isso:

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

Neste ponto, você deve inserir sua senha e será recompensado com algumas mensagens chatas, que omitirei aqui. Então você terá que baixar o arquivo chamado install-tl-unx.tar.gz (você já fez isso e não precisa baixá-lo novamente, mas eu mostro como fazê-lo mesmo assim, apenas no 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]

Agora que você fez o download do arquivo, é possível desempacotá-lo

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

Agora que você descompactou o arquivo, você pode mudar para o diretório que foi descompactado.

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

O número "20120701" é um timestamp dizendo qual versão do tex-live você tem. Esse número pode ser diferente para você, mas o comando ls | grep install-t1- informará o que você deve usar. Se tudo isso funcionou, você pode executar o script de instalação aqui:

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 ...

A partir daqui, responda às perguntas feitas pelo script de instalação e você deve estar bem.

    
por con-f-use 08.07.2012 / 23:25
10

Resumo executivo (TL; DR)

  • Use pwd para saber onde você está (ou procure entre : e $ em seu prompt).
  • Use cd para alterar o diretório em outro lugar. Ao contrário do Windows, cd deve sempre ser seguido por um espaço; comandos como cd/ e cd.. não funcionarão, mas cd / e cd .. .

Sabendo onde você está

Caminho 1: execute pwd .

Em que diretório você está atualmente é específico do shell (e mais geralmente, específico do aplicativo). Você poderia estar executando um shell onde você está em um diretório, e outro shell onde você está em outro diretório.

Para saber em qual diretório você está atualmente, execute:

pwd

Por exemplo (de um shell que eu tenho aberto agora, na minha máquina):

ek@Kip:~$ pwd
/home/ek

Isso me diz que estou no diretório /home/ek . /home é (de maneira um pouco confusa) o diretório que contém diretórios pessoais dos usuários humanos não é o diretório home de qualquer usuário). O usuário humano username tem o diretório inicial /home/username .

O usuário root não possui um diretório pessoal em /home . Em vez disso, o diretório inicial root é /root . Isso não deve ser confundido com o diretório raiz , que é / .

Caminho 2: examine seu prompt.

A configuração padrão do seu prompt é que ele informa em qual diretório você está atualmente. Seu prompt é o texto que aparece para notificá-lo de que o shell está pronto para aceitar um comando.

No exemplo que você nos mostrou em sua pergunta, sua solicitação é:

christy@ubuntu:~$

christy é seu nome de usuário. O caractere @ o separa de ubuntu , o nome do host do seu computador. (Se você estiver executando um CD ao vivo, seu nome de host será ubuntu e algumas pessoas escolherão esse nome como o nome do computador durante a instalação também.)

O caractere : o separa de o nome do diretório em que você está atualmente. Nesse caso, isso é representado por ~ . ~ é uma abreviação para o diretório inicial. Quando você não está no seu diretório home, você deve ver um nome completo do diretório. Por exemplo:

ek@Kip:~$ cd /var/log
ek@Kip:/var/log$

(Para finalizar o que cada parte do prompt significa: Para prompts que seguem essa convenção, um caracter $ ou # aparece. $ , como neste caso, significa que é um shell de usuário normal Um caractere # significaria que é um shell root .

Mudando onde você está

Por que seu comando "cd" não funcionou.

Para alterar o diretório, use o comando cd .

Você executou cd/ . Isso não funciona porque você não executou o comando cd . No Ubuntu e outros sistemas operacionais parecidos com Unix (na verdade, em shells estilo Unix como bash , o shell que você está usando), o nome de um comando é considerado terminar apenas em um espaço ou no fim da linha.

Assim, ao contrário do Prompt de Comando no Windows (onde cd\ é interpretado como cd \ e cd.. é interpretado como o mesmo que cd .. ), em bash (o shell que você está usando no Ubuntu), cd/ não é um comando válido. Você deve usar cd / .

cd/ significa "a entrada no diretório atual cujo nome é cd e que também é um diretório." Independentemente de existir ou não um subdiretório desse tipo, ele não pode ser executado como um comando, portanto, de qualquer forma, você obterá um erro (embora o que erro seja diferente):

ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory

Mover para o seu diretório pessoal

Para ir ao seu diretório inicial, execute cd sem argumentos:

cd

Algumas pessoas preferem nomear o diretório inicial explicitamente. Você pode usar seu nome completo ou

cd ~

Mas cd por si só é suficiente.

Movendo para cima um diretório

Para mudar o diretório para o diretório pai do diretório atual (ou seja, o diretório que o contém), use:

cd ..

.. representa o diretório pai do diretório atual. Se você estiver no diretório raiz ( / ), haverá uma exceção: .. representa apenas / . Portanto, executar cd .. sobe um diretório quando executado em qualquer lugar, exceto / ; quando executado em / , você fica em / .

Todo diretório contém uma entrada .. . Todos eles também contêm uma entrada . que se refere ao próprio diretório atual. Não é muito para executar cd . embora. Você sempre fica onde está.

Caminhos absolutos e relativos

Se você cd para algo que não não começa com / , então ele tenta ir para esse diretório dentro do diretório atual .

Por exemplo, se você executou

cd var/log

Em seguida, ele tentaria ir para o subdiretório var de onde você está atualmente e para o subdiretório log disso. A menos que ambos existam e nesses lugares, esse comando cd falhará (e você permanecerá onde estava originalmente).

Se você quiser ir para o subdiretório log do subdiretório var do diretório raiz , execute isto:

cd /var/log

Somente se você estiver em / é cd var/log equivalente a cd /var/log .

Um caminho que começa com / é absoluto. A maneira como isso é resolvido não depende de onde você está atualmente.

O caminho ~ também é absoluto, porque é (essencialmente) uma forma abreviada de $HOME . HOME é uma variável de ambiente e a expressão $HOME se expande para o caminho completo e absoluto da página inicial do usuário atual diretório.

A notação

~ também pode ser usada para representar o diretório inicial do outro usuário. Se você escrever ~username , isso representa o diretório pessoal do username .

Voltando para onde você estava antes

O diretório em que você está atualmente é armazenado na variável de ambiente PWD . O diretório último em que você estava é armazenado na variável de ambiente OLDPWD . Você pode ver OLDPWD da mesma forma que visualizaria qualquer variável de ambiente:

echo $OLDPWD

Como essas informações são armazenadas, cd é capaz de ter uma maneira especial, rápida e fácil de voltar para onde você estava antes. Como pst007x diz , para ir para o último diretório em que você estava, execute:

cd -

Se nunca houvesse nenhum diretório anterior em naquele shell , a variável de ambiente OLDPWD não teria sido definida e tentar executar cd - resultaria em um erro ( e você vai ficar onde está):

ek@Kip:~$ cd -
bash: cd: OLDPWD not set

Mudando onde você é como um chefe

pushd e popd : a pilha de diretórios

Imagine uma pilha de nomes de diretórios. Por uma pilha , quero dizer algo em que, quando você adiciona algo, ele fica no topo, e você só pode remova uma coisa de cada vez, e o que você remove é sempre o que está no topo.

Você pode empurrar qualquer diretório dir para a pilha executando:

pushd dir

Se você quiser empurrar o diretório atual para o topo da pilha, você pode usar . (que, como explicado acima, sempre representa o diretório atual):

pushd .

Depois, você pode cuidar do seu negócio, alterando os diretórios o quanto quiser. Quando você quiser voltar para o último diretório que você colocou na pilha com pushd , execute:

popd

Isso vai para o diretório, e também aparece na pilha. Agora a pilha é um diretório mais curto. Se esse era o único diretório na pilha, a pilha agora está vazia.

Você pode ter uma pilha de tamanho maior que 1. Ou seja, você pode usar comandos pushd separados para enviar vários diretórios para a pilha. Cada comando popd subseqüente irá para (e pop off, isto é, removerá da pilha ) o diretório push mais recente ainda não aberto.

Veja um exemplo:

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$

pushd e popd são usados com muito menos freqüência do que cd . Eles também têm outros usos ainda mais avançados. Execute help pushd e help popd para detalhes.

Aprendendo mais e acessando a documentação

cd e pwd também têm usos mais avançados. Para saber mais sobre eles, execute help cd e man pwd .

help é para shell builtins . man é para comandos independentes - comandos que são executados como processos separados e existem como executáveis separados. O comando type revela se um comando é um shell interno ou não e, se não, onde o programa executado está localizado. Por exemplo, você pode executar type help , type type ou type man .

    
por Eliah Kagan 03.04.2013 / 22:11
5

Por exemplo:

cd Desktop/ Vai para o diretório da área de trabalho se você estiver em seu diretório pessoal.

cd - Vai para o diretório anterior.

cd / Leva você ao diretório raiz.

cd ~/Desktop Irá levá-lo ao seu diretório da área de trabalho, não importa onde você esteja.

    
por pst007x 03.04.2013 / 20:41