---
# System prepended metadata

title: Linux 1
tags: [linux]

---

# Linux 1
###### tags: `linux`

## Zadanie 1
:::spoiler
* `ll` = `ls -lAFbhv | less -XER`
	`ls -lAFbhv`
		`-l` - długi format listingu (z uprawnieniami, włascicielem pliki itp.)
		`-A` - pokazuje także pliki zaczynające się od . i ..
		`-F` - Dodaje / na końcu katalogów
		`-b` - Dodaje '' do napisów zawierajacych znaki niewyświetlane jak spacja
		`-h` - Dodaje jednostki wielkości plików/katalogów
		`-v` - Sortowanie
	`-color=always` - koloruje odpowiednio wyniki zapytania w tym przypadku zawsze korzystając ze zmiennej LS_Colors
	
	`less -XER`
		`-X` - wyłącza inicjalizace np. nie czyści ekranu
		`-E` - wyłącz program po osiągnięciu końca pliku
		`-R` - wyświetla znaki specjalne
		
		
* `gentmp` = `date +"tmp%Y-%m-%d %H:%M:%S"`
	
	
* `genpwd` = `tr -dc '3-9A-HJ-NP-Z' </dev/urandom | head -c 10`
:::
## Zadanie 2
:::spoiler
### `grep` - Program służący do wyszukiwania wzorca w tekscie
Program ten domyślnie wypisuje te linie tekstu w których zdajduje się wzorzec. po urzyciu flagi 
Przykładowe Opcje: 
*  `-E` pozwala na wyszukiwanie za pomocą regex'a zamiennie z `egrep`
*  `-i` wyłącza rozróznianie wielkości liter
*  `-v` wyszukuje linie nie zawierające wzorca
*  `-x` wybiera linię tylko jeśli w całości pasuje do wzorca
*  `-m NUM` wybiera tylko pierwsze `NUM` wyników
*  `-n` wypisuje dodatkowo numery linii
*  wiele wiele innych opcji
 Przykłady użycia:
*  `grep  pan zad2.txt` - wyszukuje linie w którym znajduje się wzorzec 'pan'
*  `grep -E '^pan*' zad2.txt` - wyszukuje linie w zaczynające się od 'pan'
*  `grep -E '*człowiek$' zad2.txt` - wyszukuje linie kończące się na 'człowiek'
*  `grep -E '^[a-z]{3,5}Tadeusz*' zad2.txt -i` - wyszukuje linie posiadające od 3 do 5 znaków przed słowem Tadeusz przy wyłączonym rozróznianiu wielkości znaków
:::
## Zadanie 3
:::spoiler
### `find` - Program służący do wyszukiwania plików w katalogu
Program ten wypisuje nazwy znalezionych plików pasujących do wzorca wraz ze ścieżką do nich
Przykładowe Opcje: 
*  `-name` pozwala na wyszukiwanie za pomocą regex'a
*  `-ls` wypisuje rezultat w formacie `ls -dils`
*  `-user USER` plik należący do `USER`
*  `-maxdepth LEVELS` przeszukuje katalogi zagłębiając się maksymalnie na `LEVELS` poziomów
*  wiele wiele innych opcji
 Przykłady użycia:
*  `find  -maxdepth 1 -name "plik1[0-9].*" -ls ` - wyszukuje tylko w bierzącym katalogu
*  `find  -maxdepth 3 -name "plik1[0-9].*" -ls ` - wyszukuje zagłębiając się maxymalnie na 2 dodatkowe poziomy pliki z dowolnym rozszerzeniam 
*  `find ~/Pulpit -name "*.txt"` - wyszukuje wszystkie pliki txt w katalogu i podkatalogach `~/Pulpit`
:::
## Zadanie 4
todo
:::spoiler

:::
## Zadanie 5
:::spoiler
* `apt list --installed | awk '{split($0, a, "/"); print a[1]}' | grep -vxf <(ls /usr/share/doc)` - polecenie wypisuje listę pakietów nieposiadającą katalogu w `/usr/share/doc)`
* `ls /usr/share/doc | grep -vxf <(apt list --installed | awk '{split($0, a, "/"); print a[1]}')` - polecenie wypisuje listę pakietów nieposiadającą katalogu w `/usr/share/doc)`

:::
## Zadanie 6
:::spoiler

:::
## Zadanie 7
:::spoiler

:::
## Zadanie 8
:::spoiler

:::
## Zadanie 9
todo
:::spoiler

:::
## Zadanie 10
:::spoiler
```bash=
str=$1
i=1
while grep '^G*$\|^B*$\|^R*$' <<< $str -v && (($i < 1000))
do 
	i=$((i+1))
	temp=$(grep -Eo 'RB|BR|GB|BG|RG|GR' <<< $str | head -1)
	if [[ "$temp" == 'RB' || "$temp" == 'BR' ]]
	then
		swap='GG'
	elif [[ "$temp" == 'GB' || "$temp" == 'BG' ]]
	then
		swap='RR'
	else
		swap='BB'
	fi
	str=$(sed "s/RB\|BR\|GB\|BG\|RG\|GR/$swap/" <<< $str)
done
echo $str
```
:::