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.

Napisz odpowiedź

Twój adres e-mail nie zostanie opublikowany.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax