Como eu automatizo a remoção de um symlink e adiciono um novo

0

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

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 é hospedado em um local central e usa links simbólicos para contornar problemas criados pelo trabalho de uma ramificação de recompra de subversão (ou qualquer outra coisa), já que o software depende de caminhos específicos para executar. Meu dilema é que eu tenho que alternar entre vários ramos e o tronco regularmente (várias vezes ao dia). Então, o que eu gostaria de fazer é, no mínimo, criar algum tipo de script que eu possa executar no terminal e inserir um exemplo de comando exclusivo:

./subchange trunk

ou

./subchange branch1

Eu não me importo de ter que codificar o material acima por pasta que eu preciso mudar, ou fazer um identificador único para cada um para tornar a minha vida um pouco mais fácil, mas não tenho certeza de como realmente criar um script para que eu possa usá-lo como um comando personalizado ou que tipo de script eu precisaria usar para funcionar no linux. Então, qualquer conselho / ajuda seria bom para mim neste momento.

    
por chris 21.08.2012 / 19:39

1 resposta

1

Se um script for executável e seu diretório pai estiver em $PATH , você poderá usá-lo como um comando. Por exemplo, você pode criar um script bash com os 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

Em seguida, você pode salvá-lo como um arquivo, subchange e 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 $PATH . Muitas vezes, a variável de ambiente $PATH é definida em um arquivo ~/.profile , ~/.bashrc , /etc/bashrc ou semelhante. Você pode adicionar seu diretório fazendo:

export PATH=/tech/scripts:$PATH

Se você adicionou isso a um arquivo de inicialização, precisará reiniciar o seu shell ou fazer a sua origem (por exemplo, source ~/.bashrc ). Agora você pode usar subchange na linha de comando e executará esses comandos. Para adicionar um argumento ao comando, você pode usar o operador $1 . No bash isso representa o primeiro argumento, portanto, se eu fizer subchange trunk , então $1 será trunk . Você pode 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 #! na parte superior do arquivo é chamado de shebang ( ela se move ... ela se move ... ). Para um script em um sistema unix, ele informa ao sistema qual binário executar os seguintes comandos. Neste caso, estamos especificando /bin/bash porque queremos executar este arquivo como comandos bash e o binário bash está em /bin . Isso poderia especificar outra linguagem e apontar para seu binário.

    
por 21.08.2012 / 19:50