piątek, 19 marca 2010 
Start arrow FreeBSD arrow KONSOLA arrow The C Shell, czyli pow?oka tcsh
Menu BSD4u
FreeBSD
OpenBSD
NetBSD
Dla *BSD
FAQ BSD4u
Forum BSDGuru.org
Security Advisory
Licencje
Images BSD
Menu ogólne
Start
Aktualności
Download
Sondy
Szukaj
Linki
Książki
About BSD4u
Info
Team BSD4u
Regulamin
Kanał #BSD4u
Kontakt
Sondy
Co sądzisz o naszym nowym Projekcie, i jak oceniasz zmianę koncepcji Projektu?
 
Popularne
SQUID - najpopularni...
Kompilacja i konfigu...
Samba - serwer plikó...
Neostrada+ i modem ...
NATowanie czyli jak ...
Upgrade systemu
Apache (konfiguracja...
Praktyczne IPFW
MRTG - statystyki ru...
CVSup - pomocny podc...
Neostrada na modemie...
Postfix - bezpieczny...
Postfix z autoryzacj...
System Portów (Kolek...
Postfix oparty na ba...
Top Download
File icon Postfix - "Krok po kroku" v1.17870
File icon Postfix - "Krok po kroku" v1.06767
File icon PPTPd - "Prosty i szybki VPN" v1.0b6329
File icon sdi.sh3878
File icon uEagle 1.0p12972
File icon named.sh2940
File icon uEagle 0.99b2868
File icon cs.sh2825
File icon uEagle 1.02757
File icon uEagle 1.12567
Ostatnie komentarze
JAK NIE DZIALA opti...
Dodał: wierzba86
Dnia: 2010-02-25 21:37:29
JAK NIE DZIALA opti...
Dodał: wierzba86
Dnia: 2010-02-25 21:36:09
RE: transparent a v...
Dodał: Trash
Dnia: 2009-10-06 15:45:18
transparent a virus...
Dodał: grzywka18
Dnia: 2008-05-13 11:19:58
hmm
Dodał: dzibi
Dnia: 2007-12-12 10:01:14
Bez tytułu
Dodał: grzywka18
Dnia: 2007-12-11 17:46:06
The C Shell, czyli pow?oka tcsh Drukuj E-mail
Oceny: / 9
KiepskiBardzo dobry 
środa, 23 listopada 2005 - Napisał: Karol Gogiel (12696 odsłon)

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:
⇔ interpreter języka C
⇔ skryptowy procesor
⇔ edytor linii
⇔ automatyczne dokańczanie słów
⇔ korekcję pisowni
⇔ mechanizm historii komend
⇔ składnie podobną do języka C.

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

/etc/csh.cshrc - główny plik konfiguracyjny powłoki.
/etc/csh.login - czyli co ma wykonać, w chwili zalogowania się użytkownika.
/etc/csh.logout - analogicznie wykonuje polecenia przy wylogowaniu się.

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:

~/.cshrc - główny plik konfiguracyjny.
~/.login - analogicznie do pliku /etc/csh.login.
~/.logout - analogicznie do /etc/csh.logout.
~/.history - tu trzymane są komendy jakich używał user (historia).

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 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 pliktu wciskamy TAB powłoka wtedy nam wyświetli wszystkie pliki zaczynające się na 'plik' (o ile takowe istnieją).

A co z aliasami? ano są i aliasy :).
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:

⇔ Odróżniać się od wpisywanego tekstu (kolor, pogrubienie, inny efekt)
⇔ Podawać aktualny katalog w jakim się znajdujemy (po co wpisywać nonstop 'pwd' ?)
⇔ Podawać nazwę zalogowanego użytkownika (Jeżeli hopamy sobie na roota, z roota na innego usera lub podobnie)

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).

⇔ %n - nazwa zalogowanego usera
⇔ %m - nazwa hosta (krótsza)
⇔ %M - nazwa hosta (pełna) ⇔ %t - czas (12-godzinny)
⇔ %T - czas (24-godzinny)
⇔ %p - czas 12-godzinny + sekundy
⇔ %P - czas 24-godzinny + sekundy
⇔ %h - kolejny numer polecenia
⇔ %C - katalog, w którym się znajdujemy
⇔ %/ - ścieżka do katalogu, w którym się znajdujemy (pełna)
⇔ %~ - j.w., tyle że ścieżka zaczyna się od znaku '~' (katalog domowy)
⇔ %{KOD%} - w klamry wstawiamy np kod koloru
⇔ %d - dzień tygodnia
⇔ %j - jobs, czyli nasze procesy
⇔ %l - nazwa terminala
⇔ %w - aktualny miesiąc
⇔ %y - rok (w formacie rr)

Już tyle powinno nam kompletnie starczyć.
Pełną listę można znaleĽć TU.

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ę.

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

Po przelogowaniu się otrzymamy:

[ ]~[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:

[ ] [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). Potem '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, [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 pamiętaj po wklepaniu ctrl+o -> 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...
[0m    - reset
         resetuje wszystkie wczesniejsze ustawienia do
         trybu domyślnego (czarno biały terminal)

[1m    - bold on
         włącza pogrubienie

[3m    - italics on
         włącza kursywa

[4m    - underline on
         włącza podkreślenie

[7m    - inverse on
         odwraca ustawienia kolorów, zamienia kolor tła
         z kolorem textu i na odwrót

[9m    - strikethrough on
         nie wiem co to robi :P

[22m   - bold off
         wyłącza pogrubienie

[23m   - italics off
         wyłącza kursywe

[24m   - underline off
         wyłącza podkreślenie

[27m   - inverse off
         wyłącza tryb odwrócenia ustawień

[29m   - strikethrough off
         cos wyłącza ale nie wiem co :P

[30m   - fg black
         kolor textu - czarny

[31m   - fg red
         kolor textu - czerwony

[32m   - fg green
         kolor textu - zielony

[33m   - fg yellow
         kolor textu - żółty

[34m   - fg blue
         kolor textu - niebieski

[35m   - fg magneta
         kolor textu - magneta

[36m   - fg cyan
         kolor textu - cyan

[37m   - fg white
         kolor textu - biały

[39m   - fg default
         domyślny kolor textu (najczęściej biały)

[40m   - bg black
         kolor tła - czarny

[41m   - bg red
         kolor tła - czerwony

[42m   - bg green
         kolor tła - zielony

[43m   - bg yellow
         kolor tła - żółty

[44m   - bg blue
         kolor tła - niebieski

[45m   - bg magneta
         kolor tła - magneta

[46m   - bg cyan
         kolor tła - cyan

[47m   - bg white
         kolor tła - biały

[49m   - bg default
         domyślny kolor tła (najczęściej czarny)

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


Autor: Karol Gogiel
karol(at)satanbsd.org

Powyższy artykuł został udostępniony na zasadach Licencji BSD

Komentarze:
użycie %{ i %}
Dodane przez harvester w dniu - 2006-01-02 20:54:12
Taka interpretacja użycia %{ i %}: 
Quote:
%{TEKST%} - w taki sposób możemy dodać własny tekst do prompta (np: %{Godzina%})

 
jest jak dla mnie błędna; w manualu mamy: 
Quote:
%{string%} Includes string as a literal escape sequence. It should be used only to change terminal attributes and should not move the cursor location. This cannot be the last sequence in prompt.

 
co za tym idzie, między %{ i %} powinniśmy wstawiać tylko to, co jest za znakiem eskejpowania, czyli np. zmianę koloru terminala (inaczej mówiąc znaki, które liczą się do wielkości tekstu jako tablicy, ale nie przesuwają kursora). Wpisanie tekstu Godzina między %{ i %} może w pewnych przypadkach spowodować błędne wyświetlenie prompta (tcsh wyliczy błędną jego długość). 
Pozdrawiam.
odp:
Dodane przez lofix w dniu - 2006-01-03 13:04:48
Tak,chyba masz racje :)  
no coz, jak o pisalem to wzorowalem sie tylko na wlasnej powloce, nie czytalem mana  
mea culpa
re: blad
Dodane przez lofix w dniu - 2006-01-04 11:53:45
Ok, artykul poprawilem i odeslalem redakcji do wrzucenia w miejsce tego :) 
Mam nadzieje ze w nowszej wersji obedzie sie bez bledow

Tylko zarejestrowani użytkownicy mogą pisać komentarze.
Prosze zaloguj się i dodaj komentarz.

Powered by AkoComment!

Ostatnio aktualizowany ( środa, 04 stycznia 2006 )

dalej »
Ciekawostki
Możesz przeszukać dokumentację w poszukiwaniu słowa kluczowego pisząc:
apropos coś
Pobierz
FreeBSD
OpenBSD
NetBSD
DragonFlyBSD
PC-BSD
FreeSBIE LiveCD
4.4BSD Lite
Domeny
Google

Google


Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..




Licznik odwiedzin
Odwiedziło już nas
3086167
Internautów od lutego 2003

Korzystamy ze statysyk