Como altero os diretórios no terminal e sei em que diretório estou?

15

Estou seguindo as instruções na Ajuda da comunidade Ubuntu ; no entanto, ainda estou confuso sobre algumas coisas. Eu pesquisei e encontrei este post: usando o terminal para alterar o diretório , mas está acima de mim e ainda não tenho certeza de como proceder. Eu sou novo e preciso 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 faço para saber o que está em qual diretório e como navego no diretório. Eu sei que devo estar deixando de fora algo simples.

user74713
fonte
4
Você sempre precisa de um espaço após o comando, como "cd". Seu comando funcionaria se você digitar "cd /" e passaria para o diretório raiz.
Marty Fried
Fantástico, Marty! Sua assistência é muito apreciada. ;-)
user74713

Respostas:

19

Na sua sessão, lsexibe o conteúdo do diretório atual (mas não os arquivos ocultos que começam com um ponto no nome do arquivo). Você navega para outro diretório digitando cd dirname. Aqui você deve substituir "dirname" pelo nome de um diretório em que deseja mudar. Normalmente você começa com o diretório inicial como diretório de trabalho atual. No seu caso, isso é mais provável /home/christy. Se lsmostrar um diretório chamado "Modelo", você poderá mudar para "Modelo" (= torná-lo seu diretório de trabalho atual) digitando (lembre-se do espaço) o comando:

cd Templates

você mudará seu diretório de trabalho atual para "Modelos" ou imprimirá "Não existe esse arquivo ou diretório", se um diretório com esse nome não existir no diretório atual. A digitação pwdsempre fornecerá o patch completo para o diretório de trabalho atual, incluindo os pais.

Você pode fornecer argumentos opcionais para cada comando. Para cda string "Templates" era um argumento tão opcional. Se você digitar, ls -apor exemplo, o lscomando também imprimirá arquivos ocultos. Ou ls Templatesentão, imprimirá o conteúdo do diretório Tempaltes, em vez do conteúdo atual do diretório 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á citá-lo ou escapá-lo, se fizer parte de uma discussão. Portanto, se, por exemplo, você deseja alterar seu diretório de trabalho atual para "Arquivos de origem", é necessário digitar um destes comandos:

cd Source\ Files
cd "Source Files"

A linha superior está sendo "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á. Sua postagem foi um pouco enganadora, agora acho que entendi você:

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

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 digitar sua senha e será recompensado com algumas mensagens chatas, que vou omitir aqui. Então você terá que baixar o arquivo nomeado install-tl-unx.tar.gz(você já fez isso e não precisa baixá-lo novamente, mas eu mostro como fazê-lo, no entanto, apenas por precaução):

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ê baixou o arquivo, pode descompactá-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 morto, pode mudar para o diretório 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 carimbo de data e hora informando qual versão do tex-live você possui. Esse número pode ser diferente para você, mas o comando ls | grep install-t1-informará o que usar. Se tudo isso funcionou, você pode executar o script de instalação a partir daqui:

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, basta responder às perguntas feitas pelo script de instalação e você deve ficar bem.

confundir
fonte
@ con-f-use: Ótima informação! Agora, referindo-se ao script do terminal no meu post original: Em que diretório está o install-tl-unx.tar.gz e como eu o executo? Eu estou familiarizado com os comandos de instalação, mas acho que preciso instalar pacotes? Os comandos para descompactar o tarball são @ ubuntu-manual.org/getinvolved/editors . Se você pode me apontar na direção certa ... Muito obrigado; você foi extremamente informativo.
user74713
Sem problemas. Não tenho certeza, qual é exatamente o seu objetivo no final, por isso é um pouco difícil ajudá-lo sem mais informações. Aparentemente, você está tentando instalar o TeX-Live a partir do arquivo 'install-tl-unx.tar.gz'. Para fazer isso, você deve primeiro descompactar o arquivo morto e executar o script de instalação. Editarei meu post acima com algumas instruções para fazer isso em breve.
con-f-use
10

Resumo Executivo (TL; DR)

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

Saber onde você está

Caminho 1: Execute pwd.

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

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

pwd

Por exemplo (a partir de um shell que agora abri na minha máquina):

ek@Kip:~$ pwd
/home/ek

Isso me diz que eu estou no diretório /home/ek. /homeé (um tanto confuso) o diretório que contém os diretórios pessoais de usuários humanos (ele não é o diretório pessoal de nenhum usuário). O usuário humano usernamepossui o diretório inicial ./home/username

