Se eu estiver dentro ~/blob
e tiver um arquivo~/blob/a_long_directory_name/c/x.x
eu posso digitar
mv blob/a_long_directory_name/c/x.x blob/a_long_directory_name/even_more/y.y
Existe algum atalho pelo qual eu possa digitar algo mais curto que use o caminho do diretório no primeiro parâmetro (embora não seja o meu diretório atual), por exemplo
mv blob/a_long_directory_name/c/x.x $same_dir/y.y
onde algo como $same_dir
apontaria para o dir do param 1
command-line
rename
cp
Michael Durrant
fonte
fonte
even_more
caminho relativo ... #Com o bash, você pode usar a expansão de chaves
fonte
Você pode usar os recursos de substituição de texto do seu shell. Em
bash
, você poderia usar um animal como:Para dividir:
!#
é a linha atual digitada até agora:$
pede para escolher a última palavra (substitua por um númeron
para selecionar an
'palavra) da string em consideração (!#
neste caso). A última palavra da linha digitada até agora seria a palavra anterior.:gs^xx^yy
faz ag
substituição textual global ( ) (s
) na palavra resultante, substituindo 'xx' por 'yy'.^
é apenas um delimitador para os
comando permitir o uso/
em seus padrões.Esse método é um pouco mais geral, pois permite substituir qualquer parte do caminho ('xx') por qualquer outra palavra ('yy').
Finalmente, como em qualquer manipulação de histórico, é bom ter as opções de shell apropriadas definidas (por exemplo, in
~/.bashrc
). Nesse casoexibirá a linha editada depois que você pressionar retornar, para que você ainda possa editá-la e verificar se há erros.
Por que você usaria uma construção como essa, não tenho certeza, mas funciona neste caso.
fonte
c/x.x
porevenmore/y.y
manter o prefixo do caminho original.$PWD
). Claro, talvez não seja o mais elegante, mas aponta para o fato de que o shell possui substituições de texto e designadores de palavras, que alguns usuários ainda podem achar úteis para pesquisar.