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 Bez tytułu Dodał: termid Dnia: 2007-05-09 18:01:11 Bez tytułu Dodał: sarelo33 Dnia: 2006-12-30 23:50:14 Jest ok ale.. Dodał: theviant Dnia: 2006-11-16 08:10:05
Google
Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..
The C Shell, czyli powłoka tcsh
środa, 23 listopada 2005 -
Napisał: Karol Gogiel (8615 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:
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.