Co to jest powłoka RC i jak ją zainstalować w systemie Linux

Rc Shell 00 Featured Image

Powłoka rc to prosty i innowacyjny interpreter poleceń zbudowany dla rodziny systemów operacyjnych Plan 9. Obecnie jest częścią plan9portktóry jest pakietem oprogramowania Plan 9 dostępnym dla systemu Linux.

Rc ma na celu ulepszenie domyślnej powłoki UNIX i wprowadza czystszą składnię do pisania skryptów. Jest również zbudowany tak, aby był jak najprostszy do zrozumienia. To sprawia, że ​​rc jest dobrym programem dla kogoś, kto chce nauczyć się, jak działa powłoka.

Czym jest plan 9?

W podstawowym sensie Plan 9 jest następcą systemu operacyjnego UNIX. Został opracowany przez Bell Labs jako eksperymentalny projekt od wczesnych lat 80. do 2015 r. Od tego czasu grupa wolontariuszy zajmuje się obsługą systemu operacyjnego i do dziś widzi sporadyczne aktualizacje.

Rc Shell 02 9legacy Widok strony internetowej

Plan 9 ma na celu stworzenie prostego i przystępnego systemu zarówno dla programistów, jak i użytkowników. Czyni to poprzez wdrażanie i ulepszanie podstawowej koncepcji UNIX. Jako taki, Plan 9 zawiera wiele podobnych poleceń do UNIXa i innych uniksopodobnych, takich jak cp, mv oraz rm.

Co więcej, dodaje również szereg nowych narzędzi i funkcji, które są unikalne dla systemu operacyjnego. Na przykład sam to potężny edytor tekstu, który można w pełni kontrolować za pomocą wyrażeń regularnych.

Rc Shell 03 Sam Edytor Linux

Jedną z najbardziej innowacyjnych funkcji Planu 9 jest powłoka rc. Jest to interpreter poleceń podobny do Bash i umożliwia tworzenie skryptów, które następnie można wykorzystać do zautomatyzowania maszyny. rc ma również na celu uproszczenie tworzenia tych skryptów poprzez usunięcie wszystkich niepotrzebnych i zbędnych funkcji.

Powłoka Rc 04 Rc Manpage 1

Instalowanie powłoki RC

Instalacja powłoki rc w Linuksie jest stosunkowo prosta.

  1. Skopiuj repozytorium Git narzędzi Plan 9 na swój komputer. Możesz to zrobić, instalując Git i uruchamiając następujące polecenia:
git clone https://github.com/9fans/plan9port.git /home/$USER/plan9port
cd plan9port
  1. Następnie uruchom skrypt instalacyjny dołączony do repozytorium. Jest to prosty skrypt, który kompiluje konstruktora Planu 9, który z kolei kompiluje pozostałe narzędzia. Aby to zrobić, musisz uruchomić:
Rc Shell 05 Kompilacja Plan9port
  1. Po zakończeniu możesz teraz korzystać z narzędzi Plan 9, przechodząc do katalogu bin repozytorium. Na przykład wpiszemy ./bin/acme do uruchomienia graficznego edytora tekstu.
Rc Shell 06 Edytor Acme
  1. Ważną rzeczą do zapamiętania jest to, że te polecenia będą działać tylko wtedy, gdy jesteś w katalogu „bin” plan9port. Aby użyć ich gdzie indziej, musisz dodać ten konkretny katalog do zmiennej „PATH”. Aby to zrobić, musisz otworzyć plik „.bash_profile” w swoim katalogu domowym:
nano /home/$USER/.bash_profile
  1. Dodaj następujący ciąg tekstu na końcu zmiennej „PATH”:
:/home/$USER/plan9port/bin/
Rc Shell 07 Edycja zmiennej ścieżki

Zapisz i wyjdź z pliku, a następnie zrestartuj powłokę rc.

Używanie i pisanie podstawowych skryptów RC

Gdy to zrobisz, możesz teraz zacząć pisać skrypty w rc. Aby uzyskać dostęp do tej powłoki, wystarczy uruchomić następujące polecenie:

Spowoduje to zmianę monitu terminala na „%”. Oznacza to, że jesteś teraz w powłoce rc. Stąd nadal możesz uzyskać dostęp do wszystkich swoich plików, a także tradycyjnych poleceń systemu Linux. Na przykład wpiszemy ls aby uzyskać listę bieżącego katalogu.

Powłoka RC 08 Ls Wewnątrz RC

Zmienne i operatory plików

Jednym z najczęstszych zastosowań języka powłoki jest przechowywanie dowolnych wartości oraz manipulowanie plikami. Pod tym względem powłoka rc zachowuje się dokładnie jak Bash.

  1. Napiszemy, co następuje, aby utworzyć zmienną o nazwie „test” i przypisać jej słowo „hello”:
  1. Następnie wpiszemy następujące polecenie, aby dołączyć zmienną testową do pliku „world.txt”:
  1. Z drugiej strony możliwe jest również poinstruowanie operatora odczytu, aby używał zawartości pliku jako danych wejściowych dla programu:
Rc Shell 09 Zmienne i drukowanie

