Testowane na: [FreeBSD] [OpenBSD] [Linux]

The C Shell, czyli powłoka tcsh

Witam, w niniejszym artykule postaram się opisać konfigurację i używanie powłoki tcsh.
Tcsh jest powłoką o edytowalnej i dopełniającej nazwę pliku linii komend.
Jest to powłoka kompatybilna z C shell, czyli csh. Posiada w sobie m.i.n:

Pliki konfiguracyjne znajdują się w katalogu /etc, są to:

Oczywiście pliki te mogą być umieszczone w katalogach użytkowników systemu.
Wtedy każdy user może mieć własne ustawienia powłoki:



Przykładowa konfiguracja

Tcsh posiada miłą funkcję dopełniania naszego polecenia, dzięki temu nie musimy pamiętać jakiś długich poleceń czy też ścieżek. np:

ls -l /usr/bi

tu wciskamy TAB, który dopełni nam polecenie do postaci:

ls -l /usr/bin

Również gdy chcemy wydać jakieś polecenie (np: ls | grep plik_tekstowy)
i wpiszemy:

ls | grep plik

tu wciskamy TAB powłoka wtedy nam wyświetli wszystkie pliki zaczynające się na 'plik' (o ile takowe istnieją).
Przykład:

> ls | grep plik(TAB)
plik_1  plik_2  plik_3
plik_4  plik_5  plik_6



A co z aliasami?
Wystarczy tylko wpisać je do pliku konfiguracyjnego powłoki (możemy wpisać to też z poziomu samej powłoki, jako polecenie). Zasada dodawania aliasu wygląda następująco:

<nazwa aliasu> <nasze_nowe_polecenie> '<polecenie_które_ma_zostać_wywołane>'

Czyli np:

alias dysk 'du -sh /home/karol'

Testujemy:

> alias dysk 'du -sh /home/karol'
> rehash
> dysk
1.5G /home/karol

A może by tak to upiększyć?
Tak.. Dlaczego by nie pokusić się o upiększenie i polepszenie funkcjonalności naszego znaku zachęty (czyli promptu)?

Zanim przejdę do omawiania możliwości troszkę jeszcze popiszę. Otóż pewnie zauważyliście, że podczas pierwszego zalogowania się w świeżo zainstalowanym systemie nasz znak wygląda jak ... zza krzaka, czyli nijak. Według mnie prompt powinien spełniać takie warunki:

Zakładam następujący wzór:

login@host # sciezka # >


Jak spełnić te warunki?
W pliku konfiguracyjnym powłoki musimy wpisać ustawienie naszego prompta.
Wpis wygląda następująco:

set prompt = "tu nasze zmienne"

A co możemy wpisać w zmiennych?
Oto lista podstawowych zmiennych i opcji (dla uzyskania wszystkich opcji polecam 'man tcsh' lub google).

Już tyle powinno nam kompletnie starczyć.
Pełną listę można znaleźć na stronie tcsh.org.

Dla przykładu posłużę się wpisem, który nam zapewni wyświetlanie w znaku zachęty następujących informacji:

nazwa zalogowanego usera, host komputera, aktualną godzinę, aktualną ścieżkę.

Oto kod:

set prompt = "[%n@%M]~[%T]~[%C]# "

Po przelogowaniu się otrzymamy:

[login@host.pl]~[15:41]~[tmp]>>

Fajnie to wygląda prawda ? :)
Możemy też dać w tekście '\n' co przeniesie nam wiersz niżej, np:

set prompt = "[%n(at)%M] [%T]\n[%C]%}# "

Otrzymujemy:

[login@host.pl] [15:47]
[tmp]#

No tak, wygląda ładnie, ale co z obiecanymi kolorami?
Otóż do naszego prompta dodamy kod ascii koloru :) Wtedy nam tcsh będzie barwił prompta.
Ja do kolorowania używam edytora 'ee'

> cd /usr/ports/editors/ee
> make install clean
> rehash
> ee ~/.cshrc


W 'ee' kolor ascii uzyskamy wpisując: Ctrl+o (w linuxie i np OpenBSD bodajże ctrl+a).
Wtedy edytor prosi nas o podanie kodu ascii, wpisujemy '27'.
W tekście pojawi sie symbol '^['. teraz dopisujemy kod koloru w formacie [Xm.
(Gdzie X jest kodem koloru). I tak jeżeli chcemy uzyskać kolor zielony (imho pasujący do czerni terminala),
wpisujemy: ctrl+o -> 27 potem dopisujemy [32m.
Dzięki temu otrzymamy: ^[[32m.
Kod koloru w prompcie umieszczamy w zmiennej tekstu, czyli:

%{^[[32m%}

I tak nasz prompt będzie wyglądał następująco:

set prompt = "%{^[[32m%}[%n@%M] [%T] [%C]%{^[[0m%}# "

(^[[0m to kod który wyłącza kolor i ustawia domyślny).
Warto też dopisać ^[[1m na początku, co nam zapewni pogrubienie prompta.
czyli końcowy prompt ma taki ciąg:

set prompt = "%{^[[1m^[[32m%}[%n@%M] [%T] [%C]%{^[[0m%}# "

Oczywiście nie wpisuj ^[[Xm z klawiatury :) bo nie zadziała :).
^[ uzyskujesz po wklepaniu ctrl+o lub a -> 27.
I to by było chyba na tyle jeżeli chodzi o TCSH. Mam nadzieję, że sam/a
dojdziesz do reszty opcji promptu tcsha i kodów koloru.
Gwoli ścisłości dodam ze kolory z tłem mają początek '4', czyli np: '41m'.

Powodzenia....
Dodatek: Mały spis kodów kolorów...

Podziękowania: - Cepa (za liste kolorów) - harvester (za wyprowadzenie mnie z błędu co do %{x%} :) )


Oryginalny artykuł znajduje się w serwisie BSD4U.
Autor: Karol 'lofix' Gogiel.
Powrót na górę strony...