You are on page 1of 23

b) touch C/P -tworzenie nowego pustego pliku

c) cp BAZA/C/P BAZA/C/P_kopia

d) mv BAZA/C/P_kopia BAZA/C/Plik2

e) ln -s BAZA/C/P BAZA/A/linkA -tworzenie linku, -s oznacza ze jest to symboliczn

ln BAZA/C/Plik2 BAZA/B/ukryty -tworzenie linku sztywnego

ps albo jobs -trzeba dopytać o co dokładnie chodzi

f) fg – przenosi na pierwszy plan. (bg – przenosi na drugi plan)

g) kill XXX // kill -sigstop XXX

# Pobierz ID aktualnego użytkownika


current_user=$(id -u)
# Wyszukaj procesy należące do aktualnego użytkownika, które uruchomiły
program sleep
processes=$(ps -u $current_user -o pid= -o command= | grep -v "$0" |
grep sleep)

# Wyświetl znalezione procesy echo

"$processes"
Vim dekompozytor.sh

for dir in "$@"; do

# Znalezienie plików zgodnych z danym szablonem files=$

(find "$dir" -type f -name '???[0-9][0-9].dat')

# Wyświetlenie ilości znalezionych plików count=$

(echo "$files" | wc -l)

echo "W katalogu $dir znaleziono $count plików:" >&2

# Wyświetlenie nazw znalezionych plików

echo "$files" done


W pliku są dane o rozmowach tele. System nalicza źle koszty rozmów. Przygotuj skrypt o nazwie billing.sh,
który poprawnie wyliczy koszt rozmowy i utworzy nowy plik gdzie zastąpi błędne dane poprawnymi
(usunie ostatnia kolumnę i wstawi nowa). Przedostatnia kolumna zawiera info o czasie rozmowy
wyrażonym w impulsach. Koszt każdego impulsu to 2.9 grosza. Postaraj się aby wynik był w złotych i
groszach, czyli xxxx.yy gdzie xxxx to złotówki …

while read -r line; do duration=$(echo "$line" | cut -d " " -f 8)

cost=$(echo "scale=2; $duration * 0.029" | bc) printf "%s %.2f\n" $(echo

"$line" | cut -d' ' -f1-7) "$cost" >> "$output_file" done < "$input_file"

Zadanie 1
Przygotuj skrypt tworzący drzewo katalogów jednym poleceniem w katalogu bazowym
podanym jako argument

Katalog_bazowy

├── <Data w formacie RRRR.MM.DD

i │ ├── S1

│ ├── S2

...

│ └── S9

└── kat2

└── podkat1

mkdir -p "$1"/$(date -- "+%Y.%m.%d")/S{1..9}/../../kat2/podkat1 Plik

/etc/services zbudowany jest w postaci:

<nazwa_usługi> numer_usługi/reszta wiersza w pliku


Zadanie 2:
Przygotuj skrypt, który wyznaczy wartość mediany z numeru usługi. (nie trzeba
liczyć
średniej przy parzystej ilości
wierszy).
Uwaga. 1 Plik może zawierać komentarze rozpoczynające się znakiem #. Takie
wiersze
należy
pominąć.
Uwaga. 2 Do zamiany znaków tabulacji na spacje użyj komendy expand

Uwaga. 3 Numery usług mogą nie być w kolejności rosnącej w pliku services grep -v

"^#" /etc/services | awk '{print $2}' | expand | sort -n | awk '{

a[NR]=$1

