Se você usar o zsh como shell, basta digitar cd 1.0.8 2.0.1
.
Não tenho certeza se é possível, mas parece que me lembro dos meus velhos tempos usando o AIX, era possível mudar meu caminho apenas dizendo qual parte do caminho precisava ser substituída por outra coisa. Por exemplo, digamos que eu tenha dois caminhos:
/etc/application-2.0.1/options/default
e
/etc/application-1.0.8/options/default
que eu poderia mudar da pasta 1 para 2 usando um comando como
cd /2.0.1/1.0.8 /
que substituiria, no caminho, a string 2.0.1
to 1.0.8
. Obviamente, isso não funciona para mim agora. Mas há uma maneira de fazer isso?
Isso deve funcionar no bash no Ubuntu 10.04: cd ${PWD/old/new}
. Basicamente, isso substitui a primeira ocorrência de old
no seu diretório de trabalho atual com new
. 2 exemplos abaixo.
ing02741@hoster:~$ cd /home/ing02741/Videos/
ing02741@hoster:~/Videos$ cd ${PWD/ing02741/koushik}
ing02741@hoster:/home/koushik/Videos$
ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1 dir-v2.2.2 dir-v3.0.7
ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1/ind dir-v2.2.2/ind dir-v3.0.7/ind
ing02741@hoster:~/src/cdtest$ cd dir-v1.0.1/ind/
ing02741@hoster:~/src/cdtest/dir-v1.0.1/ind$ cd ${PWD/1.0.1/2.2.2}
ing02741@hoster:~/src/cdtest/dir-v2.2.2/ind$
Emprestando a ideia de sepp2k acima, você poderia fazer uma função como essa
function mycd { cd ${PWD//} }
e, em seguida, use algo como mycd 2.0.1 1.0.8
para alternar.
Você provavelmente está se lembrando da expansão do histórico. Eu não sei o que estava disponível em seu shell no AIX, mas uma maneira de fazer isso no bash é ^2.0.1^1.0.8
.
A expansão do histórico é menos útil com shells como bash e zsh, que possuem uma poderosa edição de linha de comando. Você pode usar as teclas de seta para chamar comandos anteriores, e Alt + . para inserir a última palavra do comando anterior (pressione duas vezes para alcançar o comando antes e assim por diante) ).
Eu mesmo usei (e perdi) esse recurso. Depende de qual sabor e / ou lançamento do * nix você está usando. Se você usar o bash, aqui está uma maneira prática de estender o cd embutido para incluir essa funcionalidade. Coloque isso no seu .bashrc (ou para testar cole no seu bash shell e aperte enter).
function cd() { if [ $# -eq 2 ]; then builtin cd ${PWD//}; else builtin cd ; fi }
Se você é um fan do vi você pode habilitar o modo vi no seu shell (bash set -o vi por exemplo) e usar o modo de comando do vi ...
Ou você pode fazer uma expansão louca do histórico (testado em zsh, talvez também em bash):
$ cd /etc/application-1.0.8/options/default
cd: no such file or directory: /etc/application-1.0.8/options/default
$ !!:s/1.0.8/2.0.1/
cd /etc/application-2.0.1/options/default
cd: no such file or directory: /etc/application-2.0.1/options/default
cd 'pwd | sed 's/2\.0\.1/1\.0\.8/''
No entanto isso não é muito bonito. Você pode muito bem, colocando-o em uma função:
function mycd { cd 'pwd | sed s' }
E, em seguida, chamando assim:
mycd '/2\.0\.1/1.0.8/'
Você ainda precisa escapar dos pontos, mas eu tenho certeza que isso pode ser contornado também com um pouco de pensamento.
^2.0.1^1.0.8
O comando acima troca 2.0.1 para 1.0.8 no último comando, seu trabalho no bash
Para garantir que -P|-L|-
work use o seguinte:
function cd () {
typeset arg=
case in -|-L|-P) arg= ; shift ;; esac
[ $# -gt 1 ] && {
builtin cd $arg "${PWD//}"
} || {
builtin cd $arg "$@"
}
}
Tags bash