O rootusuário não possui um diretório inicial no /home. Em vez disso, rooto diretório inicial do /root. Isso não deve ser confundido com o diretório raiz , que é /.

Caminho 2: Examine seu prompt.

A configuração padrão para seu prompt é que ele informa em que 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, seu prompt é:

christy@ubuntu:~$

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

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

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

(Para finalizar o significado de cada parte do prompt: Para os prompts que seguem esta convenção, um $ou um #caractere aparece. $, Como nesse caso, significa que é um shell de usuário normal. Um #caractere significa que é um rootshell.)

Mudando onde você está

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

Para alterar o diretório, use o cdcomando

Você correu cd/. Isso não funciona porque você realmente não executou o cdcomando. No Ubuntu e em outros sistemas operacionais semelhantes ao Unix (na verdade, em shells no estilo Unixbash , como o shell que você está usando), o nome de um comando é considerado terminado apenas em um espaço ou no final da linha.

Portanto, diferente do Prompt de Comando no Windows (onde cd\é interpretado da mesma forma cd \e cd..é interpretado da mesma forma 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 é cde que também é um diretório". Se esse subdiretório existe ou não, ele não pode ser executado como um comando; portanto, de qualquer maneira, você receberá um erro (embora o erro recebido seja diferente):

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

Movendo para o seu diretório pessoal

Para ir para o diretório inicial, execute cd-o sem argumentos:

cd

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

cd ~

Mas cdpor si só é suficiente.

Subindo um diretório

Para alterar 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 ( /), há uma exceção: ..apenas representa /. Portanto, a execução cd ..move um diretório para cima quando é executada em qualquer lugar, exceto /; quando entra /, você fica /.

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 correr cd .embora. Você sempre fica onde está.

Caminhos absolutos e relativos

Se você cdescolher algo que não comece com a /, ele tentará ir para esse diretório no diretório atual .

Por exemplo, se você executou

cd var/log

Em seguida, tentaria entrar no varsubdiretório onde você está atualmente e no logsubdiretório. A menos que ambos existam e nesses locais, esse cdcomando falhará (e você permanecerá onde estava originalmente).

Se você deseja acessar o logsubdiretório do varsubdiretório do diretório raiz , execute isso:

cd /var/log

Somente se você estiver atualmente /é cd var/logequivalente a cd /var/log.

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

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

~A notação também pode ser usada para representar o diretório inicial de outro usuário. Se você escrever , isso representa o diretório inicial do.~usernameusername

Voltando para onde você estava antes

O diretório em que você está atualmente é armazenado na PWDvariável de ambiente. O último diretório em que você estava é armazenado na OLDPWDvariável de ambiente. Você pode visualizar OLDPWDda mesma maneira que visualiza qualquer variável de ambiente:

echo $OLDPWD

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

cd -

Se nunca houve um diretório anterior em que você estava nesse shell , a OLDPWDvariável de ambiente não foi definida e a tentativa de executar cd -resultará em um erro (e você permanecerá onde está):

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

Mudando de onde você é como um chefe

pushde popd: A pilha de diretórios

Imagine uma pilha de nomes de diretório. Por uma pilha , quero dizer algo em que, quando você adiciona algo, ela aparece no topo, e você pode remover apenas uma coisa de cada vez, e a coisa que você remove é sempre o que está atualmente no topo.

Você pode enviar qualquer diretório dirpara a pilha executando:

pushd dir

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

pushd .

Depois, você pode cuidar dos seus negócios, alterando os diretórios o quanto quiser. Quando você quiser voltar ao último diretório com o qual você inseriu a pilha pushd, execute:

popd

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

Você pode ter uma pilha de tamanho maior que 1. Ou seja, você pode usar pushdcomandos separados para enviar vários diretórios para a pilha. Cada popdcomando subseqüente irá para (e removerá, ou seja, removerá da pilha ) o diretório enviado mais recente ainda não exibido.

Aqui está 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$

pushde popdsão usados ​​com muito menos frequência do que cd. Eles também têm outros usos ainda mais avançados. Execute help pushde help popdpara obter detalhes.

Aprendendo mais e acessando a documentação

cde pwdtem usos mais avançados também. Para aprender sobre eles, corra help cde man pwd.

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

Eliah Kagan
fonte
5

Por exemplo:

cd Desktop/ Vai para o diretório da área de trabalho se você estiver no diretório inicial.

cd - Volta ao diretório anterior.

cd / Leve você para o diretório raiz.

cd ~/Desktop O levará ao seu Diretório de desktops, não importa onde você esteja.

pst007x
fonte