Programowanie w Ruby. Terminal dla początkujących - część 2
Damian Watroba
Software Engineer
Cześć! Tym razem przygotowaliśmy kolejny zestaw przydatnych poleceń, które pomogą ci zapoznać się z korzystaniem z terminala. Pierwszą część poradnika można znaleźć tutaj: Terminal dla początkujących - część 1.
Terminal - Teoria
Gdzie jestem?
data - Jeśli mamy taką potrzebę i chęć, możemy sprawdzić aktualną datę w terminalu.
damian@rubydev:~$ date
wto, 7 sty 2020,
Dołączanie i umieszczanie na liście
kot (concatenate) - to polecenie ma wiele zastosowań, ale najpopularniejszym z nich jest wyświetlanie zawartości plików.
W poniższym przykładzie widać dwa pliki - ruby_1.txt i ruby_2.txt - wraz z ich zawartością. The cat [nazwa pliku] pokazuje zawartość pojedynczego pliku, podczas gdy polecenie cat [nazwa pliku 1] [nazwa pliku 2] wyświetla zawartość obu plików we właściwej kolejności.
Jest jeszcze jedna rzecz, którą możemy zrobić z kot polecenie - przekierowanie standardowego wyjścia do nowego pliku przy użyciu polecenia > sign. Oznacza to, że zawartość wyświetlana na ekranie zostanie przekierowana do zadeklarowanego pliku. Jeśli wskazany plik nie istnieje we wskazanej lokalizacji, zostanie on utworzony automatycznie.
Co my tu mamy?
ps (status procesu) - wypisuje podstawowe informacje o procesach w systemie. Polecenie to można porównać do Menedżera zadań systemu Windows, w którym dostępna jest lista wszystkich uruchomionych aplikacji i procesów. Każda aplikacja, program lub uruchomione polecenie staje się procesem z unikalnym identyfikatorem, tak zwanym PID (Process IDentifier).
Jak widać ps nie pokazało nam zbyt wiele. Aby sprawdzić wszystkie aktywne procesy, będziemy musieli wywołać ps z pomocniczy argument.
Aby zobaczyć wszystkie procesy w systemie, uzywajac skladni BSD:
ps ax
ps axu
zabić - Czasami aplikacja lub program przestaje odpowiadać. Jest to sytuacja, w której zabić przydaje się polecenie. Do zabić proces, wszystko, co musisz zrobić, to ukończyć zabić z jego PID.
Jak znaleźć PID tego procesu? Najlepiej użyć wcześniej wspomnianego ps aux polecenie. Może się zdarzyć, że zabić nie wystarczy, ponieważ proces czeka na zakończenie innego zależnego procesu. Dlatego, zabić jest również często używany z -9 opcja. Oznacza ona natychmiastowe zakończenie uruchomionego procesu, więc przed użyciem tej opcji należy upewnić się, że wszystkie ważne zmiany zostały zapisane. Przyjrzyjmy się przykładowi takiego polecenia:
damian@rubydev:~$ kill -9 1234
Echo!
echo - jest to polecenie, które zwraca powierzony mu tekst. Podobnie jak w przypadku kotmożna skierować wprowadzony tekst do pliku za pomocą funkcji echo polecenie.
Może to być przydatne
Gdy chcemy wyświetlić historię wprowadzonych wcześniej poleceń, możemy skorzystać z funkcji historia polecenie.
Jeśli chcesz wyczyścić okno terminala, potrzebujesz polecenia czysty polecenie.
The wyjście jak sama nazwa wskazuje, zamyka terminal lub aktualnie otwartą kartę.
Początek i koniec
The głowa wyświetla początek pliku lub standardowego wyjścia. Domyślną wartością jest pierwsze dziesięć linii. Można ją dostosować za pomocą polecenia -n opcja, w której można umieścić dowolną liczbę całkowitą pod n. Aby lepiej to zilustrować, posłużę się przykładem.
Będziemy potrzebować pliku tekstowego. Użyjmy już wspomnianego historia i polecenie przekierowania > charakter.
damian@rubydev:~$ history > history.txt
W ten sposób utworzony został plik z całą historią poleceń. Następnie, używając head -15 history.txtmożliwe jest wyświetlenie pierwszych piętnastu poleceń wprowadzonych do terminala.
Podobnie ogon pokaże nam ostatnie linie wybranego pliku.
Wyszukiwanie
grep (globalne drukowanie wyrażeń regularnych) służy do wyszukiwania w tekście ciągu pasującego do podanego wyrażenia regularnego (RegExp). Jest ona bardzo często używana do znajdowania określonego wyrażenia w pliku lub "filtrowania" zwracanych danych wyjściowych. W tym celu użyjmy wcześniej utworzonego wyrażenia regularnego history.txt i sprawdzić, jak często ps polecenie było używane do tej pory:
damian@rubydev:~$ grep ps history.txt
82 echo "Lorem ipsum rubydev 1" > ruby_1.txt
84 echo "Lorem ipsum rubydev 2" > ruby_2.txt
92 ps
93 ps aux
94 ps --help
95 man ps
96 ps -h
98 ps --help
99 ps -ejH
100 ps aux
101 man ps
102 ps -aux
103 ps aux
109 history | grep ps
113 echo "lorem ipsum rubydev" > rubydev.rb
Jak widać, grep znaleziono również słowa zawierające frazę ps. Wyrażenie użyte w naszym przykładzie to ps tylko. Planuję napisać osobny artykuł na temat wyrażeń regularnych, ale na razie zachęcam do samodzielnego zgłębienia tematu. W tej chwili wystarczy podstawowa wiedza.
Łączenie poleceń
| (pipe) to symbol, który pozwala nam łączyć kilka poleceń (procesów) i uruchamiać je w tym samym czasie. W szczególności, możemy połączyć wyjście (stdout) jednego polecenia z wejściem (stdin) drugiego. Jest to bardzo przydatna funkcja.
Wyjście (stdout) aplikacji historia polecenie będzie przeszukiwane przez grep i zwróci wszystkie ciągi znaków z dopasowaniem ps wyrażenie.
historia | ogon -5
W tym przypadku użycie ogon za pomocą polecenia -5 wyświetli pięć ostatnich wierszy wyjścia (stdout) programu historia polecenie.
Ta kombinacja jest szczególnie przydatna podczas wyszukiwania PID procesu, który ma zostać zakończony. Należy pamiętać, że uruchomienie funkcji grep polecenie również utworzy proces, więc zwykle będzie widoczny PID procesu grep w ostatnim wierszu.
Dostęp do plików i katalogów
Zanim przejdziemy do polecenia zmieniającego typ zezwoleń dostępu, warto wspomnieć, że każdy system operacyjny posiada tzw. prawa dostępu. Oznacza to, że każdy katalog lub plik zawiera metadane o tym, kto ma do niego dostęp. Pierwsza kolumna poniższego "wyjścia" mówi nam o tym wszystkim (informacje wyjściowe wyświetlane w oknie terminala):
historia | ogon -5
Dostęp do plików i katalogów jest definiowany przez trzy komponenty. Pierwszy z nich (user) oznacza pojedynczego użytkownika, drugi (group) oznacza grupę, podczas gdy trzeci (other) odnosi się do wszystkich innych użytkowników.
d - określa, czy jest to katalog czy plik (d - katalog, f - plik)
rwx - prawa użytkownika
r-x - uprawnienia dla grupy
r-x - autoryzowane dla wszystkich innych użytkowników
Dla uproszczenia można podzielić go na trzy części:
Przejdźmy teraz do samego znaczenia tych praw:
r (read) - umożliwia odczytanie zawartości
w (zapis) - umożliwia modyfikowanie zawartości
x (wykonaj) - umożliwia wykonanie pliku lub otwarcie katalogu.
Uprawnienia do plików lub katalogów można zmienić za pomocą funkcji chmod (tryb zmiany). Najprostszym sposobem zmiany uprawnień jest użycie wbudowanego systemu i podanie numeru uprawnienia dla użytkownika, grupy i innych.
Aby zastosować tę wiedzę w praktyce, zmieńmy uprawnienia dla wcześniej wymienionych wideo dla grup i innych użytkowników - zabierz wszystkie uprawnienia dla tych dwóch, ale pozostaw pełne zezwolenie tylko dla pojedynczego użytkownika. Zgodnie z powyższą tabelą, "brak uprawnień" jest oznaczony liczbą 0. Natychmiast po chmod należy wstawić trzy cyfry, z których każda określa uprawnienia dla danej kategorii (użytkownik - grupa - inni). Na końcu należy podać nazwę pliku lub katalogu. Polecenie powinno wyglądać następująco:
damian@rubydev:~$ chmod 700 Wideo
damian@rubydev:~$ ls -l | tail -1
drwx------ 2 damian damian 4096 sty 6 17:41 Wideo
Podsumowanie
Istnieje cały rój innych poleceń, a najłatwiejszym sposobem na opanowanie ich wszystkich jest ćwiczenie rozwiązywania konkretnych problemów. Jeśli chcesz dowiedzieć się o nich więcej, Polecam kieszonkowy leksykon poleceń Linuksa. Moim zdaniem jest to przyjemny sposób na zabicie czasu w transporcie publicznym.