Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Sprawdź własny identyfikator oraz grupy, do których należysz.
- -id
- 2. Wyświetl zawartość katalogu domowego.
- - ls /home/szymon
- 3. Wyświetl zawartość podstawowych katalogów w systemie (np. /dev, /etc, /home, /usr).
- -ls /dev ls /etc ls /usr ls /home
- 4. Utwórz katalog kat1 w katalogu domowym.
- -mkdir ~/kat1
- 5. W katalogu kat1 utwórz jednym poleceniem strukturę katalogów kat2/kat3/kat4.
- -mkdir -p kat1/kat2/kat3/kat4
- 6. Usuń jednym poleceniem cała strukturę katalogów kat3/kat4.
- -rmdir -p kat1/kat2/*
- 7. Utwórz w katalogu domowym pliki o dowolnych nazwach z rozszerzeniami .txt i .c.
- -touch ~/abc.txt touch ~/cde.c
- 8. Skopiuj jednym poleceniem wszystkie pliki z katalogu domowego z rozszerzeniem .txt do katalogu kat1.
- -cp *.txt kat1
- 9. Skopiuj jednym poleceniem wszystkie pliki z katalogu domowego z rozszerzeniem .c do katalogu kat2.
- -cp *.c kat1/kat2
- 10. Skopiuj całą strukturę katalogów kat1 tworząc analogiczną strukturę o nazwie kat1b.
- -cp -r kat1 kat1b
- 11. Usuń wszystkie plik z katalogu kat1/kat2.
- -rm ~/kat1/kat2/*.*
- 12. Usuń jednym poleceniem całą strukturę katalogów kat1b.
- -rmdir -p kat1b/kat2b
- 13. Zmień nazwę dowolnego pliku w katalogu kat1.
- -mv ~/kat1/abc.txt ~/kat1/ABC.txt
- 14. Przenieś katalog kat1/kat2 do katalogu domowego tworząc w ten sposób katalog kat2b.
- -mv ~/kat1/kat2 ~/kat2b
- 15. Korzystając z programu find znajdź wszystkie pliki, które posiadają w nazwie słowo mozilla i znajdują się w podkatalogach katalogu /usr.
- -find /usr -name *mozilla* -type f
- 16. Korzystając z programu find znajdź wszystkie katalogi o nazwie bin, które znajdują się w katalogu /usr.
- -find /usr -name bin -type d
- 17. Skopiuj wszystkie pliki zwykłe o rozmiarze pomiędzy 10 a 100 bajtów z katalogu /usr/bin do katalogu kat1/kat2 (wykorzystaj polecenie find z parametrem -exec).
- -mkdir ~/kat1/kat2
- find /usr/bin -size +10c -size -100c -type g -exec cp {} ~/kat1/kat2 \;
- 18. W katalogu domowym utwórz plik o nazwie plik.txt - sprawdź jakie są prawa dostępu do niego.
- -touch ~/plik.txt
- ls -l plik.txt
- 19. Dla pliku plik.txt dodaj prawo zapisu dla grupy.
- -chmod g+w plik.txt
- 20. Dla pliku plik.txt odejmij prawo zapisu dla właściciela.
- -chmod u-w plik.txt
- 21. Dla pliku plik.txt dodaj prawo wykonywania dla wszystkich użytkowników.
- -chmod a+x plik.txt
- 22. Dla pliku plik.txt przywróć oryginalne prawa korzystając z notacji numerycznej.
- -chmod 664 plik.txt
- 23. Utwórz dowiązanie do pliku plik.txt o nazwie plik2.txt w katalogu domowym.
- -ln plik.txt plik2.txt
- 24. Utwórz dowiązanie symboliczne do katalogu kat1/kat2 o nazwie abc w katalogu domowym.
- -ln -s kat1/kat2 abc
- 25. Przejrzyj pomoc systemową dla wszystkich poleceń zaprezentowanych podczas zajęć.
- - man ….
- 1. Znaleźć linie w liku /etc/passwd zawierające informacje o użytkownikach używających powłoki bash (ostania kolumna zawiera informację nt. powłoki użytkownika).
- -grep bash$ /etc/passwd
- 2. Z pliku last.dat wypisać informację o logowaniach użytkowników spod adresu 212.33.66.26.
- -grep 212.33.66.26 last.dat
- 3. Na podstawie pliku last.dat policzyć, ile razy miały miejsce logowania dnia 16 października
- -grep "Oct 16" last.dat
- 4. Z pliku last.dat wypisać linie zawierające informację o logowaniach użytkownika romek
- -grep romek last.dat
- 5. Z pliku lista.txt wypisać te linie, w których występuje ciąg znaków st1.
- -grep -w st1 last.dat
- 6. Z pliku lista.txt wypisać te linie, w których występuje ciąg znaków st1, pod warunkiem, że występuje on na końcu linii.
- -grep -w st1$ last.dat
- 7. Z pliku lista.txt wypisać te linie, w których występuje ciąg znaków st1, pod warunkiem, że występuje on na początku linii.
- -grep -w ^st1 last.dat
- 8. Z pliku lista.txt wypisać te linie, w których występuje słowo Anna, pisane dużymi lub małymi literami.
- -grep -w "\<[aA][nN][nN][aA]\>" lista.txt
- 9. Z pliku lista.txt wypisać wszystkie linie, w których występuje co najmniej jedna cyfra.
- -grep -w [0-9] lista.txt
- 10. Napisać polecenie, które w pliku lista.txt znajdzie wszystkie linie zawierające którykolwiek ze znaków: „]” , „*” , „.”.
- -grep [\]*.] lista.txt
- 11. Z o nazwie lista.txt wypisać wszystkie niepuste linie.
- -grep [[:alnum:]] lista.txt
- 12. Z pliku lista.txt wypisać wszystkie linie, w których występuje zapis postaci cyfra.cyfra.
- -grep [0-9][.][0-9] lista.txt
- 13. Z pliku lista.txt wypisać wszystkie linie, w których nie występuje zapis postaci cyfra.cyfra.
- -grep -v [0-9][.][0-9] lista.txt
- 14. W pliku ‘frog.txt’ znajdź wszystkie linie zawierające wyraz „king” lub „king’s son”.
- -grep "\<king\|\king's son\>" frog.txt
- 15. Wypisz z pliku /usr/share/dict/words wszystkie słowa zawierające samogłoski „a”, „e”, „i”, „o” i „u” dokładnie w tej kolejności
- -grep ^[^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aieou]*$ /usr/share/dict/words
- Zadania
- 1. Napisać skrypt, który najpierw czyści ekran, a następnie wyświetla komunikat Podaj swoje imię. Po wczytaniu imienia podanego przez użytkownika, wyświetla komunikat powitalny: Witaj Imię (w miejscu Imię ma się pojawić imię podane przez użytkownika).
- 2. Napisać skrypt, który wyświetla liczbę parametrów skryptu, nazwę skryptu, wszystkie parametry skryptu, oraz bieżąca datę. Uwaga: skrypt ma zadziałać poprawnie, nawet jeśli użytkownik zmieni nazwę pliku z zawartością skryptu.
- echo $#
- echo $0
- echo $*
- echo `date`
- 3. Zmodyfikować skrypt 1 w taki sposób, aby podanie imienia Janek skutkowało wyświetleniem komunikatu Nie znam Janka (w przypadku wpisania innych imion ma być wyświetlone powitanie).
- clear
- echo Podaj swoje imie
- read imie
- if [ $imie = "Janek" ]
- then
- echo "Nie znam Janka"
- else
- echo "Witaj $imie"
- fi
- 4. Napisać skrypt, który wyświetla plik o nazwie podanej jako pierwszy parametr. Jeżeli użytkownik podał więcej parametrów niż trzeba, lub nie podał żadnego – ma się pojawić komunikat Użycie: nazwa_skryptu nazwa_pliku, przy czym nazwa_skryptu to napis będący nazwą skryptu.
- if [ $# -gt 1 -o $# -eq 0 ]
- then
- echo "Uzycie: $0 nazwa_pliku"
- else
- cat "$1"
- fi
- 5. Zmodyfikować skrypt w taki sposób, aby na końcu pojawił się jeden z komunikatów: Plik nazwa został wyświetlony poprawnie lub Plik nazwa nie został wyświetlony poprawnie, przy czym w miejscu nazwa ma się pojawić nazwa podana przez użytkownika jako parametr skryptu.
- if [ $# -gt 1 -o $# -eq 0 ]
- then
- echo "Uzycie: $0 nazwa_pliku"
- echo "Plik $0 nie zostal wyswietlony poprawnie"
- else
- cat "$1"
- echo "Plik $0 zostal wyswietlony poprawnie"
- fi
- 6. Napisać skrypt, który sprawdza, czy podana jako pierwszy parametr liczba całkowita jest dodatnia, jest ujemna, jest zerem. W przypadku, gdy użytkownik nie poda inną liczbę niż jeden parametrów, ma się pojawić informacja, jak używać skryptu. W przypadku, gdy użytkownik nie poda liczby całkowitej – też ma się pojawić odpowiedni komunikat.
- if [ $# -eq 0 -o $# -gt 1 ]
- then
- echo "Uzycie: $0 liczba_calkowita"
- else
- if echo "$1" | egrep --null "^[\+\-]?[[:digit:]]+$" > /dev/null
- then
- if [ $1 -lt 0 ]
- then
- echo "Liczba jest ujemna"
- elif [ $1 -gt 0 ]
- then
- echo "Liczba jest dodatnia"
- else
- echo "Liczba jest zerem"
- fi
- else
- echo "Podany parametr nie jest liczba calkowita"
- fi
- fi
- 7. Napisać skrypt, który wyświetli zawartość wszystkich plików, których nazwa rozpoczyna się od sk, i do których użytkownik ma prawo do czytania.
- for i in ./sk*.*
- do
- if [ -r $i ]
- then
- cat $i
- fi
- done
- 8. Napisać skrypt, który wyświetli nazwy plików powtarzające się w dwóch katalogach, których nazwy podane są jako pierwszy i drugi parametr skryptu. Jeżeli użytkownik podał inną niż dwa liczbę parametrów – ma się pojawić komunikat informujący o użyciu programu. Jeżeli którykolwiek z parametrów nie jest nazwą katalogu – też ma się pojawić odpowiedni komunikat.
- if [ $# -ne 2 ]
- then
- echo "Uzycie: $0 <katalog1> <katalog2>"
- else
- if [ -d $1 -a -d $2 ]
- then
- for i in $1/*
- do
- for j in $2/*
- do
- if [ `basename $i $1` = `basename $j $2` ]
- then
- #echo "$i"
- echo `basename $i $1`
- fi
- done
- done
- else
- echo "Ktorys z parametrow nie jest katalogiem"
- fi
- fi
- 9. Napisać skrypt, który wyświetli tabliczkę mnożenia (od 1 do 10) dla liczby podanej jako parametr skryptu. Należy użyć instrukcji for.
- for (( i=1; $i <= 10; i++ ))
- do
- echo "$i*$1= `expr $i \* $1`"
- done
- 10. Napisać skrypt, który wyświetli tabliczkę mnożenia (od 1 do 10) dla liczby podanej jako parametr skryptu. Należy użyć instrukcji while.
- k=1
- while [ $k -lt 11 ]
- do
- echo "$k*$1= `expr $k \* $1`"
- k=`expr $k + 1`
- done
- 11. Napisać skrypt, który będzie pobierał od użytkownika liczby, do momentu wpisania liczby 0. Na koniec ma wypisać sumę oraz liczbę wpisanych liczb (nie uwzględniamy liczby 0).
- suma=0
- licz=0
- liczba=0
- while [ 1 ]
- do
- read liczba
- if [ $liczba -eq 0 ]
- then
- break
- else
- licz=`expr $licz + 1`
- suma=`expr $suma + $liczba`
- fi
- done
- echo "Ilosc podanych liczb: $licz"
- echo "Suma podanych liczb: $suma"
- 12. Napisać skrypt, który tworzy puste pliki. Pierwszy parametr skryptu to rdzeń nazwy pliku, drugi to liczba plików. Należy poinformować użytkownika o sposobie użycia skryptu, jeżeli poda on niewłaściwą liczbę parametrów. Należy poinformować użytkownika o błędzie, jeżeli źle poda on liczbę plików do utworzenia.
- if [ $# -eq 2 ]
- then
- if echo "$2" | egrep --null "^[[:digit:]]+$" > /dev/null
- then
- for i in `seq 1 $2`
- do
- touch "$1$i"
- done
- else
- echo "Blad. Liczba plikow zotala blednie podana"
- fi
- else
- echo "Uzycie: $0 rdzen_nazwy_pliku liczba_plikow"
- fi
- 13. Napisać skrypt, który wyświetli część lub całość pliku podanego jako drugi parametr skryptu. Pierwszym parametrem ma być jedna z opcji: –h, –t lub –a, oznaczająca żądanie wyświetlenia odpowiednio: 10 pierwszych linii pliku, 10 ostatnich linii pliku, lub całego pliku. Podanie przez użytkownika opcji innej niŜ dostępne ma skutkować pojawieniem się komunikatu: Nieznana opcja.
- if [ -e $2 ]
- then
- case $1 in
- "-h") head $2
- ;;
- "-t") tail $2
- ;;
- "-a") cat $2
- ;;
- *) echo "Nieznana opcja"
- esac
- else
- echo "Plik nie istnieje."
- fi
- 14. Napisać skrypt, który, dla pliku o nazwie podanej jako parametr skryptu wyświetli następujące informacje o nim: - czy jest to plik, - czy jest to plik niepusty, - czy jest to katalog, - czy można go czytać, - czy można do niego pisać, - czy jest to plik wykonywalny.
- if [ -e $1 ]
- then
- echo "Plik istnieje"
- if [ -s $1 ]
- then
- echo "Plik nie jest pusty"
- else
- echo "Plik jest pusty"
- fi
- if [ -d $1 ]
- then
- echo "Plik jest katalogiem"
- else
- echo "Plik nie jest katalogiem"
- fi
- if [ -r $1 ]
- then
- echo "Plik mozna odczytac"
- else
- echo "Pliku nie mozna odczytac"
- fi
- if [ -w $1 ]
- then
- echo "Do Pliku mozna pisac"
- else
- echo "Do pliku nie mozna pisac"
- fi
- if [ -x $1 ]
- then
- echo "Plik jest wykonywalny"
- else
- echo "Plik nie jest wykonywalny"
- fi
- else
- echo "Plik o podanej nazwie nie istnieje"
- fi
- 15. Napisać skrypt, który z katalogu podanego jako pierwszy parametr wyświetla pliki o rozszerzeniu podanym jako drugi parametr. Należy poinformować użytkownika o sposobie użycia skryptu, jeżeli poda on niewłaściwą liczbę parametrów. Należy poinformować użytkownika o sposobie użycia skryptu, jeżeli źle poda on liczbę parametrów. Należy poinformować użytkownika, jeżeli źle poda on nazwę katalogu. Należy poinformować użytkownika, jeżeli nie można wyświetlić pliku z powodu braku praw do jego czytania.
- if [ $# -eq 2 ]
- then
- if [ -e $1 ]
- then
- for i in $1/*.$2
- do
- if [ -r $i ]
- then
- echo -----------------------
- echo $i
- cat $i
- echo -----------------------
- else
- echo "`basename $i $1`->brak uprawnien do odczytu"
- fi
- done
- else
- echo "Blad. Katalog nie istnieje"
- fi
- else
- echo "Uzycie: $0 <katalog> <rozszerzenie>"
- fi
- 16. Napisać skrypt, który prosi w pętli o podanie nazwy katalogu i wyświetla zawartość katalogu. Podanie pustej nazwy kończy działanie skryptu. Należy poinformować użytkownika, jeżeli źle poda on nazwę katalogu.
- while [ 1 ]
- do
- echo "Podaj nazwe katalogu"
- read katalog
- if [ -z $katalog ]
- then
- break
- elif [ -d $katalog ]
- then
- for i in $katalog/*
- do
- echo `basename $i $1`
- done
- else
- echo "Katalog o podanej nazwie nie istnieje"
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement