Poczuj szmoc basha
Przy okazji kursu nabrałem wielkiej ochoty na lepsze poznanie basha. Nie chodzi mi jednak o duperele, ale o pewne aspekty ułatwiające życie przeciętnego zjadacz chleba w płynie.
Prowadziłem już od dłuższego czasu obserwacje poszukując najbardziej przydatnych skryptów i najczęściej używanych poleceń. Mając tą listę mogę przygotować odpowiednie pliki .bashrc i pliki ze skryptami.
Lista jest krótka, ale tego typu konstrukcji używam najwięcej.
Aliasy w ~/.bashrc
Aliasy to skrótowce dla komend. Używamy ich zazwyczaj gdy to co chcemy zrobić nie wymaga parametrów. Mogą to też być krótkie inlinowe skrypty, wykonujące kilka operacji na kolejnych danych.
pokaż mi wszystko
Na początek dwa przydatne polecenia:
# Pokazuje listę plików i katalogów w aktualnym katalogu
alias ll='ls -lA'
# Pokazuje tylko katalogi
alias lld='ls -lAd'
Chyba najczęściej wykorzystywane.
czyszczenie
Szybkie resetowanie konsoli:
# to samo co clear
alias c='clear'
Czasami przydatne. Czasami nie. Co kto lubi.
Skrypty
Kilka krótkich skryptów umieszczonych w /usr/local/bin/
seek’n’destory
#!/bin/bash
for F in `find . -name $1`
do
rm -rf $F
done
Skrypt odnajduje pliki pasujące do wzorca, a następnie je usuwa. Taki hitman. Bardzo przydatne jeżeli należymy do ludzi, którzy problemy z aplikacjami rozwiązują przez wysłanie w /dev/null losowego pliku konfiguracyjnego.
backup za pomocą rsync
Skrypt trochę bardziej skomplikowany, bo wymaga by uruchamiał go tylko root.
#!/bin/bash
# czy mamy do czynienia z ROOTem
export USRN=`whoami`
if [ "root" != $USRN ]
then
echo "wypierdalaj ciumoku"
exit
fi
# czy zamontowano urządzenie backupowe
export ISMOUNT=`mount |grep /media/backup`
if [ -z "$ISMOUNT" ]
then
echo "BRAK URZĄDZENIA DO BACKUPU!!!"
echo "Czy zamontować?[T/N]"
read m
if [ "T" == $m -o "t" == $m ]
then
echo "wskaż urządzenie"
read m
if [ -n $m ]
then
mount $m /media/backup
fi
else
echo "nie ma rączek nie ma ciasteczek"
exit
fi
fi
# backup
# prosimy o źródło
echo "podaj plik lub katalog do backupowania"
read SOURCE
# no jak se ktoś jaja robi i chce backupować backup
if [ "/media/backup/" == "$SOURCE" -o "/media/backup" == "$SOURCE" ]
then
echo "no se jaja robisz"
exit
fi
#
if [ ! -d $SOURCE -a -f $SOURCE ]
then
echo "$SOURCE nie ma takiego pliku lub katalogu lub wskazany katalog jest urządzeniem specjalnym"
fi
# katalog z backupem na urządzeniu
export TARGET_DIR=/media/backup/`date +%F`"_"`echo $SOURCE|sed -e 's/\//_/g'`
# tworzymy katalog jeżeli nie istnieje
if [ ! -d $TARGET_DIR ]
then
mkdir $TARGET_DIR
# a jak istnieje to info, że będzie to backup przyrostowy
else
echo "backup był już wykonywany... wykonam backup przyrostowy"
fi
rsync -Pavh $SOURCE $TARGET_DIR
Całość wymaga jeszcze pewnych ulepszeń m.n. „refaktoryzacji do procedur”, a nie jest źle.
Podsumowując. Warto tworzyć własne repozytoria skryptów i się nimi dzielić, bo w ten sposób ułatwiamy życie sobie jak i innym.