Wstęp do Programowania, laboratorium 01 Zadanie 1: Napisać
Transkrypt
Wstęp do Programowania, laboratorium 01 Zadanie 1: Napisać
Wstęp do Programowania, laboratorium 01 Zadanie 1: Napisać skrypt który: 1. utworzy cztery foldery o różnych nazwach 2. w pierwszym z nich utworzy plik (nazwa np. bin.txt) z listą plików z folderu /bin 3. w drugim z nich utworzy plik (np. etc.txt) z zawartością pliku /etc/passwd 4. w trzecim z nich utworzy jeden plik zawierający: 5. aktualną datę, 6. pierwsze 5 linii pliku bin.txt, 7. ostatnie 6 linii pliku etc.txt. 8. skopiuje pierwszy i drugi folder do folderu trzeciego, 9. utworzy w folderze trzecim link do folderu domowego użytkownika, 10. dopisze do pliku z punktu 4. zawartość folderu trzeciego (lista + informacje o plikach), 11. przeniesie plik z punktu 10. do folderu zawierającego folder trzeci, 12. usunie wszystko (łącznie z ewentualnie utworzonymi plikami tymczasowymi) poza plikiem z punktu 10, 13. Wypisze do konsoli wiadomość pożegnalną. Po wykonaniu skryptu powinien pozostać tylko jeden plik (zawartość: patrz punkty 4. i 10.) Przykładowa zawartość pliku: śro, 8 paź 2014, 11:18:36 CEST bash bunzip2 busybox bzcat bzcmp nvidia-persistenced:x:109:120:NVIDIA Persistence Daemon,,,:/:/sbin/nologin kracon:x:1106:1005:Lukasz Kracon:/home/students/zao13z/kracon:/bin/bash ramut:x:1107:1005:Dominik Ramut:/home/students/zao13z/ramut:/bin/bash mniesulo:x:1108:1006:Maciej Niesulowski:/home/students/inf13l/mniesulo:/bin/bash michalak:x:1109:1006:Artur Michalak:/home/students/inf13l/michalak:/bin/bash anowak:x:1110:1001:Adam Nowak:/home/workers/anowak:/bin/bash razem 12 -rw-r--r-- 1 anowak workers 502 paź 8 11:18 all.txt drwxr-xr-x 2 anowak workers 4096 paź 8 11:18 f1 drwxr-xr-x 2 anowak workers 4096 paź 8 11:18 f2 lrwxrwxrwx 1 anowak workers 20 paź 8 11:18 link -> /home/workers/anowak Zadanie 2: Przeglądnąć zawartość pliku ~/.bashrc . Zrobić jego kopię zapasową. Dodać alias dla komendy „ktogdzie” który uruchamiać będzie programy date oraz whoami. Zmienić 'styl' konsoli – zmienna PS1. Instrukcje ctrl + c powoduje zamknięcie aktualnie wykonywanego programu/skryptu tab podpowiada nazwę pliku/folderu. Jeśli w folderze jest plik 'alejamamdluganazwe', wpisanie 'ale' i wciśnięcie 'tab' powinno dokończyć nazwę pliku (o ile nie ma drugiego pliku który też zaczyna się od 'ale') . aktualna lokalizacja .. folder wyżej Jak uzyskać pomoc dotyczącą programu na linuxie (3 przeważnie działające sposoby) 1. [program] --help 2. [program] -h 3. man [program] Edytory tekstowe nano prosty i łatwy w obsłudze edytor nano plik.txt otwarcie (lub utworzenie) pliku plik.txt ctrl+o – zapis pliku ctrl+x – wyjście z programu pico to samo co nano vi gigantyczny i trudny w obsłudze edytor vi plik.txt otwarcie (lub utworzenie) pliku plik.txt i – rozpoczęcie wprowadzania tekstu esc – przerwanie wprowadzania tekstu (lub innych czynności) :w – zapis pliku :q – wyjście z programu :!q – wyjście z programu i porzucenie zmian w pliku powyższe komendy można wydać tylko po przerwaniu wprowadzania tekstu vim to samo co vi Podstawy operacji na plikach i folderach cd zmiana folderu cd folder przejście do folderu o nazwie 'folder' znajdującego się w aktualnym położeniu cd .. przejście do folderu 'wyżej' cd ../../ przejście dwa foldery wyżej cd ../bla przejście do folderu 'bla' znajdującego się poziom 'wyżej' cd ~ przejście do folderu domowego użytkownika cd ~/gry przejście do folderu 'gry' w folderze użytkownika ls wypisanie listy plików i folderów z aktualnego położenia ls -l wypisanie listy plików i folderów z aktualnego położenia, wraz z informacjami o nich (data utworzenia, prawa dostępu...) ls ../ wypisanie listy plików i folderów z folderu wyżej ls folder wypisanie listy plików i folderów z folderu 'folder' znajdującego się w aktualnym położeniu echo wypisanie tekstu do konsoli echo tekst echo dlugi i niezwykle ciekawy tekst > przekierowanie tekstu wypisywanego przez program do pliku (nadpisanie zawartości lub utworzenie) >> jw. dopisanie do pliku lub jego utworzenie ls > "lista.txt" wpisanie listy plików do pliku 'lista.txt' ls -l ../ > bla wpisanie listy plików do pliku 'bla' echo "Tekst" >> bla dopisanie "Tekst" na końcu pliku 'bla' cat łączenie plików (konkatenacja) cat lista.txt bla wypisanie w konsoli zawartości plików 'lista.txt' oraz bla' cat lista.txt bla > polaczenie.txt mkdir utworzenie folderu mkdir nazwa folder2 „folder trzeci” utworzenie trzech folderów rm skasowanie pliku rm lista.txt rm * skasowanie wszystkich plików z aktualnego folderu rmdir skasowanie folderu (tylko jeśli jest pusty) rm -r folder2 skasowanie folderu wraz z zawartością rm -r -f folder2 skasowanie folderu wraz z zawartością, ignorując sprzeciw cp kopiowanie plików/folderów cp bla nowy.txt utworzenie pliku 'nowy.txt' będącego kopią pliku 'bla' cp bla nazwa przekopiowanie pliku 'bla' do folderu 'nazwa' (tylko jeśli 'nazwa' jest folderem, jeśli 'nazwa' jest plikiem to zostanie on nadpisany) cp bla nazwa/ dodanie '/' na końcu zakłada, że 'nazwa' jest folderem i pozwala uniknąć nadpisania mv przeniesienie pliku (lub zmiana jego nazwy) mv nowy.txt stary.txt zmiana nazwy pliku 'nowy.txt' na 'stary.txt' mv stary.txt nazwa/ przeniesienie pliku 'stary.txt' do folderu 'nazwa' | przekierowanie tekstu wypisywanego przez program do innego programu sort posortowanie tekstu wypisywanego przez program ls | sort posortowanie plików i folderów alfabetycznie ls . .. | sort posortowanie listy plików i folderów z folderu aktualnego i poziom wyżej ; pozwala uruchomić kilka programów naraz, kolejne uruchamiają się po zakończeniu poprzedniego && jw, kolejne uruchamiają się jeśli poprzedni nie zwróci błędu date; cal; whoami wypisze date i kalendarz gcc main.c && ./a.out skompiluje plik main.c i uruchomi program a.out jeśli kompilacja się powiedzie Linkowanie plików ln utworzenie linku do pliku lub folderu ln [plik istniejący] [nazwa linku] tworzy plik 'nazwa linku' który ma taką samą zawartość jak [plik istniejący] oraz modyfikacja jednego z nich skutkować będzie modyfikacją drugiego. Usunięcie jednego z nich nie spowoduje usunięcia drugiego. Jest to tzw. twardy link (hard link). Ograniczenie: oba pliki muszą być na tej samej partycji. ln -s [plik istniejący] [nazwa linku] parametr '-s' powoduje, że pliki nie muszą być na tej samej partycji, ale skasowanie oryginalnego ([plik istniejący]) spowoduje, że plik [nazwa linku] przestanie działać - będzie wskazywał nieistniejący już plik. Jest to tzw. link symboliczny (symbolic link). Możliwe jest linkowanie folderów, jednak tylko przy pomocy linków symbolicznych. Dostęp do plików i folderów chmod zmiana uprawnień dostępu dla: właściciela, grupy i pozostałych użytkowników możliwe uprawnienia: zapis, odczyt i wykonywanie http://pl.wikipedia.org/wiki/Chmod Porównywanie plików diff wypisuje zawartość plików z zaznaczonymi różnicami diff plik1 plik2 porównanie zawartości 'plik1' i 'plik2' diff -u plik1 plik2 inny sposób wypisania cmp porównuje zawartość plików i wypisuje liczbę różnic Zmienne $[nazwa zmiennej] np. $PATH [nazwa]=[wartość] przypisanie [wartość] do zmiennej o nazwie [nazwa] bla=tekst przypisanie tekstu 'tekst' do zmiennej o nazwie 'bla' echo $bla wypisanie zawartości zmiennej 'bla' PATH=$PATH:/sciezka/do/folderu dopisanie ścieżki do zmiennej PATH echo $PATH Path jest zmienną zawierającą ścieżki do folderów które są przeszukiwane w poszukiwaniu uruchamianych programów. Program 'ls' jest w folderze '/bin'. Folder '/bin' jest wpisany do zmiennej PATH. System po wpisaniu 'ls' w konsoli przeszukuje wszystkie foldery ze zmiennej PATH w poszukiwaniu pliku 'ls' w którymś z nich. Aby móc uruchomić własny program z dowolnego miejsca w systemie (nie podając całej ścieżki do niego), należy dodać folder zawierający ten program do zmiennej PATH. Różne przydatne programy date wypisanie daty cal wypisanie kalendarza who wypisanie listy zalogowanych użytkowników whoami wypisanie nazwy 'mojego' użytkownika finger sprawdzenie informacji o podanym użytkowniku finger root sprawdzenie informacji o koncie administratora na linuxie ps wypisanie listy uruchomionych procesów top konsolowy menedżer procesów find wyszukiwanie plików find / -name "nazwa" wyszukanie pliku o nazwie „nazwa” find / -name "*koniec" wyszukanie pliku z nazwą kończącą się słowem „koniec” find / -name "poczatek*" wyszukanie pliku z nazwą zaczynającą się od słowa „poczatek” find / -iname "PLIK" pomijana jest wielkość liter (plik, PLIK, Plik) head wypisanie pierwszych wierszy pliku head -n2 plik.txt wypisanie pierwszych dwóch wierszy pliku 'plik.txt' tail wypisanie ostatnich wierszy pliku tail -n4 plik.txt wypisanie ostatnich 4 wierszy pliku 'plik.txt' Podpowiedzi Zadanie 1. ad 1 mkdir ad 2 ls, operator > ad 3 cat, operator > ad 4 date, head i tail ad 8 cp ad 9 ln ad 10 ls, operator >> ad 11 mv ad 12 rm ad 13 echo Zadanie 2. cd ~ nano .bashrc alias 'komenda' = 'polecenie; polecenie 2; polecenie 3' http://sokrates.mimuw.edu.pl/~sebek/srodowisko.html https://wiki.archlinux.org/index.php/Color_Bash_Prompt Po zmianach pamiętać o zapisaniu i przeładowaniu pliku .bashrc – komenda „source ~/.bashrc” lub zmiana uprawnień tego skryptu i jego uruchomienie (odpowiedni chmod a potem ~/.bashrc).