
Plataforma: CentOS 6.2
Concha:tcsh
Estou brincando com cd
um script BASH e notei o maravilhosocd -
opção, mas fiquei com muitas dúvidas...
- Porque o
cd -
? Isso não é redundante comcd ..
?
EDITAR
[Como aponta FatalError, esses dois comandos não fazem as mesmas coisas... então a resposta é "não"] - Você pode mergulhar mais fundo em sua história com
-
flag, como em um navegador?
por exemplo, quando digitocd -
, ele me leva ao diretório anterior, mas se eu digitar esse comando novamente, ele me leva ao diretório de onde acabei de vir, criando uma espécie de loop.
É suportada uma abreviatura para voltar a vários níveis?
EDITAR
Sei que posso voltar comcd ..
, mas esperava que isso pudesse ser uma porta de entrada para costas menos detalhadas, por exemplo,cd -3
vs.cd ../../../
... espero que isso esclareça o que estou perguntando ....
EDITAR2
Quanto ao feedback atual, embora..
seja um diretório especial, não vejo uma razão pela qual o integradocd
ao terminal não possa usar uma abreviação, por../../ ... ../
exemplo,cd ..5
ou por que o integrado também não poderia ter um histórico (um la autopushd
/popd
) que pode ser ativado e usado comocd -3
. Entendo que isso pode representar um risco de segurança/privacidade, mas não vejo como isso seja pior do que armazenar um histórico de comandos, o que a maioria dos shells/terminais faz. - A página de manual para
cd
, acessível viaman cd
ehelp cd
(é a mesma para qualquer comando), apenas listas-L
e-P
sinalizadores.
No entanto, quando eu digito,cd --help
ele geraUsage: cd [-plvn][-|<dir>].
.
Estou certo ao assumir que os outros sinalizadores e a opção - (voltar) não são padrão? - Para que servem as bandeiras
-n
e-v
?
Ambos parecem me levar de volta ao meu diretório inicial, foi tudo o que consegui descobrir por meio de experimentação.
Uma leitura rápida sobre recursos da web[1][2]ofereceu exatamente o mesmo tipo de informação que a página de manual ofereceu e não respondeu às minhas perguntas.
Nota: O segundo recurso centrado no Linux acima reivindicado cd
tinha apenas duas opções (obviamente não é verdade em current CentOS
), daí minha suposição de que essa funcionalidade poderia não ser padrão.
Responder1
cd -
não é o mesmo quecd ..
. Ocd -
comando vai para oanteriordiretório em que você estava. Por exemplo, se você estiver/home/bob
e executarcd /var/log
, executarcd -
o levará de volta para/home/bob
.cd ..
por outro lado, sempre vai para o diretório pai.Se você quiser manter um histórico como esse, sugiro dar uma olhada
pushd
epopd
que permitirá usar uma "pilha de diretórios":user@host:/etc/init.d$ pushd /var/log /var/log /etc/init.d user@host:/var/log$ pushd /tmp /tmp /var/log /etc/init.d user@host:/tmp$ popd /var/log /etc/init.d user@host:/var/log$ popd /etc/init.d
Quanto a retroceder vários níveis na árvore de diretórios, que eu conheça não existe uma maneira comum.
..
não é um recurso do shell, na verdade é um link de diretório especial em *nix que se refere ao diretório pai.cd
é um comando integrado, portanto seus sinalizadores e seu uso podem variar de acordo com o shell. Mas, em geral, as opções paracd
entrarbash
em um sistema devem ser as mesmas que em outro sistema.Meu
bash
shell não lista nenhum desses sinalizadores... você está experimentando usarbash
outcsh
? Se você estiver usando,tcsh
estará essencialmente usando um comando totalmente diferente, então provavelmente desejará executarbash
e mexercd
nele.
EDITAR:
De acordo com a tcsh
página de manual:
Com -p, imprime a pilha de diretórios final, assim como dirs. Os sinalizadores -l, -n e -v têm o mesmo efeito no cd e nos dirs e implicam -p.
(Você pode verificar a seção sobre dirs
se quiser ler os detalhes). Parece que basicamente está imprimindo a pilha de diretórios após a execução do comando:
host:43> pushd /etc/init.d
/etc/init.d ~
host:44> pushd /var/log
/var/log /etc/init.d ~
host:45> pushd /tmp
/tmp /var/log /etc/init.d ~
host:46> cd -p
~ /var/log /etc/init.d ~
host:47> cd -v
0 ~
1 /var/log
2 /etc/init.d
3 ~
host:48> popd
/var/log /etc/init.d ~
host:49> cd -v
0 ~
1 /etc/init.d
2 ~
ambos mostram a pilha de diretórios, mas -v
parecem um pouco mais fáceis de ler. O topo da pilha (elemento 0) é o diretório atual e 1 é para onde você iria se executasse popd
uma vez e assim por diante.