Como faço para automatizar a remoção de um link simbólico e adicionar um novo?

Como faço para automatizar a remoção de um link simbólico e adicionar um novo?

Basicamente, quero criar um conjunto rápido de comandos para que eu possa digitar no terminal e fazer o seguinte:

cd /path/to/folder/of/symlink
sudo rm -f symlink
sudo ln -s /new/path/of/symlink
cd /new/path/of/symlink

Eu trabalho para uma empresa cujo software está hospedado em um local central e usa links simbólicos para solucionar problemas criados ao trabalhar em uma filial de repositório do Subversion (ou qualquer outra coisa), já que o software depende de caminhos específicos para ser executado. Meu dilema é que tenho que alternar regularmente entre vários galhos e o tronco (várias vezes ao dia). Então, o que eu gostaria de fazer é pelo menos criar algum tipo de script que eu possa executar no terminal e inserir um exemplo de comando exclusivo:

./subchange trunk

ou

./subchange branch1

Não me importo de ter que codificar o material acima por pasta para a qual preciso mudar, ou criar um identificador exclusivo para cada uma para tornar minha vida um pouco mais fácil, mas não tenho certeza de como criar um script para que eu posso usá-lo como um comando personalizado ou que tipo de script eu precisaria usar para funcionar no Linux. Portanto, qualquer conselho/ajuda seria bom para mim neste momento.

Responder1

Se um script for executável e seu diretório pai estiver em seu arquivo $PATH, você poderá usá-lo como um comando. Por exemplo, você pode criar um script bash a partir dos comandos mencionados:

#!/bin/bash

cd /path/to/folder/of/symlink
sudo rm -f symlink
sudo ln -s /new/path/of/symlink
cd /new/path/of/symlink

Então você pode salvá-lo como um arquivo subchangee torná-lo executável com chmod +x subchange. Eu tenho um diretório de scripts no meu sistema (por exemplo /tech/scripts) que adiciono ao meu arquivo $PATH. Muitas vezes, a variável $PATHde ambiente é definida em um arquivo ~/.profile, ou similar. Você pode adicionar seu diretório fazendo:~/.bashrc/etc/bashrc

export PATH=/tech/scripts:$PATH

Se você adicionou isso a um arquivo de inicialização, precisará reiniciar seu shell ou originá-lo (por exemplo, source ~/.bashrc). Agora você pode usar subchangena linha de comando e ele executará esses comandos. Para adicionar um argumento ao comando você pode usar o $1operador. No bash, isso representa o primeiro argumento, então, se eu fizer subchange trunkisso, $1será trunk. Você pode então adicionar isso ao seu script conforme necessário:

#!/bin/bash

cd /path/to/folder/of/symlink
sudo rm -f symlink
sudo ln -s /new/path/$1/symlink
cd /new/path/$1/symlink

O que #!está no topo do arquivo é chamado deShebang(ela se move... ela se move...). Para um script em um sistema unix, ele informa ao sistema em qual binário executar os seguintes comandos. Neste caso, estamos especificando /bin/bashporque queremos executar este arquivo como comandos bash e o binário bash está em /bin. Isso poderia especificar outro idioma e apontar para seu binário.

informação relacionada