Como fazer aliases para caminhos de arquivos?

1

Tenho muitas pastas na minha máquina, muitas dessas pastas têm mais pastas, mais pastas nessas pastas e assim por diante ... Agora, quando estou realizando determinadas operações cd e cp que faço todos os dias, como parte de um processo de backup ou algo, torna-se bastante irritante ter que digitar todo o caminho do arquivo para um arquivo ou local, mesmo com o recurso auto-correto TAB .

Então, o que eu acho que seria realmente útil é se eu pudesse criar um alias, como para um comando, mas em vez disso, para um caminho de arquivo. Isso é possível?

Aqui estão alguns exemplos de como gostaria que funcionasse:

  • Gostaria de poder atribuir ~/Documents/SectionA/Sub-folder65/SectionF-2 para igualar um alias como pandaPictures , para que eu possa usá-lo para fazer os seguintes tipos de coisas:

    cp pandaPictures/pic1.png ~/Pictures
    cd pandaPictures
    cd pandaPicture/Specials
    

    E também seria bom se o preenchimento automático de TAB funcionasse com os caminhos de arquivo quando eles incluíssem esses aliases de caminho de arquivo também.

  • Eu também gostaria de poder atribuir PandaImages/2016/Sector7 a um alias como safePandaImages , para que eu possa usá-lo para fazer os seguintes tipos de coisas:

    cp ~/Documents/Images/safePandaImages/panda.jpg ~/Pictures
    cd ~/Pictures/Photos/Images/Wallpaper/safePandaImages
    

Nos exemplos que dou acima, a segunda seção não é uma necessidade absoluta (onde o alias não é apenas no começo, mas também no meio e no final), se não for possível ou muito impraticável fazer. Embora, se for possível, eu não me importo que pareça o mesmo acima (por exemplo, se você tem que ter [] s em torno do alias ou algo assim, é claro que não é apenas um caminho de arquivo regular) .

Estou executando o Ubuntu GNOME 15.10 com o GNOME 3.18.

    
por muru 28.03.2016 / 22:26

2 respostas

5

Francamente, este é um trabalho para variáveis:

pandaPictures=~/Documents/SectionA/Sub-folder65/SectionF-2
cp "$pandaPictures"/pic1.png ~/Pictures
cd "$pandaPictures"
cd "$pandaPictures"/Specials

Ou:

safePandaImages=PandaImages/2016/Sector7
cp ~/Documents/Images/"$safePandaImages"/panda.jpg ~/Pictures
cd ~/Pictures/Photos/Images/Wallpaper/"$safePandaImages"

Bash não é inteligente o suficiente para completar com o conteúdo das variáveis, mas o zsh pode:

$ foo=/usr   
$ cp $foo/  # press Tab
bin/      include/  lib/      lib32/    lib64@    local/    sbin@     share/    src/

Com o bash, você pode obtê-lo primeiro para expandir todas as variáveis, alias, substituição de comandos, etc., usando Ctrl Alt E e então use a conclusão da tabulação:

$ foo=/usr
$ cp $foo # press Ctrl-Alt-E
$ cp /usr

Tudo isso dito, se você está fazendo isso regularmente, script . Faça um script. Adicione-o ao crontab. Esqueça isso.

    
por muru 28.03.2016 / 22:34
4

Variáveis são provavelmente a melhor solução, mas você também pode criar links simbólicos que realizariam a mesma coisa, pelo menos no primeiro caso. O benefício é o autocompletar fácil.

ln -s ~/Documents/SectionA/Sub-folder65/SectionF-2 ~/pandaPictures
cp ~/pandaPictures/pic1.png ~/Pictures
cd ~/pandaPictures 
cd ~/pandaPictures/Specials
    
por wjandrea 28.03.2016 / 22:49