Skrypty powłoki BASH
- 1.1. Skrypt zmienia nazwy wszystkich plików w zadanym katalogu (parametr wywołania skryptu), do których posiadamy prawo zapisu, przez dopisanie dodatkowego członu .old. Wcześniej kasuje wszystkie pliki, które mają już takie rozszerzenie.
- 1.2. Skrypt tworzy nowe pliki w zadanym katalogu (parametr wywołania skryptu), według listy umieszczonej w pliku (drugi parametr wywołania skryptu). Nowe pliki mają pustą zawartość. Jeżeli któryś plik już istnieje, to nie jest niszczony.
- 1.3. Skrypt usuwa wszystkie pliki w zadanym katalogu (parametr wywołania skryptu), poza plikami wykonywalnymi, mającymi ustawiony bit execute.
- 1.4. Skrypt numerujący wszystkie pliki w zadanym katalogu (parametr wywołania skryptu), do których mamy prawo wykonywania (execute), przez dodanie dodatkowego członu rozszerzenia o postaci .numer_kolejny. Numeracja przebiega według wielkości plików.
- 1.5. Skrypt łączy w jeden wszystkie pliki należące do zadanego katalogu (parametr wywołania skryptu), o zadanym rozszerzeniu (drugi parametr skryptu). Kolejność, w jakiej pliki są łączone jest nieistotna. Treść każdego pliku poprzedzona jest nagłówkiem z jego nazwą.
- 1.6. Skrypt łączy w jeden pliki z listy umiszczonej w pliku o zadanej nazwie (parametr wywołania skryptu). Kolejność, w jakiej pliki są łączone - ściśle według listy. Treść każdego pliku poprzedzona jest nagłówkiem z jego nazwą. Plik wynikowy ma nazwę pliku pierwotnie zawierającego listę.
- 1.7. Skrypt przesuwa wszystkie pliki z ustawionym prawem wykonywania (execute) z jednego katalogu do drugiego. Pozostałe pliki w katalogu nie są ruszane. Nazwy katalogów, źródłowego i docelowego, zadawane są jako parametry skryptu.
- 1.8. Skrypt pokazuje pliki z zadanego katalogu (parametr wywołania skryptu), wraz z jego podkatalogami. Zawartość podkatalogów jest listowana w postaci ścieżka dostępu względem listowanego katalogu/nazwa pliku. Liczba zagnieżdżeń podkatalogów ograniczana jest przez zmienną GLEBOKOSC.
- 1.9. Skrypt usuwa wszystkie pliki puste (o zerowej wielkości) w zadanym katalogu (parametr wywołania skryptu). Skrypt tworzy w zadanym pliku listę skasowanych plików. Nie analizuje dołączeń symbolicznych.
- 1.10. Skrypt porównuje zawartości dwóch zadanych katalogów (argumenty skryptu). Przy porównaniu ignoruje podkatalogi. W wyniku wyświetla na ekranie listę plików identycznych w obu katalogach.
- 1.11. Skrypt porównuje zawartości zadanego katalogu z listą plików (nazwa katalogu i pliku z listą zadawana jest w argumentach skryptu). Skrypt generuje listę plików brakujących w katalogu i takich, które nie są na liście.
- 1.12. Skrypt usuwana wszystkie podkatalogi zadanego katalogu (parametr wywołania skryptu). Zawartość tych podkatalogów przenoszona jest do katalogu nadrzędnego. Usuwanie dotyczy tylko jednego poziomu podkatalogów.
- 1.13. Skrypt wysyła pocztę elektroniczną do wszystkich użytkowników systemu. Treść listu zadana zawartością pliku, będącego parametrem wywołania skryptu. Listę lokalnych użytkowników uzyskiwana jest za pomocą listowania zawartość katalogu systemowego /var/spool/mail (najprostsza metoda, ale nie najlepsza).
- 1.14. Skrypt ustawia na aktualny czas ostatniej modyfikacji wszystkich plików zadanego katalogu (parametr wywołania skryptu), do których posiadamy prawo do zapisu/modyfikacji.
- 1.15. Skrypt zlicza wszystkie pliki w zadanym katalogu (parametr wywołania skryptu), do których ustawione jest prawo do wykonania (execute).
Skrypt 1.1.
Skrypt zmienia nazwy wszystkich plików w zadanym katalogu (parametr wywołania skryptu), do których posiadamy prawo zapisu, przez dopisanie dodatkowego członu .old. Wcześniej kasuje wszystkie pliki, które mają już takie rozszerzenie.
#!/bin/bash rm *.old -f for nazwa in * do if [ -w $nazwa ] then mv $nazwa $nazwa.old fi done
Skrypt 1.2.
Skrypt tworzy nowe pliki w zadanym katalogu (parametr wywołania skryptu), według listy umieszczonej w pliku (drugi parametr wywołania skryptu). Nowe pliki mają pustą zawartość. Jeżeli któryś plik już istnieje, to nie jest niszczony.
#!/bin/bash if [ $# -ne 2 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog plik_z_listą" exit 1 fi if [ -d $1 ] then if [ -f $2 ] then pliki=`cat $2` else echo "Nie ma pliku $2!" exit 1 fi else echo "$1 nie jest katalogiem!" exit 1 fi for plik in $pliki do if [ ! -e $plik ] then touch $1/$plik fi done
Skrypt 1.3.
Skrypt usuwa wszystkie pliki w zadanym katalogu (parametr wywołania skryptu), poza plikami wykonywalnymi, mającymi ustawiony bit execute.
#!/bin/bash if [ $# -ne 1 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog" exit 1 fi if [ -d $1 ] then biezacy_katalog=`pwd` cd $1 for plik in * do if [ -x $plik ] then continue else rm $plik -f fi done cd $biezacy_katalog else echo "$1 nie jest katalogiem!" exit 1 fi
Skrypt 1.4.
Skrypt numerujący wszystkie pliki w zadanym katalogu (parametr wywołania skryptu), do których mamy prawo wykonywania (execute), przez dodanie dodatkowego członu rozszerzenia o postaci .numer_kolejny. Numeracja przebiega według wielkości plików.
#!/bin/bash if [ $# -ne 1 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog" exit 1 fi if [ -d $1 ] then biezacy_katalog=`pwd` cd $1 licznik=1 zawartosc=`ls -S -r` for plik in $zawartosc do if [ -d $plik ] then continue else mv $plik $plik.$licznik let licznik=licznik+1 fi done cd $biezacy_katalog else echo "$1 nie jest katalogiem!" exit 1 fi
Skrypt 1.5.
Skrypt łączy w jeden wszystkie pliki należące do zadanego katalogu (parametr wywołania skryptu), o zadanym rozszerzeniu (drugi parametr skryptu). Kolejność, w jakiej pliki są łączone jest nieistotna. Treść każdego pliku poprzedzona jest nagłówkiem z jego nazwą.
#!/bin/bash if [ $# -ne 2 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog rozszerzenie" exit 1 fi if [ -d $1 ] then biezacy_katalog=`pwd` cd $1 for plik in *.$2 do if [ -d $plik ] then continue else echo "Plik $plik:" >> $2 cat $plik >> $2 fi done cd $biezacy_katalog else echo "$1 nie jest katalogiem!" exit 1 fi
Skrypt 1.6.
Skrypt łączy w jeden pliki z listy umiszczonej w pliku o zadanej nazwie (parametr wywołania skryptu). Kolejność, w jakiej pliki są łączone - ściśle według listy. Treść każdego pliku poprzedzona jest nagłówkiem z jego nazwą. Plik wynikowy ma nazwę pliku pierwotnie zawierającego listę.
#!/bin/bash if [ $# -ne 1 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 plik_z_listą" exit 1 fi if [ ! -f $1 ] then echo "Nie ma pliku $1!" exit 1 fi ZAWARTOSC=`cat $1` rm $1 -f for plik in $ZAWARTOSC do if [[ -f $plik ]] then echo "Plik $plik:" >> $1 cat $plik >> $1 fi done
Skrypt 1.7.
Skrypt przesuwa wszystkie pliki z ustawionym prawem wykonywania (execute) z jednego katalogu do drugiego. Pozostałe pliki w katalogu nie są ruszane. Nazwy katalogów, źródłowego i docelowego, zadawane są jako parametry skryptu.
#!/bin/bash if [ $# -ne 2 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog_źródłowy katalog_docelowy" exit 1 fi if [[ -d $1 ]]&&[[ -d $2 ]] then biezacy_katalog=`pwd` cd $1 for plik in * do if [ -d $plik ] then continue else if [ -x $plik ] then mv $plik $biezacy_katalog/$2 fi fi done cd $biezacy_katalog else echo "$1 lub $2 nie jest katalogiem!" exit 1 fi
Skrypt 1.8.
Skrypt pokazuje pliki z zadanego katalogu (parametr wywołania skryptu), wraz z jego podkatalogami. Zawartość podkatalogów jest listowana w postaci ścieżka dostępu względem listowanego katalogu/nazwa pliku. Liczba zagnieżdżeń podkatalogów ograniczana jest przez zmienną GLEBOKOSC.
#!/bin/bash GLEBOKOSC=3 if [ $# -ne 1 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog" exit 1 fi if [ ! -d $1 ] then echo "$1 nie jest katalogiem!" exit 1 fi function pokaz_zawartosc_kat { ZAWARTOSC=`ls $1` for plik in $ZAWARTOSC do if [ -d $1/$plik ] then if [[ $GLEBOKOSC -gt 0 ]] then let GLEBOKOSC=GLEBOKOSC-1 echo "$1/$plik" pokaz_zawartosc_kat $1/$plik let GLEBOKOSC=GLEBOKOSC+1 fi else echo "$1/$plik" fi done } pokaz_zawartosc_kat $1
Skrypt 1.9.
Skrypt usuwa wszystkie pliki puste (o zerowej wielkości) w zadanym katalogu (parametr wywołania skryptu). Skrypt tworzy w zadanym pliku listę skasowanych plików. Nie analizuje dołączeń symbolicznych.
#!/bin/bash if [ $# -ne 2 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog plik_wynikowy" exit 1 fi if [ ! -d $1 ] then echo "$1 nie jest katalogiem!" exit 1 fi biezacy_katalog=`pwd` cd $1 for plik in * do if [[ ! -s $plik ]] && [[ -f $plik ]] && [[ ! -L $plik ]] then echo "Usunąłem plik $plik." >> $biezacy_katalog/$2 rm $plik -f fi done cd $biezacy_katalog
Skrypt 1.10.
Skrypt porównuje zawartości dwóch zadanych katalogów (argumenty skryptu). Przy porównaniu ignoruje podkatalogi. W wyniku wyświetla na ekranie listę plików identycznych w obu katalogach.
#!/bin/bash if [ $# -ne 2 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog_źródłowy katalog_docelowy" exit 1 fi if [[ ! -d $1 ]]; then echo "$1 nie jest katalogiem!" exit 1 fi if [[ ! -d $2 ]]; then echo "$2 nie jest katalogiem!" exit 1 fi WYKAZ1=`ls $1` WYKAZ2=`ls $2` for plik1 in $WYKAZ1 do for plik2 in $WYKAZ2 do if [[ ! -d $1/$plik1 ]] && [[ ! -d $2/$plik2 ]] then diff $1/$plik1 $2/$plik2 > /dev/null if [[ $? -eq 0 ]] && [[ $plik1 = $plik2 ]] then echo "Plik $plik1 jest taki sam w obu katalogach." fi fi done done
Skrypt 1.11.
Skrypt porównuje zawartości zadanego katalogu z listą plików (nazwa katalogu i pliku z listą zadawana jest w argumentach skryptu). Skrypt generuje listę plików brakujących w katalogu i takich, które nie są na liście.
#!/bin/bash if [ $# -ne 2 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog_źródłowy plik_z_listą" exit 1 fi if [[ ! -d $1 ]]; then echo "$1 nie jest katalogiem!" exit 1 fi if [[ ! -f $2 ]]; then echo "Nie ma pliku $2!" exit 1 fi WYKAZ1=`ls $1` WYKAZ2=`cat $2` echo "Pliki z listy których nie ma w katalogu:" for plik1 in $WYKAZ2 do ZNALEZIONO=0 for plik2 in $WYKAZ1 do if [[ $plik1 = $plik2 ]] then ZNALEZIONO=1 fi done if [[ ZNALEZIONO -eq 0 ]] then echo $plik1 fi done echo "Pliki których nie ma na liście, a są w katalogu:" for plik1 in $WYKAZ1 do ZNALEZIONO=0 for plik2 in $WYKAZ2 do if [[ $plik1 = $plik2 ]] then ZNALEZIONO=1 fi done if [[ ZNALEZIONO -eq 0 ]] then echo $plik1 fi done
Skrypt 1.12.
Skrypt usuwana wszystkie podkatalogi zadanego katalogu (parametr wywołania skryptu). Zawartość tych podkatalogów przenoszona jest do katalogu nadrzędnego. Usuwanie dotyczy tylko jednego poziomu podkatalogów.
#!/bin/bash if [ $# -ne 1 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog" exit 1 fi if [[ ! -d $1 ]]; then echo "$1 nie jest katalogiem!" exit 1 fi WYKAZ=`ls $1` for plik in $WYKAZ do if [[ -d $plik ]] then mv $1/$plik/* $1 rmdir $1/$plik fi done
Skrypt 1.13.
Skrypt wysyła pocztę elektroniczną do wszystkich użytkowników systemu. Treść listu zadana zawartością pliku, będącego parametrem wywołania skryptu. Listę lokalnych użytkowników uzyskiwana jest za pomocą listowania zawartość katalogu systemowego /var/spool/mail (najprostsza metoda, ale nie najlepsza).
#!/bin/bash if [ $# -ne 1 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 plik_z_wiadomością" exit 1 fi if [[ ! -e $1 ]]; then echo "Nie ma pliku $1!" exit 1 fi WYKAZ=`ls /var/spool/mail` for adresat in $WYKAZ do cat $1 | mail done
Skrypt 1.14.
Skrypt ustawia na aktualny czas ostatniej modyfikacji wszystkich plików zadanego katalogu (parametr wywołania skryptu), do których posiadamy prawo do zapisu/modyfikacji.
#!/bin/bash if [ $# -ne 1 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog" exit 1 fi if [[ ! -d $1 ]]; then echo "Nie ma katalogu $1!" exit 1 fi biezacy_katalog=`pwd` cd $1 for plik in * do if [[ ! -d $plik ]] then touch -m $plik fi done cd $biezacy_katalog
Skrypt 1.15.
Skrypt zlicza wszystkie pliki w zadanym katalogu (parametr wywołania skryptu), do których ustawione jest prawo do wykonania (execute).
#!/bin/bash if [ $# -ne 1 ] then echo "Niepoprawna liczba argumentów. " echo "Użycie: $0 katalog" exit 1 fi if [[ ! -d $1 ]]; then echo "Nie ma katalogu $1!" exit 1 fi biezacy_katalog=`pwd` cd $1 licznik=0 for plik in * do if [[ -x $plik ]]&&[[ -f $plik ]] then let licznik=licznik+1 fi done cd $biezacy_katalog echo "Liczba plików z prawem do wykonywania w podanym katalogu: $licznik."
Waszym zdaniem...
Komentarz dodał(a) dudiheros dnia 2013-04-25 08:00:33.