Como posso cp arquivos diferentes para um alias que está mudando

0

Eu gostaria de poder substituir

cp x.x ~/some/long/directory/that/is/deeply/nested/

com

cp x.x s1

em que s1 é um alias que aponta para /some/long/directory/that/is/deeply/nested/

No entanto, o destino muda com frequência.
Hoje é

/some/long/directory/that/is/deeply/nested/

dia seguinte é

/some/long/directory/less/deep

dia seguinte é

/some/other/directory/less/deep

Dado que está mudando o tempo todo, existe um alias (ou mais provável função? como eu penso sobre isso), existe uma maneira eu posso fazer um cp com o destino sendo um alias 'interpretado'

algo como

cp x.x 's'

O arquivo 'source' também tem muitos valores diferentes. Eu não quero um alias que apenas aponta para um (ou uma lista de alguns) local ou é para 1 (ou uma lista de alguns) arquivo de origem. Eu quero que seja para o que o alias aponta naquele momento e o nome do arquivo seria fornecido ao invocá-lo.

A origem e o destino podem ser qualquer um dos milhares de valores.

    
por Michael Durrant 03.05.2014 / 14:22

2 respostas

4

Variável da shell

Você pode fazer isso adicionando os diretórios que deseja colocar em s1 em variáveis da seguinte forma:

s1=/some/long/directory/that/is/deeply/nested/

Você pode acessá-los assim:

$ cp x.x $s1

Link simbólico

Você poderia manter um link em seu diretório inicial que apenas aponta para o longo diretório de hoje.

$ ln /some/long/directory/that/is/deeply/nested/ $HOME/shortlink
$ cp x.x $HOME/shortlink

Ferramentas de marcação de diretório

Veja este Q & Um título: Navegação de diretório rápido no terminal . Ferramentas como autojump ou O xd - eXtra fast Directory changer , também pode ser usado para "marcar" diretórios usados com freqüência, para que você possa facilmente alterá-los sem precisar digitar caminhos longos.

Referências

por 03.05.2014 / 14:29
0

Que tal algo como:

#!/bin/bash
mdhf="/home/MichaelDurrant/linq
params="$@"
[[ $params = *-d* ]] && nufile=${params##*\-f}
[[ $nufile ]] && [ -L "$mdhf" ] && rm $mdhf 
[[ $nufile ]] && ln -s $nufile $mdhf 
for i in "$@"; do
[[ $i = '-d' ]] && break 
cp -v $i $mdhf
done

O uso seria mdcp filename -d directory . Você só usaria o parâmetro -d se estivesse alterando o diretório atual de softlink.

    
por 04.05.2014 / 04:23

Tags