W systemach Linux i produktach mających zastosowanie w tym środowisku np.: serwerach aplikacyjnych (jboss, weblogic, tomcat, apache itp) konfiguracja może być wykonywana bezpośrednio w odpowiednich plikach konfiguracyjnych. Często też może pojawiać się taka sytuacja by zmienić ścieżkę do konkretnej lokalizacji, która jest identyczna dla wielu ustawień i tym samym występuję wielokrotnie w danym pliku, może być to również dowolny inny określony daną frazą parametr. Możemy oczywiście zmienić skrupulatnie każde wystąpienie ręcznie przeszukując dokładnie cały plik ale jeżeli jesteśmy pewni, że zmiana ma dotyczyć wszystkich wpisów warto ułatwić sobie to zdanie przy pomocy skryptu, który zapewni że na 100% zmianie poddane zostaną wszystkie wystąpienia, a do tego wykona to błyskawicznie.
W celu zmiany ścieżki prowadzącej do danej lokalizacji można z powodzeniem wykorzystać narzędzie "sed" co wykonujemy następująco :
sed -e "s/\/jakas\/domena\//\/zmiana1\/zmiana2\//" -i plik.txt
Polecenie to spowoduje zmianę ścieżki /jakas/domena na /zmiana1/zmiana2 w pliku plik.txt dla wszystkich wystąpień frazy "jakas/domena.
Dla zmiany dowolnej frazy można użyć skryptu:
plik=$1
dozmiany=$2
zmienione=$3
#sprawdzenie czy zmienne sa puste ( -n oznacza jest puste )
until [ -n "$plik" -a -n "$dozmiany" -a -n "$zmienione" ]
do
echo -en "Podaj nazwe pliku do zmiany ... \r\n"
read plik
echo -en "Podaj co zmianiamy ... \r\n"
read dozmiany
echo -en "Na co zmieniamy... \r\n"
read zmienione
done
# powyzej wczytanie wartosci do zmiannych
echo -e "Robie kopie pliku \r\n"
cp $plik $plik"_$(date +%Y%m%d-%H%M%S)"
echo -e "Podana fraza wystepuje $(grep -o $dozmiany $plik | wc -l) razy \r\n"
echo -e "Dokonuje zmiany z \e[0;31m$dozmiany \e[0m na \e[0;32m$zmienione \e[0m \r\n"
sed -e "s!$dozmiany!$zmienione!g" -i "$plik"
Powyższy skrypt zamieni dowolnie wybraną frazę w wybranym pliku licząc ilość jej wystąpień prowadząc dialog w postaci mini kreatora zmiany. Skrypt tworzy również automatycznie kopię zapasową robioną po każdej zmianie dodając do nazwy pliku odpowiednia informacje tym kiedy dokładnie wprowadzono zmiany.
Można ewentualnie odpalic vim :%s/"tekst który chcemy zmienic"/"na jaki chcemy zmienic"/
OdpowiedzUsuń:)
Jestem pod wrażeniem. Bardzo ciekawie napisany artykuł.
OdpowiedzUsuń