Korzystanie z rur UNIX w powłoce RC

Inną powszechną funkcją w językach powłoki jest możliwość tworzenia potoków UNIX. Jest to specjalny typ operatora pliku, w którym można przekazać dane wyjściowe jednego programu do danych wejściowych innego programu.

Czytać  Zrozumienie struktury katalogów wirtualnych systemu Linux

Podobnie do powyższych funkcji, rc shell w dużej mierze stosuje tradycyjną składnię Bash podczas tworzenia potoków UNIX.

  1. Uruchomimy następujące polecenie, aby przekazać zawartość pliku „world.txt” do pagera systemowego:
  1. Powinniśmy tutaj zauważyć, że potoki UNIX w rc są nieliniowe. Oznacza to, że możliwe jest przekazanie danych wyjściowych z dwóch aktywnych programów w jednym wejściu programu. Na przykład możemy uruchomić następujące polecenie, aby porównać wyniki dwóch programów:
cmp <{echo hello} <{echo helloo}
Rc Shell 10 Rury rozgałęziające

Łączenie poleceń w Rc Shell

Oprócz używania potoków UNIX, możliwe jest również łączenie różnych poleceń w powłoce rc. Pozwala to na uruchamianie programów po kolei bez konieczności wpisywania ich w osobnych wierszach. Sprawdź to polecenie, które pozwala ci uruchomić less po bieganiu echo:

echo hello-world >> hello.txt; less hello.txt

Co więcej, rc pozwala również sprawdzić kod statusu programu przed przejściem do sąsiedniego polecenia. Może to być przydatne, jeśli Twój program zależy od sukcesu lub niepowodzenia innych programów.

W tym celu rc udostępnia dwa operatory: &&” oraz ||. Są to znaki specjalne, których możesz użyć do zastąpienia symbolu średnika.

  • The && Operator mówi rc, aby łączył i uruchamiał programy, o ile polecenie po lewej stronie działa pomyślnie. Jest to pomocne w sytuacjach, w których cały łańcuch musi działać poprawnie.
  • The || operator mówi rc, aby łączył i uruchamiał programy, jeśli polecenie po lewej stronie nie działa. W przeciwieństwie do poprzedniego operatora, jest to niezwykle przydatne, jeśli próbujesz naprawić błędy w swoich skryptach i programach.

Wiedząc o tym, możesz użyć tych operatorów do tworzenia poleceń, które mogą kolejkować i sprawdzać programy. Na przykład poinstruujemy rc, aby tylko uruchamiał touch jeśli mkdir działa pomyślnie:

mkdir ./hello && touch ./hello/world
Rc Shell 11 Połączone polecenia

Używanie ciągów i list w powłoce RC

Jedną z największych różnic między Bash a powłoką rc jest skupienie się na uproszczeniu używania zwykłego tekstu. W tradycyjnej powłoce tekst i łańcuchy są często trudne do zadeklarowania w funkcjach i zmiennych.

Ten problem wynika częściowo z faktu, że istnieją dwa sposoby deklarowania ciągu w Bash. Możliwe jest ujęcie tekstu zarówno w pojedynczych, jak i podwójnych cudzysłowach, aby traktować słowo jako ciąg.

Rc Shell 12 cytatów z wieloma ciągami

W związku z tym rc dąży do zmniejszenia tej złożoności, używając tylko pojedynczych cudzysłowów podczas deklarowania łańcuchów. Dzięki temu możesz bez problemu używać znaków specjalnych i kontrolnych.

Używając tego polecenia zamienimy nawias kwadratowy w ciąg bez żadnych znaków ucieczki:

# rc
hello='[world]'
# bash
hello='\[world\]'

Co więcej, rc pozwala również manipulować tymi zmiennymi łańcuchowymi i bezpośrednio kompilować je jako listę. Może to być szczególnie przydatne, jeśli chcesz utworzyć skrypt przechowujący zmienne w prostej tablicy.

Aby to zrobić, wystarczy umieścić grupę ciągów w nawiasach. W związku z tym napiszemy, co następuje, aby utworzyć zmienną z 5 elementami w środku:

shop=(eggs milk cheese rice beef)

Wiedząc o tym, możesz użyć różnych poleceń, aby wyciągnąć dane z tablicy. Na przykład to polecenie wyciągnie pierwsze trzy elementy tablicy:

Rc Shell 13 Podstawowe listy

Podstawowa kontrola przepływu w powłoce RC

Oprócz bycia prostą powłoką, rc jest również pełnym językiem programowania. Oznacza to, że jest zdolny nie tylko do podstawowej manipulacji ciągami znaków, ale także do logicznego rozgałęziania podobnego do Pythona.

Rc Shell 14 Przykładowy kod złożony

Rc pozwala na łatwe tworzenie instrukcji if-then, pętli for oraz możliwość definiowania złożonych funkcji. Może to być niezwykle pomocne, jeśli dopiero zaczynasz programowanie.

Korzystanie z instrukcji warunkowych

