Advertisement
Guest User

LINUX KOLOS 1

a guest
May 26th, 2015
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.15 KB | None | 0 0
  1. 1. Sprawdź własny identyfikator oraz grupy, do których należysz.
  2. -id
  3. 2. Wyświetl zawartość katalogu domowego.
  4. - ls /home/szymon
  5. 3. Wyświetl zawartość podstawowych katalogów w systemie (np. /dev, /etc, /home, /usr).
  6. -ls /dev ls /etc ls /usr ls /home
  7. 4. Utwórz katalog kat1 w katalogu domowym.
  8. -mkdir ~/kat1
  9. 5. W katalogu kat1 utwórz jednym poleceniem strukturę katalogów kat2/kat3/kat4.
  10. -mkdir -p kat1/kat2/kat3/kat4
  11. 6. Usuń jednym poleceniem cała strukturę katalogów kat3/kat4.
  12. -rmdir -p kat1/kat2/*
  13. 7. Utwórz w katalogu domowym pliki o dowolnych nazwach z rozszerzeniami .txt i .c.
  14. -touch ~/abc.txt touch ~/cde.c
  15. 8. Skopiuj jednym poleceniem wszystkie pliki z katalogu domowego z rozszerzeniem .txt do katalogu kat1.
  16. -cp *.txt kat1
  17. 9. Skopiuj jednym poleceniem wszystkie pliki z katalogu domowego z rozszerzeniem .c do katalogu kat2.
  18. -cp *.c kat1/kat2
  19. 10. Skopiuj całą strukturę katalogów kat1 tworząc analogiczną strukturę o nazwie kat1b.
  20. -cp -r kat1 kat1b
  21. 11. Usuń wszystkie plik z katalogu kat1/kat2.
  22. -rm ~/kat1/kat2/*.*
  23. 12. Usuń jednym poleceniem całą strukturę katalogów kat1b.
  24. -rmdir -p kat1b/kat2b
  25. 13. Zmień nazwę dowolnego pliku w katalogu kat1.
  26. -mv ~/kat1/abc.txt ~/kat1/ABC.txt
  27. 14. Przenieś katalog kat1/kat2 do katalogu domowego tworząc w ten sposób katalog kat2b.
  28. -mv ~/kat1/kat2 ~/kat2b
  29. 15. Korzystając z programu find znajdź wszystkie pliki, które posiadają w nazwie słowo mozilla i znajdują się w podkatalogach katalogu /usr.
  30. -find /usr -name *mozilla* -type f
  31. 16. Korzystając z programu find znajdź wszystkie katalogi o nazwie bin, które znajdują się w katalogu /usr.
  32. -find /usr -name bin -type d
  33. 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).
  34. -mkdir ~/kat1/kat2
  35. find /usr/bin -size +10c -size -100c -type g -exec cp {} ~/kat1/kat2 \;
  36. 18. W katalogu domowym utwórz plik o nazwie plik.txt - sprawdź jakie są prawa dostępu do niego.
  37. -touch ~/plik.txt
  38. ls -l plik.txt
  39. 19. Dla pliku plik.txt dodaj prawo zapisu dla grupy.
  40. -chmod g+w plik.txt
  41. 20. Dla pliku plik.txt odejmij prawo zapisu dla właściciela.
  42. -chmod u-w plik.txt
  43. 21. Dla pliku plik.txt dodaj prawo wykonywania dla wszystkich użytkowników.
  44. -chmod a+x plik.txt
  45.  
  46. 22. Dla pliku plik.txt przywróć oryginalne prawa korzystając z notacji numerycznej.
  47. -chmod 664 plik.txt
  48. 23. Utwórz dowiązanie do pliku plik.txt o nazwie plik2.txt w katalogu domowym.
  49. -ln plik.txt plik2.txt
  50. 24. Utwórz dowiązanie symboliczne do katalogu kat1/kat2 o nazwie abc w katalogu domowym.
  51. -ln -s kat1/kat2 abc
  52. 25. Przejrzyj pomoc systemową dla wszystkich poleceń zaprezentowanych podczas zajęć.
  53. - man ….
  54.  
  55. 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).
  56. -grep bash$ /etc/passwd
  57. 2. Z pliku last.dat wypisać informację o logowaniach użytkowników spod adresu 212.33.66.26.
  58. -grep 212.33.66.26 last.dat
  59. 3. Na podstawie pliku last.dat policzyć, ile razy miały miejsce logowania dnia 16 października
  60. -grep "Oct 16" last.dat
  61. 4. Z pliku last.dat wypisać linie zawierające informację o logowaniach użytkownika romek
  62. -grep romek last.dat
  63. 5. Z pliku lista.txt wypisać te linie, w których występuje ciąg znaków st1.
  64. -grep -w st1 last.dat
  65. 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.
  66. -grep -w st1$ last.dat
  67. 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.
  68. -grep -w ^st1 last.dat
  69. 8. Z pliku lista.txt wypisać te linie, w których występuje słowo Anna, pisane dużymi lub małymi literami.
  70. -grep -w "\<[aA][nN][nN][aA]\>" lista.txt
  71. 9. Z pliku lista.txt wypisać wszystkie linie, w których występuje co najmniej jedna cyfra.
  72. -grep -w [0-9] lista.txt
  73. 10. Napisać polecenie, które w pliku lista.txt znajdzie wszystkie linie zawierające którykolwiek ze znaków: „]” , „*” , „.”.
  74. -grep [\]*.] lista.txt
  75. 11. Z o nazwie lista.txt wypisać wszystkie niepuste linie.
  76. -grep [[:alnum:]] lista.txt
  77. 12. Z pliku lista.txt wypisać wszystkie linie, w których występuje zapis postaci cyfra.cyfra.
  78. -grep [0-9][.][0-9] lista.txt
  79. 13. Z pliku lista.txt wypisać wszystkie linie, w których nie występuje zapis postaci cyfra.cyfra.
  80. -grep -v [0-9][.][0-9] lista.txt
  81. 14. W pliku ‘frog.txt’ znajdź wszystkie linie zawierające wyraz „king” lub „king’s son”.
  82. -grep "\<king\|\king's son\>" frog.txt
  83. 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
  84. -grep ^[^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aieou]*$ /usr/share/dict/words
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91. Zadania
  92. 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).
  93.  
  94. 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.
  95. echo $#
  96. echo $0
  97. echo $*
  98. echo `date`
  99.  
  100. 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).
  101. clear
  102. echo Podaj swoje imie
  103. read imie
  104. if [ $imie = "Janek" ]
  105. then
  106. echo "Nie znam Janka"
  107. else
  108. echo "Witaj $imie"
  109. fi
  110.  
  111.  
  112. 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.
  113. if [ $# -gt 1 -o $# -eq 0 ]
  114. then
  115. echo "Uzycie: $0 nazwa_pliku"
  116. else
  117. cat "$1"
  118. fi
  119. 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.
  120. if [ $# -gt 1 -o $# -eq 0 ]
  121. then
  122. echo "Uzycie: $0 nazwa_pliku"
  123. echo "Plik $0 nie zostal wyswietlony poprawnie"
  124. else
  125. cat "$1"
  126. echo "Plik $0 zostal wyswietlony poprawnie"
  127. fi
  128.  
  129.  
  130.  
  131. 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.
  132.  
  133. if [ $# -eq 0 -o $# -gt 1 ]
  134. then
  135. echo "Uzycie: $0 liczba_calkowita"
  136. else
  137.  
  138. if echo "$1" | egrep --null "^[\+\-]?[[:digit:]]+$" > /dev/null
  139. then
  140. if [ $1 -lt 0 ]
  141. then
  142. echo "Liczba jest ujemna"
  143. elif [ $1 -gt 0 ]
  144. then
  145. echo "Liczba jest dodatnia"
  146. else
  147. echo "Liczba jest zerem"
  148. fi
  149. else
  150. echo "Podany parametr nie jest liczba calkowita"
  151. fi
  152. fi
  153.  
  154. 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.
  155.  
  156. for i in ./sk*.*
  157. do
  158. if [ -r $i ]
  159. then
  160. cat $i
  161. fi
  162. done
  163.  
  164.  
  165. 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.
  166.  
  167.  
  168. if [ $# -ne 2 ]
  169. then
  170. echo "Uzycie: $0 <katalog1> <katalog2>"
  171. else
  172. if [ -d $1 -a -d $2 ]
  173. then
  174. for i in $1/*
  175. do
  176.  
  177. for j in $2/*
  178. do
  179.  
  180. if [ `basename $i $1` = `basename $j $2` ]
  181. then
  182. #echo "$i"
  183. echo `basename $i $1`
  184. fi
  185. done
  186. done
  187. else
  188. echo "Ktorys z parametrow nie jest katalogiem"
  189. fi
  190.  
  191. fi
  192.  
  193. 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.
  194.  
  195. for (( i=1; $i <= 10; i++ ))
  196. do
  197. echo "$i*$1= `expr $i \* $1`"
  198.  
  199. done
  200.  
  201. 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.
  202.  
  203. k=1
  204. while [ $k -lt 11 ]
  205. do
  206. echo "$k*$1= `expr $k \* $1`"
  207. k=`expr $k + 1`
  208. done
  209.  
  210.  
  211. 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).
  212. suma=0
  213. licz=0
  214. liczba=0
  215. while [ 1 ]
  216. do
  217. read liczba
  218. if [ $liczba -eq 0 ]
  219. then
  220. break
  221. else
  222. licz=`expr $licz + 1`
  223. suma=`expr $suma + $liczba`
  224. fi
  225. done
  226. echo "Ilosc podanych liczb: $licz"
  227. echo "Suma podanych liczb: $suma"
  228.  
  229. 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.
  230. if [ $# -eq 2 ]
  231. then
  232.  
  233. if echo "$2" | egrep --null "^[[:digit:]]+$" > /dev/null
  234. then
  235.  
  236. for i in `seq 1 $2`
  237. do
  238. touch "$1$i"
  239. done
  240.  
  241. else
  242. echo "Blad. Liczba plikow zotala blednie podana"
  243. fi
  244.  
  245. else
  246. echo "Uzycie: $0 rdzen_nazwy_pliku liczba_plikow"
  247. fi
  248.  
  249. 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.
  250.  
  251. if [ -e $2 ]
  252. then
  253. case $1 in
  254.  
  255. "-h") head $2
  256.  
  257. ;;
  258. "-t") tail $2
  259.  
  260. ;;
  261. "-a") cat $2
  262.  
  263. ;;
  264. *) echo "Nieznana opcja"
  265. esac
  266.  
  267. else
  268. echo "Plik nie istnieje."
  269. fi
  270.  
  271. 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.
  272.  
  273. if [ -e $1 ]
  274. then
  275. echo "Plik istnieje"
  276.  
  277. if [ -s $1 ]
  278. then
  279. echo "Plik nie jest pusty"
  280. else
  281. echo "Plik jest pusty"
  282. fi
  283.  
  284. if [ -d $1 ]
  285. then
  286. echo "Plik jest katalogiem"
  287. else
  288. echo "Plik nie jest katalogiem"
  289. fi
  290.  
  291. if [ -r $1 ]
  292. then
  293. echo "Plik mozna odczytac"
  294. else
  295. echo "Pliku nie mozna odczytac"
  296. fi
  297.  
  298. if [ -w $1 ]
  299. then
  300. echo "Do Pliku mozna pisac"
  301. else
  302. echo "Do pliku nie mozna pisac"
  303. fi
  304.  
  305. if [ -x $1 ]
  306. then
  307. echo "Plik jest wykonywalny"
  308. else
  309. echo "Plik nie jest wykonywalny"
  310. fi
  311.  
  312. else
  313. echo "Plik o podanej nazwie nie istnieje"
  314. fi
  315.  
  316.  
  317. 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.
  318.  
  319. if [ $# -eq 2 ]
  320. then
  321. if [ -e $1 ]
  322. then
  323. for i in $1/*.$2
  324. do
  325. if [ -r $i ]
  326. then
  327. echo -----------------------
  328. echo $i
  329. cat $i
  330. echo -----------------------
  331. else
  332. echo "`basename $i $1`->brak uprawnien do odczytu"
  333. fi
  334. done
  335. else
  336. echo "Blad. Katalog nie istnieje"
  337. fi
  338. else
  339. echo "Uzycie: $0 <katalog> <rozszerzenie>"
  340. fi
  341.  
  342.  
  343. 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.
  344.  
  345. while [ 1 ]
  346. do
  347. echo "Podaj nazwe katalogu"
  348. read katalog
  349. if [ -z $katalog ]
  350. then
  351. break
  352. elif [ -d $katalog ]
  353. then
  354. for i in $katalog/*
  355. do
  356. echo `basename $i $1`
  357. done
  358. else
  359. echo "Katalog o podanej nazwie nie istnieje"
  360. fi
  361. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement