# 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 ``` :::