Jedną z najbardziej podstawowych cech języków programowania jest możliwość tworzenia instrukcji warunkowych. Są to struktury, które mówią programowi, co ma robić w zależności od okoliczności, w jakich się znajduje. Na przykład możesz powiedzieć programowi, aby działał tylko wtedy, gdy ma wartość 1.

Rc Shell 15 Widok podstawowych instrukcji warunkowych

Możesz napisać instrukcję warunkową dla rc w jednym wierszu:

  • Pole „warunek” to lista poleceń, które rc będzie próbował wykonać. Sposób, w jaki to działa, polega na tym, że każdy program, który pomyślnie się uruchamia, zapewnia wartość „prawda”.
  • Z drugiej strony, pole „program” zależy od wartości „prawda” pola warunku, aby uruchomić dowolne polecenie, które mu wydasz.
Czytać  5 dystrybucji Arch Linux, które są łatwiejsze w instalacji i obsłudze

W przeciwieństwie do Bash, to podejście pozwala na użycie prawie każdego typu programu do instrukcji warunkowej skryptu. Na przykład możesz powiedzieć rc, aby uruchamiał tę instrukcję tylko wtedy, gdy plik hello.world istnieje w bieżącym katalogu:

if ( test -r hello.world ) echo "there is a hello world!"

Tworzenie prostych pętli

Oprócz pisania instrukcji warunkowych, możliwe jest również użycie rc do tworzenia powtarzających się skryptów poprzez pętle. Pętla to struktura, która pozwala na powtarzanie określonego polecenia określoną liczbę razy.

Rc Shell 15 Widok podstawowych instrukcji warunkowych

Podobnie jak w przypadku instrukcji warunkowych, składnię pętli można zapisać w jednym wierszu:

for ( i in step ) program
  • Pole „krok” może być albo zmienną, albo programem, przez który rc będzie przechodził jeden po drugim. Na przykład napisanie listy tutaj powie rc, aby przejrzał każdy element listy.
  • Pole „program” to wiersz kodu, który rc ma uruchamiać za każdym razem, gdy przechodzi przez pole step.

Tworzenie funkcji w Rc

Wreszcie, możliwe jest również utworzenie ogólnej funkcji w rc. Podobnie jak w przypadku innych języków programowania, jest to struktura, którą można zdefiniować w celu wykonania niestandardowego zadania.

Rc Shell 17 Podstawowy kod funkcji

Na przykład poniższy kod utworzy funkcję, która używa zarówno instrukcji warunkowych, jak i pętli for:

fn hello {
    for (i in ./hello/) if(test -r ./hello/$i) echo "There is a file here!"
}

Choć może się to wydawać skomplikowane, napisanie funkcji jest niezwykle proste. W swej istocie podstawowa składnia funkcji rc wygląda mniej więcej tak:

  • Pole „name” informuje rc o etykiecie konkretnej funkcji. Może to być szczególnie przydatne, jeśli chcesz ponownie użyć tej samej funkcji do późniejszego polecenia.
  • Z drugiej strony pole „funkcja” zawiera wszystkie zmienne i polecenia, które chcesz uruchomić.

Często Zadawane Pytania

Czy można poznać liczbę elementów na liście w Rc?

TAk! Możliwe jest sprawdzenie całkowitej ilości zmiennych na liście rc. Podobnie jak w przypadku uzyskiwania elementów listy, możesz to zrobić, dodając symbol podwójnego cudzysłowu („) przed nazwą listy. Na przykład możemy wpisać echo $"shop aby wydrukować całkowitą liczbę elementów, które zapisaliśmy w zmiennej shop.

Czy w RC można tworzyć nieskończone pętle?

TAk! Możliwe jest tworzenie pętli w powłoce rc, które się nie kończą. Chociaż powyższe przykłady pokazują skończone pętle, tworzenie nieskończonych pętli jest równie proste. Aby to zrobić, wystarczy usunąć dowolny warunek w polu kroku. Ważną rzeczą, na którą należy zwrócić uwagę, jest jednak to, że nadal musisz umieścić nawias w polu kroku, aby uzyskać nieskończoną pętlę. Dzieje się tak, ponieważ powłoka rc została zaprojektowana do rozpoznawania tylko funkcji o określonej składni i strukturze. Na przykład polecenie for(i) echo hello powie rc, aby drukował słowo „hello” w nieskończoność.

Czy można przekazać błędy w Rc podobne do > 2 w Bash?

TAk! Domyślnie rc umożliwia oddzielenie wszelkich danych diagnostycznych od programu. Może to być przydatne, jeśli próbujesz rozwiązać problem z uruchomionym skryptem lub programem. Mając to na uwadze, możesz oddzielić ten typ danych wyjściowych za pomocą „>[2=1]operator pliku. Na przykład możemy wypisać wszelkie błędy w naszym skrypcie, uruchamiając następujące polecenie: ./script.rc >[2=1] ./error.log.

Kredyty obrazkowe: Unsplash Wszystkie zrzuty ekranu autorstwa Ramces Red

Czy ten artykuł jest przydatny?

Zapisz się do naszego newslettera!

Nasze najnowsze samouczki dostarczane prosto do Twojej skrzynki odbiorczej