UNIX - KOLOKWIUM 3. #include <stdio.h> #include <unistd.h>



Podobne dokumenty
J ezyk AWK Kurs systemu UNIX

Wyrażenia regularne. Wyrażenia regularne 1/41

System operacyjny Linux

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Wstęp do Programowania, laboratorium 02

Pobieranie argumentów wiersza polecenia

1. Znajdź za pomocą programu locate wszystkie pliki które zawierają w nazwie słowo netscape locate netscape

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Programowanie w języku Python. Grażyna Koba

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

J.NAWROCKI, M. ANTCZAK, W. FROHMBERG, K. KOLANOWSKI, J. POCHMARA, S. WĄSIK, T. ŻOK AWK - WPROWADZENIE

Systemy operacyjne. Laboratorium 5. Awk podstawy. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Przekierowanie wejścia wyjścia:

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Języki i metodyka programowania. Wprowadzenie do języka C

Podstawy Programowania.

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Argumenty wywołania programu, operacje na plikach

SED - Stream EDitor. edytor strumieniowy. Bogumił Konopka W-11/I-21 Politechnika Wrocławska

Podstawy Programowania

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Pliki. Informacje ogólne. Obsługa plików w języku C

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

AWK. Plan wykładu. Wprowadzenie. Najprostszy program

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie Proceduralne

$ awk f plik_z_programem plik_wejsciowy1 plik_wejsciowy2...

Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

Podstawy JavaScript ćwiczenia

4.2 Sposób korzystania z l acza

Wstęp do systemów wielozadaniowych laboratorium 19 awk

Zastosowanie filtrów w Linuksie

5 Przygotował: mgr inż. Maciej Lasota

Powtórka algorytmów. Wprowadzenie do języka Java.

Obsługa plików Procesy

Systemy operacyjne 12

Temat zajęć: Obsługa systemu plików.

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

C++ wprowadzanie zmiennych

I - Microsoft Visual Studio C++

Technologie Informacyjne - Linux 2

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Aplikacja po polsku. Bogdan Kreczmer. ZPCiR ICT PWr pokój 307 budynek C3.

X11R5. .Xresources. Pliki konfiguracyjne X-Windows. Zasada działania X11. .xinitrc. X protocol X server. X client. X library

Podstawy Programowania Podstawowa składnia języka C++

Programowanie Proceduralne

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Pliki. Informacje ogólne. Obsługa plików w języku C

Powtórka algorytmów. Wprowadzenie do języka Java.

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Programowanie komputerowe. Zajęcia 1

Bardzo krótki kurs Perla

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Czy procesor musi się grzać?

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Podstawy i języki programowania

Smarty PHP. Leksykon kieszonkowy

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Podstawy Kompilatorów

Część 4 życie programu

Biblioteka standardowa - operacje wejścia/wyjścia

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Laboratorium z użyciem analizatora leksykalnego FLEX

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Napisy w PHP. Drukowanie napisów instrukcją echo

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Znaki globalne w Linuxie

Instytut Teleinformatyki

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Skrypty powłoki w systemie Linux

Programowanie w językach wysokiego poziomu

Metody numeryczne Laboratorium 2

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Linux Polecenia. Problem nadpisywania plików. Zmienna noclobber i noglob. Filtry i metaznaki. Problem nadpisywania plików. Opracował: Andrzej Nowak

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Warsztaty dla nauczycieli

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Transkrypt:

