Przydatne przykłady i wskazówki dotyczące linii poleceń Bash - część 2
- 4472
- 832
- Ignacy Modzelewski
W tej serii badamy różne wskazówki, sztuczki i przykłady wiersza poleceń Bash, które pomogą Ci stać się bardziej zaawansowanym użytkownikiem i koderem Bash. Bash zapewnia bogaty język scenariuszy i kodowania, który przywraca moc w rękach użytkownika i programisty. Bash pozwala również uczyć się w miarę wyboru, dzięki czemu jest to przyjemniejsze doświadczenie. Pierwszy artykuł z naszej serii można znaleźć w naszym artykule przydatne wskazówki i wskazówki dotyczące linii poleceń Bash.
W tej serii samouczków się nauczysz:
- Przydatne wskazówki, sztuczki i metody
- Jak wchodzić w interakcje z wierszem poleceń bash w zaawansowany sposób
- Jak ogólnie wyostrzyć swoje umiejętności i stać się bardziej biegły użytkownik Bash
Zastosowane wymagania i konwencje oprogramowania
Kategoria | Wymagania, konwencje lub wersja oprogramowania |
---|---|
System | Niezależny od rozkładu Linuksa |
Oprogramowanie | Wiersz poleceń Bash, system oparty na Linuksie |
Inny | Wszelkie narzędzie, które nie jest zawarte w skorupce Bash domyślnie można zainstalować za pomocą za pomocą sudo apt-get instal instal narzędzie (Lub Mnij instalacja dla systemów opartych na Redhat) |
Konwencje | # - Wymaga wykonywania Linux -Commands z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda$-Wymaga wykonania Linux-commands jako zwykłego niepewnego użytkownika |
Przykład 1: Łapanie tego iluzorycznego adresu IP
Czasami nasze skrypty muszą wiedzieć, jaki adres IP jest nasz komputer. Istnieje kilka różnych metod, choć żaden z nich nie jest w pełni niezawodny. Na przykład posiadanie różnych adapterów sieciowych w jednym komputerze może wprowadzić zmiany w wyjściu według różnych poleceń. Ponadto niektóre polecenia mają ograniczenia.
Na przykład Nazwa hosta
Dowództwo wyraźnie stwierdza w swoim instrukcji (dla -I
opcja), że wyświetli wszystkie adresy sieciowe hosta, ale do nie przyjmuje żadnych założeń dotyczących kolejności wyjścia. Wydaje się zatem, że używanie Nazwa hosta
może nie być najlepszą opcją.
Podane tutaj przykłady mają na celu wzmocnienie pozycji i przedstawienie sugestii dotyczących dalszej eksploracji i środowiska i/lub ogólnej poprawy. Znajomość zapytania maszyny lub używana sieć pozwoli na przekształcenie tych poleceń w bardziej stabilne skrypty retriever.
$ Myip = "$ (ip a | grep 'inet.*Global '| GREP -V Docker | SED |.*inet || ' |. grep -o "^[\.0-9] \+")"; echo "$ myip" 10.10.0.20 $ myip = "$ (trasa ip -s get 1 | grep -o" src [\.0-9] \+"| grep -o" [\.0-9] \+")"; echo "$ myip" 10.10.0.20
W pierwszym poleceniu użyliśmy ip a
(adres IP) Polecenie do pobrania listy wszystkich adresów IP przypisanych do tego urządzenia. Możesz wpisać ip a
polecenie bezpośrednio w wierszu poleceń Bash, aby zobaczyć, jak wygląda wyjście.
Następnie greppowaliśmy całą globalne inet
adaptery i usunęli wszelkie połączenia sieciowe Docker z listy (widać, że nie jest to idealne; na przykład inne oprogramowanie może tworzyć inne interfejsy sieciowe ssh
lub inne programy wirtualizacji, takie jak VirtualBox
, co również wymagałoby filtrowania).
Następnie przetwarzamy dane wejściowe z sed
Aby usunąć informacje inet
. Wreszcie, GREP dla rzeczywistego adresu IP z Tylko grep
I.mi. GREP -O
Polecenie, które używa wyrażenia regularnego do pobrania pełnego (IPv4) adresu IP.
Aby dowiedzieć się więcej o wyrażeniach regularnych, zobacz naszą regexps Bash dla początkujących z przykładami i zaawansowaną regexem Bash z przykładami artykułów.
Możesz również zauważyć, jak są tutaj ograniczenia; Jak włączyć adresy IP IPv6, jak dowiedzieć się, jaki jest główny adres IP, gdy istnieje wiele adapterów itp.
W drugim poleceniu szukamy pierwszej trasy na maszynie Trasa IP -s otrzyma 1
a następnie przetworz wyjście w podobny sposób. Jest to potencjalnie bardziej stabilne, aby przynajmniej znaleźć główny adres maszyny IPv4.
Daj nam znać swoją najlepszą metodę uzyskania adresu IP, a być może główny adres IPv4 za pomocą skryptów Bash w komentarzach poniżej!
Przykład 2: Ryzyko globania i potrzeba prawidłowego cytowania
$ dotyk a b c $ echo "$ (echo"*")"*$ echo $ (echo "*") a b c
W tym przykładzie najpierw tworzymy 3 pliki, A
, B
I C
, a następnie uruchamiamy dwa echo. Pierwszy echo prawidłowo cytuje *
wynikające z Echo "*"
wewnątrz subshella $ ()
, powodując dosłowność *
Wydajne przez pierwsze echo w poleceniu. Drugie polecenie Echo nie cytuje poprawnie *
i jako takie globbing bash; *
jest postrzegany jako identyfikator nazwy pliku, a pliki są wymienione i przekazywane na echo pięści. Aby to wyjaśnić, rozważ:
$ echo * a b c
W ten sposób widzimy potrzebę zawsze właściwie cytowania dowolnego tekstu, który może być interpretowany jako nazwa pliku, nawet jeśli taki tekst jest już cytowany poprawnie wewnątrz subshella, jak ma to miejsce tutaj ($ (echo „*”)
: Zwróć uwagę na cytowane *
).
Wniosek
W tym artykule przyjrzeliśmy się, jak uzyskać adres IP przy użyciu różnych metod i zastanawiając się nad rozszerzeniem go w celu dopasowania do różnych środowisk. Badaliśmy także Bash Globbing i potrzebę cytowania tekstów, które można poprawnie interpretować jako nazwy plików, aby uniknąć kulbowania.
- Przydatne przykłady i sztuczki
- Przydatne przykłady i wskazówki dotyczące linii poleceń Bash - część 2
- Przydatne przykłady i sztuczki
- Przydatne przykłady i wskazówki dotyczące linii poleceń Bash - część 4
- Przydatne przykłady i sztuczki
Powiązane samouczki Linux:
- Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
- Mastering Bash Script Loops
- Rzeczy do zainstalowania na Ubuntu 20.04
- Zagnieżdżone pętle w skryptach Bash
- Przydatne przykłady i sztuczki
- Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
- Ubuntu 20.04 Przewodnik
- Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć
- Przydatne przykłady i sztuczki
- Przydatne przykłady i wskazówki dotyczące linii poleceń Bash - część 4