END { n=NR if[ n % 2 == 0 ] { # jeśli ilość elementów jest

parzysta, wyznaczamy średnią z dwóch środkowych elementów print

(a[n/2] + a[n/2+1])/2

} else { # w przeciwnym razie wyznaczamy środkowy element

print a[(n+1)/2]

}'
Zadanie 4.

Używając poleceń ls, wc, cut i grep oblicz ile jest podkatalogów.

Zadanie 6.
Używając skryptu z zadania 5 napisz skrypt o nazwie sk_2, który do pliku o nazwie
<USER_NAME>_<ROK><MIES><DZIEN>.txt zapisze wynik działania skryptu z zadania 5.
if (( “$#” > 0)) then
for i in $* do echo “ Katalog: $n, Wynik: “ $(tree -L 1 “$n” | tail -1) >> “
$USER_$(date “+%F”) done else echo “ Zły argument, spróbuj $0 <folder>.”
1<&2 fi

Przygotuj skrypt C_2_F.sh, który przelicza temperaturę ze st. C na Fahrenheit echo

$(echo "scale=2;$1*9/5+32" | bc)

Zadanie 9.

Używając pętli for oraz [ ….

Wylistować nazwy plików i katalogów w katalogu domowym, tak aby uzyskać napis

nazwa jest plikiem nazwa jest katalogiem

for file in ~/*

do then echo "$file jest plikiem" elif [ -d "$file"

] then echo "$file jest katalogiem" fi done


tree kat1 kat2
1a) mkdir -p “k@ta @logi”/$(date – “+%Y.%m%d”)/{1..23}

1b) ls -1s | sort -n

1c) cp ./p2pp2/?[0-9]*a ./pipp2/

1d) ln -s p3ppl/dane_src p1pp1/dane_lnk

1e) chmod 7 5 albo 4 0 jola

1f) a, c, d
Zad2
if [ "$#" -ne 2 ]; then
echo "Sposób użycia: $0 PID plik_konfiguracyjny"
exit 1
fi

# Przypisanie argumentów do zmiennych pid="$1"


config_file="$2"

# Wyszukanie procesów z podanym PIDem i nazwą pliku konfiguracyjnego pids=$(pgrep


-P "$pid" -f "$config_file")

# Sprawdzenie, czy znaleziono jakieś procesy if [ -z


"$pids" ]; then echo "Nie znaleziono procesów dla
podanego PIDu i pliku konfiguracyjnego" exit 1
fi

# Wstrzymanie wykonywania procesów kill


-STOP $pids

# Wyświetlenie PIDów wstrzymanych procesów


echo "Procesy wstrzymane: $pids"

Zad3
# Inicjalizacja zmiennych
liczba_plikow=0 liczba_katalogow=0
liczba_linkow=0
# Pętla po argumentach for plik in "$@"; do
if [ -f "$plik" ]; then liczba_plikow=$
((liczba_plikow+1)) elif [ -d "$plik" ];
then liczba_katalogow=$
((liczba_katalogow+1)) elif [ -L
"$plik" ]; then liczba_linkow=$
((liczba_linkow+1)) fi done

# Wyświetlenie wyników echo


"plików: $liczba_plikow" echo
"katalogów: $liczba_katalogow" echo
"linków: $liczba_linkow"

Zad4
Zad5

awk -F',' 'NR > 1 { sum[$1,$3] += $15; count[$1,$3]++ } END { for (i in sum) print i, sum[i]/count[i]
}' data.csv | awk -F',' '{ printf "%s %s %.2f\n", $1, $2, $3 }'

a) mkdir -p Kolokwium2/"d@ne" Kolokwium2/"\$wyniki & drzewa"


Kolokwium2/skrypty
b) cp zad* ./Kolokwium2/skrypty
c) touch ./Kolokwium2/"d@ne"/errors
d) echo "Uruchomiono: `date`" >> ./Kolokwium2/"d@ne"/errors
e) mv zad2.txt egzekutor1.sh
f) chmod 700 zad2.txt
g) ./egzakutor1.sh & 2>> ./Kolokwium2/"d@ne"/errors
h) echo "Koniec: `date`" >> ./Kolokwium2/"d@ne"/errors

touch 'ka*at'
pwd > 'ka*at'
cp tarantula ../
#!/bin/bash
tree ../../ > ../drzewa/drzewo ls
-Rl ../../ > ../drzewa/pliki touch
../all cat ../-uwagi >> ../all
echo >> ../all cat 'ka*at' >>
../all echo >> ../all cat
../drzewa/drzewo >> ../all echo >>
../all tar -cvfz
kolokwium/304300.tgz ../
compress kolokwium/304300.tgz

a) mkdir -p kolokwium/"\$Pod * katalog" kolokwium/"% next


one"/"Kolejny i \$polk@" kolokwium/drzewa
kolokwium/skrypty

b) touch kolokwium/-uwagi echo "Darka" >> kolokwium/-


uwagi pwd >> kolokwium/-uwagi
date >> kolokwium/-uwagi

c) ln ./kolokwium/-uwagi ./kolokwium/skrypty/hlink-do-uwag

d) ln -s "./kolokwium/-uwagi" ./kolokwium/skrypty/slink-do-
uwag
a) echo "Zadanie 2" 2>&1

b) pwd > ./Kolokwium2/"d@ne"/"\$a*2"

c) ls -Ril ./Kolokwium2 >> ./Kolokwium2/"d@ne"/"\$a*2"

d) tree /etc >> ./Kolokwium2/"d@ne"/drzewo

a) Echo "Zadanie 3" 2>&1


b) ln -s ./Kolokwium2/"d@ne"/drzewo ./Kolokwium2/"\$wyniki &
drzewa"/slink

c) ln ./Kolokwium2/"d@ne"/drzewo ./Kolokwium2/"\$wyniki &


drzewa"/hlink

d) ps -aux > ./Kolokwium2/"\$wyniki & drzewa"/procesy

e) pkill -9 moje_zadanie

a) echo "Zadanie 4" 2>&1

b) tar -cvf ./Backup/Archiwum.tgz ./Kolokwium2 >


./Backup/Archiwum.log 2>./Backup/Archiwum.err compress
./Backup/Archiwum.tgz
#alex przewaznie chce compress razem z pakowaniem wiec piszecie tar
-costam i musicie dopisac sami .Z do pliku! dopytajcie go o to bo
on o tym nie mowi ale tak jest
c) echo "Archiwum.log" cat ./Backup/Archiwum.log 2>&1
cat ./Backup/Archiwum.err 2>&1

#!/bin/bash
cp ./Backup/Archiwum.tgz.Z ./Restore/
uncompress ./Restore/Archiwum.tgz.Z cd
Restore
tar -xvf Archiwum.tgz #rm -
r ./Restore/Archiwum.tgz

You might also like