UNIX - KOLOKWIUM 3 1. Napisać program w języku C, który wypisze ilość i listę swoich argumentów oraz zmienne środowiskowe. printf("ilosc argumentow: %d\n", argc); for(i = 0; i < argc; i++) printf("argument %d: %s\n", i, argv[i]); for(i = 0; envp[i]!= NULL; i++) printf("zmienna srodowiskowa %d: %s\n", i, envp[i]); extern **environ; for(i = 0; environ[i]!= NULL; i++) { printf("%s\n", environ[i]); 2. Napisać polecenie umożliwiające kompilację dwóch plików 1.c oraz 2.c do pliku 3 oraz wyświetlić wszystkie błędy podczas kompilacji. gcc -Wall -pedantic -ansi -o 3 1.c 2.c gcc -Wextra -pedantic -ansi -o 3 1.c 2.c 3. Jakie zasoby udostępnia X Server? Wyjście (wyświetlacz), wejście sposoby wprowadzania danych (mysz, klawiatura, tablet itp), czcionki. 4. W jakim pliku znajduje się konfiguracja zasobów w systemie X Window? Jak się nią zarządza?.xresources Zarządzanie przez użycie polecenia xrdb z modyfikatorem xrm. 5. Napisz wyrażenie regularne pasujące do formatu czasu: hh:mm:ss ^[0-1][0-9] [2][0-4]:[0-5][0-9]:[0-5][0-9]$ 6. Napisz za pomocą polecenia sed lub awk odpowiednik polecenia head. sed -e '1, 10p' 1.txt awk '{ if(nr >= 1 && NR <= 110) { print ' 1.txt 7. Napisać jak działa funkcja match w awk oraz podać przykład. awk '{ print match($0, /[0-2][0-9]:[0-5][0-9]:[0-5][0-9]/), RLENGTH ' 1.txt Konstrukcja match w awk poszukuje zadanego wzorca (najdłuższego, od lewej strony) w zadanym łańcuchu znakowym. Funkcja zwraca indeks (pozycję) znalezionego podciągu (1 jeżeli zaczyna się wraz z początkiem zadanego łańcucha). Dodatkowo funkcja ustawia wartości dla wbudowanych zmiennych RLENGTH oraz RSTART.

8. Wypisać co piątą linię pliku zaczynając od drugiej linii (2, 7, 12...) oraz dodatkowo wypisz 20 linię. sed -n -e '2~5p; 20p' 1.txt awk '{ if(nr % 5 == 2 NR == 20) { print ' 1.txt 9. Za pomocą sed policzyć liczbę wystąpień litery 'a' w tekście. tr -d '\n' < 1.txt sed -n -e 's/[^a]//gp' wc -c 10. Jak ustawić czcionkę w X Window System? xfontsel -pattern nazwaczcionki 11. Jak zmienić geometry programu w X Window System? xterm -geometry 300x300+20+60 12. Jak wyświetlić informacje dotyczące display w X Window System? xdpyinfo 13. Która zmienna przechowuje adres domyślnego display X Servera ustawić tą zmnienną na pierwszy display i screen dla hosta uhost. export DISPLAY=hostName:displayNr.screenNr export DISPLAY=uhost:0.0 14. Jak awk interpretuje spacje? Spacja domyślnie jest rozdzieleniem między polami w awk (w wypadku zarówno wejścia jak i wyjścia). Biały znak w awk oznacza łańcuch złożony z jednej lub więcej spacji. 15. Jak ustawić w awk wartości separatora pól oraz rekordów. awk 'BEGIN { FS="\n" ; RS="" { <...> ' <...> W przypisaniach można używać wyrażeń regularnych. 16. Co określają następujące zmnienne w programie awk: FS, OFS, RS, ORS, NF, NR? FS rozdzielenie między polami (domyślnie spacja) OFS ekwiwalent FS dla wyjścia RS rozdzielenie między rekordami (domyślnie nowa linia) ORS ekwiwalent RS dla wyjścia NF -ilość pól w przetwarzanym rekordzie NR numer przetwarzanego rekordu 17. Wyświetlić jedynie nazwy użytkowników z pliku /etc/passwd za pomocą sed i awk. sed -n -e 's/:.*//gp' /etc/passwd sed -e "s/\([^:]\):.*/\1/g" /etc/passwd awk -F ":" '{ print $1 ' /etc/passwd wyrażenie regularne: /([^:]*):/ 18. Napisać polecenie sed wypisujące niepuste linie pliku /etc/passwd. sed '/^[[:space:]]*$/d' /etc/passwd 19. Napisać polecenie sed wyświetlające plik /etc/passwd w odwrotnej kolejności. sed '1!G;h;$p' /etc/passwd 20. Napisać polecenie sed wycinające z tekstu tagi HTML. sed -n -e 's/<[^>]*>//gp' 1.txt 21. Wypisać plik wraz z numerami linii z użyciem sed oraz awk. sed '=' /etc/passwd awk '{ print NR, ": ", $0 ' /etc/passwd

22. Stworzyć wyrażenie regularne wyłuskujące równania (liczby z cyfr [0-9] oraz operatory +, -, *, =, brak spacji i innych znaków). ^[0-9]{1,([-\*\/\+][0-9]{1,)*$ 23. Napisać skrypt awk wyświetlający tylko te linie, które zawierają conajmniej jedną cyfrę. awk '{ if(match($0, /[0-9]/)) { print ' 24. Napisz filtr używając polecenia sed, który zamieni wszystkie ala na ela, ale tylko w linijkach, gdzie występuje kot. sed 'kot/s/ala/ela/g/ 1.txt 25. Zdefiniować wyrażenie regularne opisujące ciągi znaków zaczynające się od małej litery zawierające co najmniej 3 cyfry oraz kończące się dwukropkiem: ^[a-z](.*[0-9]){3,.*[:]$ 26. Kiedy w programie awk są wykonywane instrukcje zawarte w blokach BEGIN oraz END w przypadku, kiedy źródło danych składa się z wielu plików? Wykonywane są one przed pierwszym i po ostatnim pliku. 27. Utworzyć w programie nowy proces potomny, który uruchomi /bin/sh. int p = 0; p = fork(); if(p == 0) system("/bin/sh"); 28. Napisać program w języku C, który utworzy proces potomny: proces ten uruchomi program /bin/sh oraz po 10 sekundach zakończy pracę. int p = 0; p = fork(); if(p == 0) { system("/bin/sh"); printf("utworzono proces potomny.\n"); sleep(10); printf("zakonczono proces potomny.\n"); exit(0); else { printf("proces glowny.\n"); exit(0);

29. Napisać program w języku C, który otworzy plik, napisze w nim '1234abcd' i zapisze plik. #include <fcntl.h> int main(int argc, char ** argv, char **envv) { int f = open("2.txt", O_WRONLY); write(f, "1234abcd", 8); close(f); 30. Podaj możliwe flagi dla funkcji open języka C. O_RDONLY O_WRONLY O_RDWR O_NONBLOCK O_APPEND O_CREAT O_TRUNC O_EXCL O_SHLOCK O_EXLOCK O_DIRECT O_FSYNC O_NOFOLLOW Only read operations permitted Only write operations permitted Read and Write operations both permitted Non-blocking, applies to open operation only All writes go to end of file Create file if it doesn't already exist Delete existing contents of file Open fails if file already exists Get a "shared lock" on the file Get an "exclusive lock" on the file Try to avoid all caching of operations All writes immediately effective, no buffering If file is symbolic link, open it, don't follow it 31. Napisz program w języku C, który policzy ilość wystąpień litery 'a' w pliku. #include <fcntl.h> int main(int argc, char ** argv, char **envv) { int count = 0; char currentchar = '\0'; int f = open("2.txt", O_RDONLY); while(read(f, &currentchar, 1)) if(currentchar == 'a') count++; printf("ilosc wystapien litery 'a': %d\n", count); close(f); 32. Podać polecenie w makefile, które usuwa pliki po kompilacji: clean: rm -f *~ rm -f *.o

33. Z czego składa się plik makefile? Plik ten składa się z reguł definiujących cele pracy programu Make oraz definicji zmiennych. Najprostszy Makefile składa się z zestawów linii o następującej skłądni: plik_wynikowy:pliki_źródłowe polecenia zamieniające pliki źródłowe na wynikowy 34. Napisać makefile, który skompiluje wszystkie pliki z rozszerzeniem.c na pliki z rozszerzeniem.o %.o : %c gcc -c $< -o $@ 35. Napisać program, który przy pomocy powłoki uruchomi proces, podany jako pierwszy argument jego wywołania, z parametrami podanymi jako kolejne argumenty jego wywołania. Program powinien działać poprawnie, jeśli zostanie uruchomiony bez parametrów. int main(int argc, char **argv, char **envp) { if(argc == 1) { printf("blad! Nie podano zadnych argumentow.\n"); else { char *tmpargv[argc-1]; for(i = 0; i < argc - 2; i++) { tmpargv[i] = argv[i + 2]; execv(argv[1], tmpargv); printf("proces %s zostal uruchomiony z argumentami:\n", argv[1]); for(i = 0; i < argc - 2; i++) printf("%s\n", tmpargv[i]); 36. Podać różnice między putenv a setenv. Różnice między poleceniami polegają na agrumentach. putenv przyjmuje jeden argument w formie nazwa_zmiennej=wartosc_zmiennej, natomiast setenv przyjmuje 3 argumenty: nazwa_zmiennej, wartosc_zmiennej, czy_nadpisac. 37. Jak wypisać listę hostów uprawnionych do otwierania okien na X Server: xhost xhost + wyłącza kontrolę dostępu xhost włącza kontrolę xhost +host dodaje host do listy hostów uprawnionych do otwierania okien by slic3