Navegação rápida de diretório no shell bash

119

Gostaria de alternar frequentemente entre diretórios que estão em caminhos totalmente independentes, por exemplo, /Project/Warnest/docs/e ~/Dropbox/Projects/ds/test/.

Mas não quero digitar cd /[full-path]/o tempo todo. Existem comandos de atalho para mudar para diretórios trabalhados anteriormente?

Uma solução em que pude pensar é adicionar variáveis ​​de ambiente ao meu bash .profilepara os diretórios usados ​​com freqüência e cda eles usando essas variáveis.

Mas existe alguma outra solução para isso?

saiy2k
fonte
Links simbólicos também podem ser úteis para isso. pt.wikipedia.org/wiki/…
user606723

Respostas:

135

Se você está apenas alternando entre dois diretórios, pode usar cd -para ir e voltar.

Chris Card
fonte
13
Como isso me escapou por tanto tempo é um mistério. Muito obrigado por esta excelente dica.
Sr. Shickadance,
3
+1 Certamente um dos meus favoritos e um que de alguma forma muitos especialistas 'perderam'.
precisa saber é o seguinte
62

Há uma variável de shell CDPATHem bashe kshe cdpathem zsh:

CDPATH    The search path for the cd command. This is a colon-separated
          list of directories in which the shell looks for destination
          directories specified by the cd command.

Então você pode definir em seu ~ / .bashrc:

export CDPATH=/Project/Warnest:~/Dropbox/Projects/ds

Em seguida, cd docse cd testvai levá-lo para o primeiro encontrado tal diretório. (Quero dizer, mesmo que um diretório com o mesmo nome exista no diretório atual, CDPATHainda será consultado. Se houver CDPATHmais diretórios com subdiretórios com o nome, o primeiro será usado.)

homem a trabalhar
fonte
16
Deve-se mencionar que, em geral, você deseja que a primeira entrada $CDPATHseja .(uma entrada explícita, ou seja, :também funciona). Caso contrário, você terminará com o comportamento estranho, em que os CDPATHdirs têm precedência sobre os diretórios no diretório de trabalho atual, o que provavelmente não deseja.
jw013
4
Eu faço praticamente a mesma coisa, mas sem o export. Dessa forma, CDPATHnão é exportado para scripts com efeitos potencialmente estranhos ou prejudiciais. Veja aqui para mais discussões e exemplos.
Telêmaco
"bash e ksh e CDPATH em zsh" ... e em tcsh (apenas responder a uma pergunta com base em que, ao longo de Super User e encontrei este, enquanto procura respostas semelhantes na SE).
Hennes
Isso é especificado pelo POSIX, eu acho. Pelo menos, o POSIX cdrefere-se a ele.
mikeserv
48

Outra coisa que você pode tentar é uma ferramenta chamada autojump . Ele mantém um banco de dados de chamadas para seu alias ( jpor padrão) e tenta tomar decisões inteligentes sobre onde você deseja ir. Por exemplo, se você digitar com freqüência:

j ~/Pictures

Você pode usar o seguinte para chegar lá em uma pitada:

j Pic

Está disponível no Debian e no Ubuntu e está incluído por usuário ~/.bashrcou ~/.zshrcpor padrão.

Kyle Smith
fonte
5
O Autojump é provavelmente a melhor ferramenta para isso, leva um pouco de tempo para criar o banco de dados de diretórios comuns, mas quando isso acontecer, acho que você descobrirá que não pode viver sem ele. Sei que toda vez que estou no computador de outra pessoa me sinto aleijada.
quodlibetor
1
obrigado adoro esta ferramenta! E embora cd -seja útil saber se você ainda não o conhece, acho que essa é uma solução muito melhor do que a principal resposta atual.
Utilizador
Instalado em todo o sistema em quais sistemas?
Ctrl-alt-delor
1
@richard Está disponível como um pacote (por exemplo, apt-get install autojumpno Ubuntu, mas também para muitos outros, conforme documentado em sua página) para instalação em todo o sistema, mas cada usuário precisa carregá-lo em seu ambiente shell para que possa substituir o cd para acompanhar onde você está indo
nealmcb
É importante dizer que source /usr/share/autojump/autojump.shdeve ser adicionado ao ~ / .bashrc para que o autojump funcione .
Pablo #
39

Se for um número pequeno de diretórios, você pode usar pushdpara alternar entre eles:

