Flagi poleceń Bash
Dzisiaj krótko omówimy sobie jedną z fundamentalnych rzeczy dotyczących Basha, czyli flagi poleceń shellowych. Składnia większości poleceń bash’owych pozwala nam zdefiniować pewne opcje, na podstawie których ma zostać odpalone polecenie. Przy pomocy flag definiuje się zmienne wejściowe, parametry lub tryby pracy dla polecenia.
Najlepiej wytłumaczyć to na przykładach
Przejdźmy po kilku poprzednich wpisach, wyszukajmy polecenia, w których używamy flag, i wytłumaczmy co oznaczają niektóre z nich (te najciekawsze).
We wpisie ODROID – headless setup, czyli wstępna konfiguracja przez SSH do znalezienia naszego serwera w sieci lokalnej użyliśmy polecenia:arp -a | grep -i -E '00:1e:06|0:1e:6'
Polecenie „arp” wyświetla tablicę zawierającą adresy urządzeń w sieci lokalnej wraz z ich MAC adresami. Następnie użyliśmy znaku „|”, czyli tak zwanego pipe’a, który bierze wyjście polecenia przed nim i przekierowuje go na wejście polecenia za nim. W powyższym poleceniu bierzemy tablicę ARP i poleceniem „grep” wyszukujemy w niej frazę, która nas interesuje, po czym ją wyświetlamy. Użyte zostały tutaj dwie flagi:
-i to „ignore-case”, co oznacza, że nie ma dla nas znaczenia wielkość liter w szukanej frazie,
-E to „extended-regexp”, co oznacza, że szukana fraza to rozszerzone wyrażenie regularne (regexp).
We wpisie Aktualizacja systemu – skrypt bash do usunięcia folderu użyliśmy polecenia:sudo rm -rf /var/cache/apt/archives/apt-fast
„rm” to skrót od „remove”, a flagi:
-r to „recursive”, co oznacza, że jeżeli usuwamy folder to chcemy go usunąć z całą zawartością (rekursywnie),
-f to „force”, co oznacza, że wymuszamy usunięcie wszystkich nieistotnych plików znajdujących się w folderze, bez wyświetlania żadnych ostrzeżeń.
Jak widać flagi możemy łączyć razem i wyświetlać po wspólnym znaku „-” zamiast każdy z osobna „-r -f”.
We wpisie Aktualizacja systemu – skrypt bash użyliśmy polecenia „ls” jest to jedno z podstawowych poleceń:ls -al
„ls” to polecenie, które wyświetla pliki znajdujące się w podanej lokalizacji wraz z ich właściwościami, a konkretne flagi to:
-a to „all”, co oznacza, że zostaną wyświetlone wszystkie pliki włącznie z tymi niewidocznymi, które w Linuxie w nazwie mają na początku kropkę,
-l to „long listing format”, co oznacza, że oprócz nazwy zostaną wyświetlone wszystkie właściwości plików (uprawnienia, właściciele – grupa i użytkownik, rozmiar, data utworzenia).
We wpisie Klucze SSH – logowanie do serwera bez hasła do generowania pary kluczy SSH użyliśmy polecenie:ssh-keygen -t rsa -b 4096 -C odroid -f ~/.ssh/odroid
Użyto następujących flag:
-t to „type”, czyli określenie typu klucza jaki chcemy stworzyć,
-b to „bits”, czyli jak długi ma być klucz w bitach,
-C to „comment”, czyli taki nieformalny identyfikator klucza, który będzie dodany na jego końcu,
-f to „file”, po której podajemy nazwę klucza oraz ścieżkę, gdzie ma zostać utworzony.
Na koniec najciekawsze, czyli polecenia do tworzenia i przywracania back-up’ów użyte we wpisie Kopia zapasowa całego serwera:sudo tar -cvpzf /home/odroid/backup/$(date +"%FT%H%M")_odroid_backup.tar.gz --exclude=/home/odroid/backup --one-file-system /
sudo tar -xvpzf /home/odroid/backup/2022-06-12T1550_odroid_backup.tar.gz -C / --numeric-owner
„tar” to skrót od „Tape Archiver”. Polecenie służy to tworzenia archiwów. Flagi jakie użyliśmy:
-c to „create”, co oznacza, że chcemy stworzyć nowe archiwum,
-x to „extract”, co oznacza, że chcemy rozpakować archiwum,
-v to „verbose”, co oznacza, że chcemy widzieć komunikaty z całego przebiegu działania usługi, dzięki czemu wiemy dokładnie jakie pliki są w danym momencie przetwarzane,
-p to „preserve-permissions”, co oznacza, że chcemy zachować informacje o uprawieniach do poszczególnych plików,
-z to „gzip”, co oznacza, że chcemy utworzyć archiwum gzip (rozszerzenie tar.gz),
-f to „file”, po której podajemy nazwę archiwum oraz ścieżkę, gdzie ma zostać utworzone,
–exclude określa, które pliki/foldery mają zostać wykluczone (pominięte) podczas tworzenia kopii,
–one-file-system zapobiega tworzeniu kopii z katalogów, które znajdują się w innych systemach plików niż bieżący,
-C to „directory”, po której określamy, z którego katalogu ma zostać zrobiona kopia.
Sporo tego prawda? A omówiliśmy sobie tylko kilka poleceń. Jednak nie ma konieczności pamiętania tego wszystkiego, bo wspomogą nas przy tym wbudowane w system narzędzia oraz strony internetowe będące bazami informacji o poszczególnych poleceniach.
Instrukcja do każdego polecenia zawsze przy sobie
Tak jak wspomniałem powyżej w Linuxie możemy sobie w każdym momencie podejrzeć manual (dokumentację) dla dowolnego polecenia. Wywołuje się to poprzez podanie nazwy polecenia i dopisanie do niej po spacji „––help” (niestety WordPress interpretuje mi dwa minusy jako duży myślnik, pamiętajcie, że w rzeczywistości musimy użyć dwóch minusów). Spróbujcie na swoim serwerze wpisać polecenie:ls --help
W rezultacie otrzymacie instrukcję jaka jest dopuszczalna składania polecenia, krótki opis do czego służy polecenie, listę flag (argumentów) jakie można użyć itp. Na tej podstawie w przypadku jakichkolwiek wątpliwości można w każdym momencie podejrzeć manual i uzyskać potrzebne informacje. Taką dokumentację trzeba się na początku nauczyć czytać, ale już po chwili jest to naprawdę potężne ułatwienie.
Podobnym tego typu źródłem jest strona SS64, która jest po prostu bazą poleceń wraz z ich manualami.
Aktualizacja 12.08.2022
W komentarzu pod tym wpisem kolega owen polecił bardzo fajne narzędzie, które w super przejrzysty sposób tłumaczy składnię komendy, która wkleimy w pole tekstowe. Można wklejać całe komendy! Link: explainshell.com.
Jeżeli materiał zawarty w tym wpisie jest dla Ciebie wartościowy i masz ochotę wesprzeć moją pracę to zapraszam na mój profil na >Patronite<. Zachęcam także do odwiedzenia mojej strony >tomaszdunia.pl<. Możesz także zagadać do mnie na Twitterze >@theto3k<.
Poprzedni wpis:
Stworzyłeś swój serwer! – podsumowanie rozdziału
Następny wpis:
LibreOffice – pakiet biurowy w przeglądarce
Kategorie: Dla początkujących,Poradniki - @ 2022-08-05 18:00
Tagi: --help, Bash, flagi, grep, Linux, ls, rm, SS64, ssh-keygen, tar, ubuntu
Polecam stronkę https://explainshell.com/. Po wklejeniu takiej komendy wszystko tłumaczy po kolei.
Jakie to jest epickie! Dzięki, wklejam do wpisu!