tomekaruna 0 Zgłoś post Napisano Grudzień 6, 2009 Witam, staram się rozwiązać niżej napisane zadania, no ale nie bardzo wiem jak się do tego zabrać. Zadanie 1: Chodzi mi np. o pierwszą linijkę, jak utworzyć skrypt z 2 parametrami ? Mam stworzyć dokument o nazwie: "numerowanie lista.txt num" ? No i myślałem żeby w nim wpisać odpowiednie komendy np. żeby mi numerował pierwszy parametr: "sort $1" No i co dalej? Jak zrobić resztę? Próbowałem metodą prób i błędów ale nie bardzo wychodzi. Jeżeli ktoś da rady napisać mniej więcej jak to zrobić i wytłumaczyć dlaczego tak a nie inaczej. Będę naprawdę wdzięczny. 1. Napisz skrypt o nazwienumerowanie, który uruchamiany będziez dwoma parametrami: nazwą pliku tekstowego i dodatkowym rozszerzeniem (np. numerowanie lista.txtnum). Skrypt ten maponumerować wiersze w podanym, jako pierwszyparametr pliku. Wynik działania(tekst z ponumerowanymi wierszami) ma zapisaćw pliku o oryginalnej nazwie, alez dodatkowym rozszerzeniem, które podane było jako drugi parametr(np. lista.txt.num). Na koniec zawartość nowego pliku ma być wyświetlona na ekranie. 2. Napisz skrypt o nazwiestatystyka, który uruchamiamy będzie zjednym parametrem- nazwą pliku tekstowego (np. statystykalista.txt). Skrypt ten mawyświetlić statystykę, podanegojako parametr pliku. Statystyka ma miećnastępującą postać (wnawiasach klamrowych {...} mają znaleźć się odpowiednie dane): Plik „nazwa pliku” zawiera: Wierszy: {liczba} Słów: {liczba} Znaków: {liczba} ŚrednioznakÉw w słowie: {liczba} Podpowiedź: Średnią liczbę znaków w słowie możnaobliczyć korzystając z polecenialetpo wcześniejszym przypisaniu odpowiednim zmiennym liczby znaków i słów (np.znaki=‘cat lista.txt | wc -c‘). Zwróć uwagę na tzw. odwrotne cudzysłowy, w których znajduje sięwyrażenie ‘catlista.txt | wc -c‘. Odwrotne cudzysłowy (‘...‘) dostępne są naklawiszu z tyldą. Cudzysłowy te sprawiają,że zmiennej przypisany zostaniewynik wykonanego w nich polecenia(w tym przypadku zmiennejo nazwieznaki przypisana zostanie liczba znaków występujących w pliku lista.txt). Ponadto, pamiętaj, że polecenie wc zwracając liczbę znaków sumujetakże spacje pomiędzy wyrazami, a to może mieć wpływ na wartość „średniej liczby znaków w słowie”- uwzględnij to w swoichobliczeniach. 1. W edytorze vi utwórz pliktekstowy lista.txt zawierający listęosób, np. Kowalski Jan Nowak Adam Malec Ewa 2. Napisz skrypt o nazwiedodaj, którego działanie będzie następujące – skrypt uruchamiany będzie z dwoma parametrami nazwiskiem i imieniem osoby, którą chcemy dodać do listy.Zadaniem skryptu będzie dodanie tej osoby do pliku lista.txt, jego alfabetyczneposortowanie, zapisanie posortowanego pliku, a następnie wyświetlenie aktualnej listy osób i komunikatu Na liście mamy {liczba osób} osób. 3. Utwórz skrypt o nazwie szukaj.na.serwerze, którego działaniebędzie następujące - skrypt uruchamiany będzie z jednymparametrem, którym jest dowolny ciąg znaków (np.szukaj.na.serwerze justyna). Jego zadaniem jest znalezienie wśród zalogowanych na serwerze użytkowników wszystkich osób, których dane zawierają podany ciąg znaków (bez względu na wielkość liter),a następnie wyświetlenie znalezionych informacji na ekranie, zapisanie ich do pliku znalezieni.txt oraz wyświetleniekomunikatu Znaleziono {liczba osób}osób, których dane zawierają ciągznaków: „{szukany ciąg znaków}”. Podpowiedź: Skorzystaj z poleceniafinger oraz grep (z opcją ignorowaniawielkości wyszukiwanych liter). Tutaj jest drugi zestaw (ważniejszy jak dla mnie) 1. Zalogować się na swoje konto na serwerze: ie.uek.krakow.pl 2. Utworzyć katalog ~/test 3. Napisać skrypt powłoki o nazwie ~/test/numer , który ponumeruje wiersze w pliku podanym jako parametr. Zmodyfikowany w ten sposób plik ma zastąpić oryginalną jego wersję. 4. Dołączyć katalog ~/test do listy katalogów przechowywanej w zmiennej powłoki PATH 5. Zapisać wartość zwiennej powłoki PATH w pliku ~/test/zmienna_path 6. Zapisać zawartość katalogu ~/test w postaci długiego opisu plików (ls -l) w pliku ~/test/lista_plików 7. Zapisać wynik działania polecenia history do pliku ~/test/historia 8. Wysłać list na adres ************** 2. mkdir test 3. pico numer (później w tym dokumencie wpisać: sort $1) i znowu nie wiem jak zastąpić oryginalną wersje... Wiem ze komenda która nadpisuje to: ">" lub dopisuje ">>" ale nie bardzo wiem jak je użyć 4. PATH=$PATH:$HOME/test 5. pico zmienna_path ( i w nim dopisać: PATH=$PATH:$HOME/test ) 6. pico lista_plików ( w nim napisać: ls -l test ) 7. ??? Zapisać historie działan do pliku ale jak? Z góry dziękuje za odpowiedź. Udostępnij ten post Link to postu Udostępnij na innych stronach
guziec 109 Zgłoś post Napisano Grudzień 6, 2009 Witam, staram się rozwiązać niżej napisane zadania, no ale nie bardzo wiem jak się do tego zabrać. Zadanie 1: Chodzi mi np. o pierwszą linijkę, jak utworzyć skrypt z 2 parametrami ? Mam stworzyć dokument o nazwie: "numerowanie lista.txt num" ? No i myślałem żeby w nim wpisać odpowiednie komendy np. żeby mi numerował pierwszy parametr: "sort $1" No i co dalej? Jak zrobić resztę? Próbowałem metodą prób i błędów ale nie bardzo wychodzi. Jeżeli ktoś da rady napisać mniej więcej jak to zrobić i wytłumaczyć dlaczego tak a nie inaczej. Będę naprawdę wdzięczny. A na lekcjach to w okręty grałeś? Masz nawet z obsługą błędów. #!/bin/bash if [ $# -ne 2 ]; then echo "Masz podać dwa parametry, jełopie"; exit 0; fi if [ ! -r $1 ]; then echo "Nie mozna odczytać takiego pliku"; exit 0; fi nl $1 > $1.$2 Tutaj jest drugi zestaw (ważniejszy jak dla mnie) 2. mkdir test 3. pico numer (później w tym dokumencie wpisać: sort $1) i znowu nie wiem jak zastąpić oryginalną wersje... Wiem ze komenda która nadpisuje to: ">" lub dopisuje ">>" ale nie bardzo wiem jak je użyć Jakie sort? Masz przecież ponumerować linie, a nie posortować. nl < $1 > /tmp/numery.tmp ; cat /tmp/numery.tmp > $1 4. PATH=$PATH:$HOME/test 5. pico zmienna_path ( i w nim dopisać: PATH=$PATH:$HOME/test ) Co ty z tym pico? export PATH=$PATH:~/test 6. pico lista_plików ( w nim napisać: ls -l test ) ls -l > ~/test/lista_plików 7. ??? Zapisać historie działan do pliku ale jak? history > ~/plikhiostorii albo cat .bash_history > ~/plikhiostorii Z góry dziękuje za odpowiedź. Tak poza tym to wstydziłbyś się pytać o coś takiego mając dostęp do netu, pięć sekund guglania i masz podstawy: http://www.linux.rk.edu.pl/w/p/standardowe-wejscie-wyjscie/ Resztę sobie wyguglgasz - tutaj masz wszystko co potrzebujesz. Udostępnij ten post Link to postu Udostępnij na innych stronach
tomekaruna 0 Zgłoś post Napisano Grudzień 7, 2009 Dzięki wielkie ! Przerobiłem sobie resztę zadanek i jako tako wyszły Mam pytanie co do tej linii jeszcze :nl < $1 > /tmp/numery.tmp ; cat /tmp/numery.tmp > $1: Mam rozumieć ją tak że początkowo mi numeruje parametr 1 a następnie nadpisuje go na ? Właśnie o co chodzi z ta linijką "/tmp/numery.tmp" tmp=temporary? oraz później dodajesz to .tmp jeszcze na koniec linijki. Jak byś mógł to wytłumaczyć Udostępnij ten post Link to postu Udostępnij na innych stronach
guziec 109 Zgłoś post Napisano Grudzień 7, 2009 Dzięki wielkie ! Przerobiłem sobie resztę zadanek i jako tako wyszły Mam pytanie co do tej linii jeszcze :nl < $1 > /tmp/numery.tmp ; cat /tmp/numery.tmp > $1: Mam rozumieć ją tak że początkowo mi numeruje parametr 1 a następnie nadpisuje go na ? Właśnie o co chodzi z ta linijką "/tmp/numery.tmp" tmp=temporary? oraz później dodajesz to .tmp jeszcze na koniec linijki. Jak byś mógł to wytłumaczyć To są dwa polecenia, oddzielone średnikami. W skryptach basha oddzielasz polecenia nową linią, albo średnikiem. Inaczej mówiąc wygląda to tak: nl < $1 > /tmp/numery.tmp cat /tmp/numery.tmp > $1 Ten /tmp/numery.tmp to plik tymczasowy, bo nie możesz zapisać wyniku do pliku z którego jednocześnie pobierasz dane, gdyż go wyzerujesz. Dlatego najprościej wynik polecenia nl na pliku który jest podany jako parametr $1 zapisać do innego pliku, a w następnym poleceniu zastępujesz jego zawartość tym z pliku tymczasowego. Można oczywiście zapisywać wynik do zmiennej tablicowej i nie korzystać z pliku tymczasowego, ale podejrzewam że mogłeś tego jeszcze nie mieć. ;> Udostępnij ten post Link to postu Udostępnij na innych stronach