# starting point
$ pwd
/Project/Warnest/docs
# add second dir and change to it
$ pushd ~/Dropbox/Projects/ds/test
~/Dropbox/Projects/ds/test /Project/Warnest/docs
# prove we're in the right place
$ pwd
~/Dropbox/Projects/ds/test
# swap directories
$ pushd
/Project/Warnest/docs ~/Dropbox/Projects/ds/test

ao contrário cd -, você pode usar isso com mais de dois diretórios


Seguindo a sugestão de Noach, agora estou usando isso:

function pd()
{
    if [[ $# -ge 1 ]];
    then
        choice="$1"
    else
        dirs -v
        echo -n "? "
        read choice
    fi
    if [[ -n $choice ]];
    then
        declare -i cnum="$choice"
        if [[ $cnum != $choice ]];
        then #choice is not numeric
            choice=$(dirs -v | grep $choice | tail -1 | awk '{print $1}')
            cnum="$choice"
            if [[ -z $choice || $cnum != $choice ]];
            then
                echo "$choice not found"
                return
            fi
        fi
        choice="+$choice"
    fi
    pushd $choice
}

exemplo de uso:

# same as pushd +1
$ pd 1

# show a prompt, choose by number
$ pd
 0 ~/Dropbox/Projects/ds/test
 1 /Project/Warnest/docs
 2 /tmp
? 2
/tmp ~/Dropbox/Projects/ds/test /Project/Warnest/docs

# or choose by substring match
$ pd
 0 /tmp
 1 ~/Dropbox/Projects/ds/test
 2 /Project/Warnest/docs
? doc
/Project/Warnest/docs /tmp ~/Dropbox/Projects/ds/test

# substring without prompt
$ pd test
~/Dropbox/Projects/ds/test /Project/Warnest/docs /tmp

etc. Obviamente, isso é apenas para rodar na pilha e não suporta a adição de novos caminhos - talvez eu deva renomeá-lo.

Sem utilidade
fonte
6
Ooh, eu sabia sobre pushde popdpara passagem, mas não que pushd poderia girar o que tem sido utilizado até agora ...
Izkata
14

Eu uso aliasno bashrc para fazer esses CDs.
tal como:

alias wdoc='cd ~/Project/Warnest/docs'
alias dstest='cd ~/Dropbox/Projects/ds/test'
Felix Yan
fonte
O bashrc é um arquivo como .profile? em que eu preciso adicionar essas linhas?
saiy2k
~/.bashrcou /etc/bash.bashrc. Eu não uso .profileantes, então não sei a relação entre eles :-(
Felix Yan
scripts bashrc iniciará toda vez que você abrir o terminal. perfil com inicialização.
adicionado essas linhas para o meu .bash_profilee ele funciona muito bem .. thx :)
saiy2k
Tenho várias pastas de projeto específicas para as quais frequento regularmente, essa é a maneira mais fácil de configurá-las e mantê-las. Além disso, para mim, resulta no menor número absoluto de caracteres digitados de todas as soluções aqui. BEIJO! :-)
moodboom
11

Encontrei um script (normalmente chamado acd_funch.sh) que resolveu esse problema para mim. Com isso, você pode digitar cd --para ver os últimos 10 diretórios que você usou. Será algo como isto:

0  ~/Documents/onedir
1  ~/Music/anotherdir
2  ~/Music/thirddir
3  ~/etc/etc

Para ir ~/Music/thirddirapenas digitarcd -2

Referências

NOTA: Este script foi publicado originalmente em um artigo da gazeta do linux que está disponível aqui: acd_func.sh - estende o CD do bash para manter, exibir e acessar o histórico dos nomes de diretórios visitados .

reitor
fonte
O mesmo script também foi publicado no Linux Gazette, edição # 109, dezembro de 2004 .
Serge Stroobandt
@ Dean O link vai para um videoclipe e diz que o Geocities foi fechado.
somethingSomething
1
@somethingSomething Adicionados links alternativos.
Dean
história grep cd
user2180794
10

Experimente a cdable_varsopção de shell no bash. Você liga com shopt -s cdable_vars.

Então você precisa definir suas variáveis export dir1=/some/path. e cd dir1, finalmente , etc. Você pode colocá-lo no seu ~/.bashrcpara que ele grude.

Wojtek Rzepala
fonte
10

Use "pushd -n " (assumindo que você use o bash).

Adicione ao seu ~ / .bashrc:

pushd -n /Project/Warnest/docs/
pushd -n ~/Dropbox/Projects/ds/test/

então,

cd ~ é sua casa

cd ~1 é ~/Dropbox/Projects/ds/test/

cd ~2 é /Project/Warnest/docs/

Você pode usar ~1, ~2etc, exatamente da mesma maneira que ~.

Eelvex
fonte
7

Há muitas boas sugestões aqui. Qual usar dependerá se você tem uma pequena lista fixa de diretórios entre os quais alterna ou se está procurando uma solução mais genérica.

Se for uma pequena lista fixa, configurar aliases simples (como Felix Yan sugeriu) seria mais fácil de usar.

Se você está procurando uma solução mais generalizada (ou seja, muitos diretórios diferentes, mudando com o tempo), eu usaria pushd e popd (como sugerido por Useless). Pessoalmente, acho difícil usar o pushd / popd padrão, especialmente quando você começa a alternar entre várias pastas; no entanto, escrevi alguns ajustes que tornam muito mais fácil para mim. Adicione o seguinte ao seu bashrc:

alias dirs='dirs -v'
pd () 
{ 
    if [ "$1" ]; then
        pushd "${1/#[0-9]*/+$1}";
    else
        pushd;
    fi > /dev/null
}
  • Use pd(como uma forma mais curta de pushd) para pular para uma nova pasta, lembrando onde você estava.
  • Use dirspara ver a lista de diretórios salvos.
  • Use pd 3para pular para o diretório número 3.

Exemplo de uso:

$ PS1='\w\$ '   ## just for demo purposes
~$ pd ~/Documents/data
~/Documents/data$ pd ../spec
~/Documents/spec$ pd ~/Dropbox/Public/
~/Dropbox/Public$ pd /tmp
/tmp$ pd /etc/defaults/
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 2
~/Dropbox/Public$ dirs
 0  ~/Dropbox/Public
 1  ~/Documents/spec
 2  ~/Documents/data
 3  ~
 4  /etc/defaults
 5  /tmp
~/Dropbox/Public$ pd 4
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 3
~/Documents/spec$ popd
~/Documents/data ~ /etc/defaults /tmp ~/Dropbox/Public
~/Documents/data$ 
Noach
fonte
6

O seguinte pareceu funcionar no único caso em que o testei e você pode simplesmente soltar os nomes de diretório como links simbólicos em ~ / Bookmarks:

mkdir "$HOME/Bookmarks"
ln -s /tmp "$HOME/Bookmarks/testdir"

function ccd() { cd $(readlink "$HOME/Bookmarks/$1") ; }

ccd testdir && echo $PWD
# gives /tmp
Ulrich Schwarz
fonte
que função ccd () precisa digitar no prompt do terminal ou em algum outro lugar? você pode explicar?
saiy2k
1
@ saiy2k: desculpe, sim. A functionlinha entra no seu .bashrc (você pode digitá-lo no seu terminal para testar, mas desaparecerá quando você fechar essa janela), as linhas antes de configurar o caso de teste de "testdir" se tornando um nome /tmpe o última linha é o teste para ver se funciona.
Ulrich Schwarz
6

Você poderia fazer pior do que tentar j2 .

No README:

Gaste muito tempo gravando uma árvore de diretórios complexa?

j mantém o controle de onde você esteve e quanto tempo passou lá e fornece uma maneira conveniente de pular para os diretórios que você realmente usa.

Eu o uso extensivamente e recomendo.

phildobbin
fonte
5

Eu aconselho usar o zsh , esse shell como uma conclusão muito boa do TAB para diretórios, arquivos e até opções para a maioria dos programas CLI.

Eu uso esse shell há anos e perdi a funcionalidade se ela desaparecesse. Criar scripts para o zsh também é muito divertido, com um grande número de one-liners que podem ajudá-lo todos os dias.

polemon
fonte
Não é necessário alterar para zsh para concluir a TAB, pois o bash tem tudo a mesma coisa. Para outras funcionalidades, talvez, mas não para isso.
Peer Stritzinger
1
O @PeerStritzinger Bash introduziu esse tipo de funcionalidade no BASH 4.0, mas comparado ao zsh, ele ainda está muito atrasado. Dizer "tudo a mesma coisa" certamente está incorreto.
polemon 22/02
Bem, o zsh é certamente o übershell, mas apenas para a conclusão da guia, não há necessidade de alterar (a pergunta foi feita para o bash). Além do bash 4.0 foi introduzida cerca de 3 anos ...
Intercâmbio Stritzinger
5

Na minha experiência, a maior aceleração na navegação em um shell é usar sua funcionalidade de pesquisa de histórico. No Bash, você pode pesquisar para trás no seu histórico de comandos pressionando Ctrl+ Re digitando algum padrão. Esse padrão é comparado com entradas anteriores no seu histórico - sejam cdcomandos ou outras operações - e sugestões são feitas enquanto você digita. Basta pressionar enter para executar o comando sugerido novamente. Isso é chamado reverse-search-historyno Bash e eu adoro isso. Isso economiza muitas teclas e poupa minha memória interna.

É uma coisa boa porque você só precisa se lembrar de uma parte menor de um comando, como Dropou Wapara distinguir entre as duas entradas do histórico cd ~/Dropbox/Projects/ds/test/e cd /Project/Warnest/docs/.


fonte
5

Eu também uso esses aliases (adicione-os a ~ / .bashrc):

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'

É muito mais rápido ir para o diretório superior com eles (mas apenas resolve metade da navegação).

reimai
fonte
1
Esses são pseudônimos úteis, mas não tenho certeza absoluta de que eles corresponderão às necessidades do OP. Você pode considerar expandir sua resposta para sugerir como elas podem ser diretamente úteis para a questão do OP.
precisa saber é o seguinte
4

se você estiver usando zsh:

  • você não precisa digitar cd, basta digitar o caminho do diretório ( /foo/bar/baz<Enter>igual a cd /foo/bar/baz<Enter>)

    requer que a auto_cdopção seja definida

  • você pode expandir caminhos abreviados com a Tabtecla ( /u/sh/pi<Tab>expande para /usr/share/pixmaps; funciona também para nomes de arquivos)
Andrei Dziahel
fonte
3
O Bash 4 ganhou shopt -s autocd, por isso não é mais um benefício apenas para o zsh.
Gilles
4

Existe uma ferramenta bastante agradável para alterações rápidas de diretório:

xd - Trocador de diretório eXtra fast http://xd-home.sourceforge.net/xdman.html

um pouco estranho é que você precisa mapeá-lo no perfil bash ou similar, pois ele apenas gera o diretório

# function to do `cd` using `xd`
# -g turns generalized directory search command processing on
# which improves the whole thing a bit
f() 
{
        cd `/usr/bin/xd -g $*`
}

você pode fazer coisas como:

# change to /var/log/a* (gives you a list to choose from)    
f vla
# to skip the list and go directly to /var/log/apache2
f vlapach
nulo
fonte
Altere a função para f() { cd "$(xd -g "$@")"; }para manipular adequadamente diretórios e espaços espaçados nos argumentos para xd(você provavelmente não precisa do caminho). Se você nunca usar xdde outra maneira, poderá fazer alternativamente xd() { cd "$(command xd -g "$@")"; }(alternativamente, usar /usr/bin/xdno lugar de command xd- você sempre pode executar command xd …se precisar ignorá-lo).
Adam Katz
4

Você nunca deve digitar o caminho completo no shell de qualquer maneira. Você sempre pode usar:

soffice /P*/W*/*/mydoc*

ao invés de

soffice /Project/Warnest/docs/mydoc.odt
gena2x
fonte
1
É como preencher guias, mas pior em todos os sentidos
Michael Mrozek
Você não pode fazer isso com a conclusão da guia com a quantidade euqal de pressionamento de tecla, a menos que o Projeto seja apenas um arquivo começando com P, etc. Além disso, você deve aguardar a conclusão de cada vez, usando * você não precisa esperar.
gena2x
Eu acho que você tem isso ao contrário - você não pode fazer, a P*menos que o Project seja o único arquivo que começa com P. A conclusão da guia pode alternar (por padrão, na maioria dos shells; você precisa religar a guia menu-completeno bash) e resolver instantaneamente em casos simples assim, não há espera por isso
Michael Mrozek
Em relação a 'você não pode fazê-lo' - você pode, tente, perdendo o ponto inteiro se achar que não pode. Tente echo / u * / b * / g ++
gena2x
1
Entendo o que você quer dizer, é mais rápido desde que você tenha certeza de que digitou um caminho inequívoco, mas algo como /P*/W*/*/mydoc*parece que funcionaria bem até que um dia você criou outro arquivo que corresponde a essa glob e de repente você termina abrir ambos de uma só vez. /u*/*/g++é impressionantemente poucos caracteres, mas espero que nada mais em nenhuma das subpastas de nenhuma das minhas pastas raiz iniciadas com useja nomeado g++. (Como um bom compromisso, em algumas conchas você pode usar a guia para expandir os globos no local à medida que avança)
Michael Mrozek
3

Também existe OLDPWDuma variável de ambiente que, de acordo com a IEEE 1003.1 (POSIX), deve ser atualizada com o diretório ativo anterior sempre que cdmudar o diretório ativo (para os curiosos, linha 80244 da página 2506 da IEEE 1003.1-2008).

njsg
fonte
3

Há também um aplicativo "wcd" criado especificamente para isso (também portado para o cygwin, já que estou nisso). Você pode criar atalhos, favoritos de diretórios com ele. Também suporta curingas. A leitura da página de manual e dos documentos em / usr / share / wcd deve ajudar bastante.

http://manpages.ubuntu.com/manpages/hardy/man7/wcd.7.html

sam
fonte
3

cdargs é a ferramenta mais eficiente para marcar um diretório como favorito: http://www.youtube.com/watch?v=uWB2FIQlzZg

Emon
fonte
Este produto está associado a você?
Kazark 27/02
Obrigado por me apontar para cdargs. Simplesmente sudo apt-get cdargsno ubuntu. BTW, o vídeo do youtube é muito ruim, mas a ferramenta é ótima.
DavidG 21/07
3

Experimente o fastcd ( https://github.com/frazenshtein/fastcd ) Ele define o gancho que registra os diretórios visitados do bash. E define o script como alias "j", que mostra os últimos diretórios visitados, com a capacidade de fazer o cd rapidamente (comece a digitar para filtrar os diretórios). A modificação de .bashrc é necessária para criar o alias "j".

Obtendo a ferramenta

cd ~; mkdir Soft; cd Soft
git clone https://github.com/frazenshtein/fastcd

Instale os módulos necessários

pip install --user urwid

Crie o arquivo set.sh no seu bashrc

echo -e "\nsource /home/$USER/Soft/fastcd/set.sh\n" >> ~/.bashrc

E atualizar o bashrc

source ~/.bashrc

Em seguida, basta digitar "j" no console

Sam Toliman
fonte
Como é que isso funciona? Se houver alias, o que essa ferramenta faz por você que você não pode fazer editando manualmente .bashrc?
G-Man
Ele inicia o daemon que registra os diretórios visitados em ~ / .fastcd para shells lançados (bash). "j" lança a ferramenta que mostra os últimos diretórios visitados, com a capacidade de fazer o cd rapidamente. A modificação de .bashrc é necessária para criar o alias "j". Você pode ver o código-fonte para mais informações, eu acho
Sam Toliman
Obrigado pela sua resposta rápida. Esse é o tipo de informação que deve estar na resposta. Por favor edite sua resposta para incluir esta informação.
G-Man
3

Eu tive a mesma pergunta e encontrei esta resposta pela primeira vez . Instalei o utilitário z ( https://github.com/rupa/z ).

Este é exatamente o que você procura, porque z aprende com seus comandos cd, e mantém o controle dos diretórios de acordo com o frecency princípio (frequente e recente). Então, depois de executar os dois comandos cd uma vez, você pode executar algo como:

z docs
z ds

para pular para /Project/Warnest/docs/e ~/Dropbox/Projects/ds/test/respectivamente. Os argumentos para z são expressões regulares, portanto, você nem precisa digitar um nome de pasta completo.

saroele
fonte
2

Eu tenho usado meu próprio utilitário cdhist para gerenciar isso por muitos anos. Alias ​​seu comando cd e automaticamente mantém uma pilha de diretórios.

marcador
fonte
2

Você pode usar exportpara atribuir os caminhos do diretório a variáveis ​​e depois referenciá-las.

export dir1=/Project/Warnest/docs/
export dir2= ~/Dropbox/Projects/ds/test/
cd $dir1
cd $dir2
Fahad Naeem
fonte
Sim, isso é suficiente para alguns dirs favoritos. Não há necessidade de instalar outros utilitários. Basta colocar as exportdeclarações na sua ~/.bashrce elas sempre estarão disponíveis.
21818 wisbucky
1

Algumas sugestões aqui:

Ideia mais direta, adicionarei o alias no arquivo .profile

vi ~/.profile
alias dir1='cd /myhome/onedir'
alias dir2='cd /jimmy/anotherdir'

Então use $ dir1 ou dir2, pode cd

Se você estiver sempre alternando apenas em dois diretórios. usando cd -alternará entre eles.

Dan
fonte
1

A solução que eu uso para essa situação é screen. Tela inicial, crie uma janela para cada diretório C-a ce navegue até lá. Alterne entre janelas / diretórios com C-a nou C-a p. Nomeie as janelas com C-a A. Em seguida, você pode exibir uma lista de suas janelas C-a "e navegar usando o número ou o nome da janela. Como é screen, você pode se desconectar da sessão, economizando seu espaço de trabalho e reconectá-lo posteriormente com a mesma configuração.

David R. McWilliams
fonte
1

Parece que você precisa basicamente de um arquivo de projeto para o seu fluxo de trabalho. Com diretórios que pertencem à sua atividade, como em um IDE de programação. Tente Zsh Navigation Tools e a ferramenta n-cdlá. Isso permitirá que você navegue pelas últimas pastas visitadas e também defina um Hotlistcom os diretórios de sua escolha:

n-cd

n-cd pode ser associado a uma combinação de teclas com:

zle -N znt-cd-widget

bindkey "^ T" znt-cd-widget

Adam Lisson
fonte
1

TL; DR

  1. Use um Fishpara shell interativo que capacitá-lo imediatamente ( fish> zsh> bash).
  2. Use POSIX/ Bashpara execução de scripts que é a sintaxe mais amplamente suportado ( POSIX> Bash> Zsh> Fish).

Cartuchos

Depois de testar diferentes shells, aqui está o meu feedback (em ordem de teste / adoção):

  • Bash:
    • preenchimento automático: básico;
    • expansão do caminho: não;
    • script: excelente.
  • Zsh+ oh-my-zsh:
    • preenchimento automático: bom (alternando);
    • expansão do caminho: sim ( cd /e/x1cd /etc/X11/);
    • script: bom.
  • Fish+ oh-my-fish(atual) é o melhor pronto para uso:
    • preenchimento automático: opções nativas e suportadas;
    • expansão de caminho: sim;
    • scripts: muita diferença em relação ao POSIX compatível.

Use aliases significativos

Cada shell pode ser expandido usando functione alias, aqui estão os que eu utilizo relacionados ao seu problema (compatível com POSIX):

back () {  # go to previous visited directory
        cd - || exit
}

up () {  # go to parent directory
        cd ..|| exit
}

Existem coisas básicas, mas realmente significativas, fáceis de lembrar e de preenchimento automático.

Conheça o seu shell

Configure CDPATHpara adicionar os diretórios mais usados ​​(por exemplo ~/projects/, /etc/init.d/) para que você possa pular rapidamente para eles.

Veja resposta de manatwork para mais detalhes sobre mroeCDPATH .

Hangout e leitura

Édouard Lopez
fonte
Quando uma função shell chama exit, você sai do shell interativo. Esses "aliases significativos" poderiam ser alias back='cd -'e alias up='cd ..'- mas não se preocupe, esses comandos nunca retornarão falsos (nenhum diretório anterior? Envia você para casa! Já está na raiz? É um não-operacional!) E, portanto, você nunca sai . Considere também alias back='cd $OLDPWD'(observe as aspas simples), pois ele não terá saída ( cd -informa para onde está enviando, o que provavelmente não é necessário, pois o prompt contém essas informações)
Adam Katz
1

ancé uma ferramenta de linha cmd (abreviação de anchor), que mantém os favoritos dos diretórios. (até agora testado apenas com o bash)

No seu caso:

anc a /Project/Warnest/docs/ ~/Dropbox/Projects/ds/test/

isso adiciona os dois diretórios à lista âncora (pense nos favoritos)

Agora, se você quiser pular para /Project/Warnest/docs/qualquer lugar no seu sistema, digite:

anc Warn

e se você quiser pular para ~/Dropbox/Projects/ds/test/digitar:

anc ds test

Além de combinar o texto com os caminhos marcados, o anc tem muitas outras maneiras convenientes de navegar pelos diretórios.

anc i

inicia o modo interativo, que lista todos os favoritos por número, então tudo que você precisa digitar é o número

Se você digitar:

anc Pro[TAB]

uma lista que corresponde a todos os favoritos (no seu caso, ambos os favoritos) é exibida e você pode selecionar usando as teclas de seta. Essa é uma maneira muito rápida e intuitiva.

Obtenha anc na página do github do projeto: https://github.com/tobimensch/anc

Há também um README com exemplo de uso.

Divulgação completa: sou o autor deste script. Espero que algumas pessoas achem útil.

tobimensch
fonte