É uma boa ideia usar o seguinte alias:
cd() {
pushd $1;
}
na festança?
Eu acho que isso seria muito útil, pois posso usar uma série de popd
s em vez de apenas uma cd -
vez.
Existe algum caso em que isso possa ser um problema?
bash
shell
shell-script
alias
lazer
fonte
fonte
alias cd=pushd
?pd
? Você é o único usuário e administrador do seu sistema?autopushd
Respostas:
Pessoalmente, eu os tenho no bashrc e os uso o tempo todo:
Você pode navegar na linha de comando um pouco como um navegador.
cd
altera o diretórioback
vai para o diretório anterior do qual vocêcd
editou. Eflip
se moverá entre os diretórios atual e anterior sem removê-los da pilha de diretórios. No geral, funciona muito bem.O único problema real de que estou ciente é o fato de que é um conjunto de comandos aos quais estou completamente acostumado, mas que não existe na máquina de mais ninguém. Então, se eu tiver que usar a máquina de outra pessoa, pode ser um pouco frustrante. Se você está acostumado a usar
pushd
epopd
diretamente, não tem esse problema. E, se você simplesmentecd
não colocarpopd
, você não terá o problema deback
não existir, você ainda terá o problema quecd
não faz exatamente o que você espera em outras máquinas.Eu observaria, no entanto, que sua implementação específica de
cd
não funciona exatamente comocd
a normal,cd
por si só, irá para o diretório inicial, mas a sua não. A versão que eu tenho aqui não tem esse problema. O meu também é anexadoDIRSTACK
à frente dadirs
impressão, mas isso é mais uma questão de gosto pessoal do que qualquer coisa.Então, como eu disse, uso esses aliases o tempo todo e não tenho nenhum problema com eles. Só que pode ser um pouco frustrante ter que usar outra máquina e depois encontrá-la lá (o que não deveria surpreender, mas é uma daquelas coisas que você usa com tanta frequência que não pensa nelas. , portanto, fazê-los não funcionar como você está acostumado ainda pode ser surpreendente).
fonte
<C-o>
parapopd
para uma experiência autêntica.Esta não é uma resposta direta à pergunta, mas eu me apaixonei pela janela do histórico de diretórios no 4DOS. Tanto que escrevi minha própria versão para Linux (e Cygwin). Nunca consegui torná-lo um utilitário fácil de instalar, mas se você conhece o prompt do Bash, não deve ser tão difícil de executar. Sua pergunta me inspirou a colocá-lo em um repositório Git e enviá-lo para o GitHub: dirhistory .
Basicamente, é um daemon que coleta alterações de diretório de todos os seus shells e um programa Cdk que exibe o histórico e permite escolher qualquer diretório para o qual alternar (para que você não fique limitado a uma pilha). Acho isso realmente útil e vinculado ao Ctrl-PageUp, assim como o 4DOS. (Até fiz o patch do PuTTY para enviar o Ctrl-PageUp para o Bash.)
fonte
Para mim, pushd / popd / dirs é quase útil, mas falta. Então, criei um 'wrapper' em torno desses chamados 'navd', implementado como essencialmente um conjunto de 20 aliases. (Uma delas é realmente uma função.) O código está abaixo, mas aqui está uma breve explicação primeiro. (Uma coisa interessante sobre o "navd" e o trabalho nas máquinas de outras pessoas: existe uma forma de "não instalação" de executá-lo: Como uma opção de instalação, você pode simplesmente colar os comandos que implementam o "navd" no prompt do bash , e pela duração dessa sessão do bash para a máquina em que o navd funcionará. Isso dá uma pegada zero no sistema de arquivos, mas é uma instalação temporária. Coloque esses comandos no .bashrc para uma instalação "real", de curso.)
Recursos:
Qualquer um dos dezenove comandos navd <N> gira a pilha para que o diretório que se torna o diretório atual também seja exibido agora na frente da pilha. Valores <N> positivos encontram um dir contando da esquerda, com a indexação começando em zero. Valores <N> negativos encontram um dir contando a partir da DIREITA, com a indexação iniciando em -1. (Isso segue a convenção de como os índices de matriz podem ser usados em Java e outras linguagens.)
Nota: Qualquer comando "navd" exibe a mesma pilha que "pushd" e "dirs" usam - mas exibe SEM a entrada mais à esquerda que "dirs" exibiria (já que essa entrada não está realmente na pilha - é o diretório atual e com "dirs" que a entrada mais à esquerda muda se um comando cd for digitado). (O comando "cd <path>" não afeta nenhum comportamento do navd, mas certamente afeta o comportamento do pushd / dirs / popd. Além disso ... adoro usar "cd -" para voltar uma vez a um diretório do qual acabei de navegar e "cd -" também não afeta o comportamento do navd.)
Bônus: Pode haver mais 19 aliases que NÃO giram a pilha, mas apenas mudam de dir para o local indicado na pilha.
2º Bônus: "navh" mostra os comandos navd <caminho> do histórico, para carregar facilmente a pilha com recortar e colar. (Cada um é listado apenas uma vez, mesmo que esteja no histórico várias vezes, e a lista é classificada. Além disso, as entradas podem ser colocadas em um arquivo $ HOME / .navhignore para impedir que essas entradas exatas apareçam na lista navh.)
Três comportamentos principais:
Se você limpar a pilha e repetir um comando "navd <path>" específico, esse caminho continuará na pilha. É isso que eu quero e espero ... mas pushd não faz isso - coloca o diretório atual em que você está navegando AWAY FROM na pilha - então o efeito na pilha é variável (parece imprevisível) quando você repete o comando .
"navd <caminho>" não colocará o mesmo caminho na pilha duas vezes.
"navd <caminho>" se coloca no histórico de comandos com o caminho absoluto, mesmo que o caminho relativo tenha sido digitado para o comando.
Para mim, os três últimos comportamentos descritos tornam muito mais útil o uso de um comando "navd <path>" do histórico do que o uso de um "pushd <path>" do histórico. Eu realmente posso reutilizar a história para ir a lugares. E quando faço isso, não "estrago" a minha pilha.
Se você pode e deseja envolver seu cérebro em torno dele, pode alternar entre o uso de navd e pushd / dirs / popd. Ambos usam a mesma pilha; apenas com um estilo diferente. Por exemplo, use "popd" para remover itens da pilha "navd" ou use "dirs -c" para limpar a pilha navd.
Pense em pushd / dirs / popd como "como refazer meus passos?".
Pense no navd como "como eu seguro um conjunto de diretórios favoritos e alterno facilmente entre eles?".
Cole o seguinte em uma janela do terminal e você poderá começar imediatamente a usar o navd durante a sessão do terminal. Este é todo o código que existe para esse recurso.
Esses aliases são baseados em comandos "bash". Cuidado especial é tomado para preservar o comportamento normal de "cd -". (Na maioria das vezes eu uso "cd -" em vez de me preocupar com pushd ou navd - porque "cd -" é muito útil para voltar ao último "local" em que você estava, ou alternar entre apenas 2 locais, e funciona em qualquer lugar sem instalação.)
Esses comandos podem, é claro, ser colocados no arquivo .bashrc para uma instalação mais permanente deles.
fonte
Aqui está mais uma solução que você pode gostar. Eu escrevi isso depois de brincar com a solução por @cjm. Ele usa o comando dialog para criar um menu de tipo ncurses a partir da saída de dirs. A seleção de um item trará esse diretório para o topo da pilha e o CD nele. Isso tem o benefício sobre o dirhistory de fornecer a cada emulador de terminal seu próprio buffer de histórico de diretório e ser um pouco mais fácil de instalar.
Para instalar: Depois de criar o alias do cd para pushd, instale o diálogo e, em seguida, coloque esta função no seu bashrc:
Eu gosto disso um pouco melhor do que executar dirs -v e depois executar outro comando para exibir pop ou cd no diretório que desejo. Os menus de diálogo também podem ser altamente personalizados através do seu dialogrc.
Então, para responder sua pergunta, sim, acho que aliasing pushd to cd é uma ótima idéia. É improvável que você tenha problemas de estouro de buffer se estiver reinicializando sua máquina regularmente, pelo menos para atualizações. Embora eu tenha cuidado ao usar o cd ao criar scripts; O CD em um loop while pode causar problemas de estouro de buffer. Não sei ao certo o que controla o tamanho do buffer dirs / pushd.
fonte