Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:dydaktyka:unix:lab_powloka [2018/10/22 08:04]
kkutt [6 GNU Readline]
pl:dydaktyka:unix:lab_powloka [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Powłoka i środowisko pracy ====== ​ 
  
- 
- 
-===== DO PRZYGOTOWANIA ===== 
-Samodzielnie należy przed tym laboratorium przygotować:​ 
- 
-    * podstawy pracy z //Vi// (ten link może pomóc: http://​vim-adventures.com/​) 
-    * podstawy pracy z //Emacs// 
-    * zapoznać się z innymi edytorami, takimi jak **pico**, **nano**, **mcedit**, ew. czy **joe** **pico** **jed** **zile** 
-    * przypomnieć sobie pracę z **sftp**, **ftp** i **scp** 
-    * przeczytać artykuł {{:​pl:​dydaktyka:​unix:​gjn-bash.pdf|GNU Bash - Więcej niż Sh}} 
- 
-===== WPROWADZENIE ===== 
- 
-==== Powłoki w środowisku GNU ==== 
- 
-    * W środowisku Unix istnieje wiele różnych standardów powłok. 
-    * Dwa najważniejsze to: //SH (Bourne Shell)// i //CSH (C Shell)//. 
-    * Ich implementacje w środowisku GNU to: //Bash (Bo(u)rn(e) Again Shell)// i //tcsh (TENEX-like Csh)//. 
-    * Najpopularniejszą w środowisku GNU/Linux jest //GNU Bash//. 
- 
-==== Środowisko pracy aplikacji ==== 
- 
-    * Powłoka zapewnia środowisko do uruchamiania programów. 
-    * Środowisko to jest określane przez szereg zmiennych środowiskowych. 
-    * Każda zmienna ma nazwę i wartość. 
-    * Wartości zmiennych są napisami. 
-    * W powłokach Sh i Csh występują różnice w sposobie ustawiania zmiennych. 
- 
-==== Typowe zmienne ==== 
- 
- 
-  PWD  USER    EDITOR ​ VISUAL 
-  HOME TERM    PATH    MAIL 
-  LANG DISPLAY LOGNAME SHLVL SHELL 
- 
-==== Definiowanie zmiennych środowiskowych ==== 
-Ustawianie w Sh: 
- 
-  ZMIENNA=WARTOSC ; export ZMIENNA 
- 
-Bash: 
- 
-  export ZMIENNA=WARTOSC 
- 
-Usuwanie: 
- 
-  unset ZMIENNA 
- 
-Csh: 
- 
-  setenv ZMIENNA WARTOSC 
- 
-Usuwanie: 
- 
-  unsetenv ZMIENNA 
- 
-Wyświetlanie (w przypadku zmiennej wyexportowanej):​ 
- 
-  printenv ZMIENNA 
- 
-W powłoce Sh (Bash): 
- 
-  echo $ZMIENNA 
- 
- 
- 
-==== Zmiana znaku zachęty ==== 
-Bash (opis w //​bash(1)//,​ "​PROMPTING"​ (ZACHĘTA POWŁOKI)) 
- 
-  export PS1='​\u@\h:​\w ' 
- 
- 
-Tcsh (//​tcsh(1)//,​ "set prompt"​)) 
- 
-  set prompt = "​%n@%m:​%~ " 
- 
-Inne prompty to: ''​PS2 PS3''​ i ''​prompt1 prompt2''​. 
- 
- 
-==== Re/​Definiowanie poleceń ==== 
-Do re/​definiowania poleceń powłoki służy **alias**. 
-Do usuwania definicji: **unalias**. 
- 
-Bash: 
- 
-  alias ls='ls -F' 
-  alias ll='ls -l' 
-  unalias ls 
- 
-Tcsh: 
- 
-  alias ls 'ls -F' 
-  alias ll 'ls -l' 
-  unalias ls 
- 
- 
-==== Cytowanie napisów ==== 
-W środowisku powłoki są używane 3 znaki specjalne pozwalające na konstruowanie/​cytowanie napisów: 
-''​ " ''​ 
- 
-- cudzysłowy ''​ " '',​ tekst w nich zawarty jest jednym napisem, w którym powłoka może interpertować znaki specjalne, np. podstawiać wartości zmiennych, 
- 
-- apostrofy ''''',​ j.w. tylko BEZ możliwości interpretowania znaków specjalnych - tekst jest dokładnie cytowany, 
- 
-- odwrócone apostrofy ''​`''​ (obok klawisza <​key>​Tab</​key>​),​ zawartość tekstu jest traktowana jako polecenie, uruchamiana przez kolejna powłokę, a wynik działania polecenia jest podstawiany jako tekst. 
- 
- 
-==== Przeglądanie plików tekstowych ==== 
- 
-    * po jednym ekranie/​linii do przodu: **more** 
-    * po jednym ekranie/​linii 2 kierunki: **less** 
-    * wyświetlanie zawartości podanych plików: 
- 
-  cat [plik1 plik2 ... plikN] 
- 
-==== Inicjalizacja pracy powłok ==== 
- 
-    * Przy początku i końcu pracy powłoki czytają odpowiednie pliki konfiguracyjne. 
-    * Czytane są różne pliki dla non/login shell. 
-    * **sh** używa innych plików niż **csh**. 
-    * Pliki są interpretowane,​ a nie uruchamiane. 
-    * Interpretację podanego pliku można wymusić przez source. 
-    * Komentarze w powłoce wstawia się przez ''#''​. 
-    * Dowolny tekst wypisuje: ''​echo "​tekst"''​. 
-    * Przeglądanie plików tekstowych (w tym inicjalizacyjnych powłok) jest możliwe przez: **more**, **less**, **cat** 
-==== Pliki inicjalizacyjne ==== 
-Bash (opis w //​bash(1)//:​ INVOCATION, FILES) 
- 
-  /​etc/​profile ​ 
-  ~/​.bash_profile 
-  ~/​.bash_login ​ 
-  ~/.profile 
- 
-  /​etc/​bash.bashrc ​ 
-  ~/.bashrc 
- 
-  ~/​.bash_logout 
- 
-Tcsh (//​tcsh(1)//:​ Startup and shutdown, FILES) 
- 
-  /​etc/​csh.cshrc ​ 
-  /​etc/​csh.login 
-  ~/.tcshrc 
-  ~/.cshrc 
-  ~/.login 
- 
-  /​etc/​csh.cshrc 
-  ~/.tcshrc 
-  ~/.cshrc 
- 
-  /​etc/​csh.logout ​ 
-  ~/.logout 
- 
-==== GNU Readline ==== 
- 
-    * Jest to zaawansowana biblioteka do obsługi linii poleceń. 
-    * Jest dostępna w wielu programach GNU i innych na GPL. 
-    * Rozpowszechaniana na LGPL. 
-    * Umożliwia między innymi dopełnianie linii poleceń (tabulator),​ edycję (polecenia Emacs, VI) i historię (strzałki, <​key>​C-p</​key>,​ <​key>​C-n</​key>,​ i inne). 
- 
- 
-==== Edytory tekstu ==== 
- 
-    * Edytory dzielimy na: Emacs, VI i resztę... 
-    * Notacja zapisu poleceń w Emacs: ''​C-x''​ (<​key>​C-x</​key>​),​ ''​M-x''​ (<​key>​M-x</​key>​),​ np. ''​C-x C-c''​ (<​key>​C-x</​key>​ <​key>​C-c</​key>​),​ ''​C-x 2''​ (<​key>​C-x 2</​key>​),​ ''​M-x shell''​ (<​key>​M-x shell</​key>​) ​ (klawisz ''​Meta''​ to najczęściej lewy Alt) 
-    * Reszta często emuluje w pewnym zakresie jeden z tych dwóch. 
-    * Należy znać podstawy użycia Emacs i VI, np.: poruszanie się po ekranie, obsługa plików, podstawy edycji. 
-    * Ciekawy tutorial do nauki VI: [[https://​vim-adventures.com/​|VIM Adventures]] 
- 
- 
-===== ĆWICZENIA ​ ===== 
- 
-==== - Typy powłok ==== 
- 
-    * sprawdzić typ swojej powłoki logowania: ''​finger KONTO''​ 
-    * sprawdzić typ powłoki w której się pracuje: ''​printenv SHELL''​ 
-    * uruchomić powłokę przeciwną do tej, w której się pracuje: **bash**, **tcsh**; sprawdzić jak zmieniło się środowisko:​ **printenv**;​ wyjść z uruchomionej powłoki dodatkowej. 
- 
- 
- 
-==== - Zmienne środowiskowe ==== 
- 
-    * oglądnąć ustawienia środowiska:​ **printenv**,​ jeżeli spis nie mieści się na ekranie, użyć ''​printenv | less''​ 
-    * odnaleźć w spisie zmienne wymienione w opisie laboratorium,​ 
-    * ustawić własną zmienną, np. ALFA na wybraną wartość, np. ''​moja''​ 
-    * przećwiczyć dla powłoki bash (''​export ZM=wart''​) i tcsh (''​setenv ZM wart''​) 
-    * zaobserwować dziedziczenie środowiska w powłoce na przykładzie bash (wpisać poniższe): 
- 
-  bash 
-  COS=tam 
-  printenv COS 
-  echo $COS 
-  bash 
-  printenv COS 
-  echo $COS 
-  exit 
-  export COS 
-  printenv COS 
-  echo $COS 
-  bash 
-  printenv COS 
-  echo $COS 
-  exit 
-  exit 
- 
- 
-    * ustawić znaki zachęty w powłoce sh (bash) przy pomocy zmiennej ''​PS1''​ i tcsh przy pomocy ''​set prompt'';​ ustawić na wartości: ''​uzytkownik@komputer katalog'',​ ''​godzina-katalog''​ i inne. 
-    * przetestować dziedziczenie prompta w sh (ustawiać z i bez ''​export''​) 
-==== - Aliasy ==== 
- 
-    * sprawdzić istniejące aliasy 
-    * zredefiniować (w odpowiedniej powłoce) działanie ls: ''​alias ls='ls -alF'''​ (dla sh) 
-    * zdefiniować własny alias: ''​alias ll='ls -l'''​ 
-    * ustawić alias: 
- 
-  alias strona='​lynx -display_charset=iso-8859-2 http://​galaxy.uci.agh.edu.pl/​~gjn/​dydaktyka'​ 
- 
-    * sprawdzić istniejące aliasy 
-    * usunąć wybrane aliasy 
-    * dopisać wybrane aliasy do plików inicjalizacyjnych powłoki, zalogować się ponownie i sprawdzić działanie. 
- 
- 
-==== - Cytowanie napisów ==== 
-Proszę porównać działanie: 
- 
-  echo $SHELL 
-  echo "​$SHELL"​ 
-  echo '​$SHELL'​ 
-  echo \$SHELL 
-  echo \\$SHELL 
-  echo \$$SHELL 
-  echo "​system to: uname" ​ 
-  echo "​system to: '​uname'" ​ 
-  echo "​system to: `uname`" ​ 
-  echo "ls -l" 
-  echo 'ls -l' 
-  echo `ls -l` 
- 
-==== - Inicjalizacja powłok ==== 
- 
-    * odnaleźć w dokumentacji odpowiednie fragmenty opisujące inicjalizację powłok: //​bash(1)//:​ INVOCATION (WYWOŁANIE),​ FILES (PLIKI), //​tcsh(1)//:​ Startup and shutdown, FILES 
-    * przy pomocy wybranego edytora (**nano**, **pico**, **mcedit**, **emacs**, **jed**, **vi**) stworzyć pliki dla własnej powłoki logowania: 
-      * inicjalizacyjne dla //login shell// 
-      * inicjalizacyjne dla //nonlogin shell// 
-      * czytane przy zamykaniu powłoki 
-    * działanie plików testować przy pomocy polecenia **source** 
-    * umieścić w plikach komentarze - znak hash (''#''​) i komunikaty - polecenie ''​echo "​napis"''​ 
-    * sprawdzać inicjalizację powłok //login// i //​nonlogin//​ uruchamiając:​ 
- 
-  tcsh 
-  tcsh -l 
-  bash 
-  bash --login 
- 
-    * w pliku czytanym przy zamykaniu powłoki umieścić polecenie **clear** 
-    * jak "​przestawić"​ login shell, np. z tcsh na basha (przy pomocy plików inicjalizacyjnych)?​ 
- 
-//​Wskazówka//:​ Aby przetestować,​ czy poprawnie zdefiniowali Państwo plik inicjalizacyjny można np. zdefiniować w nim zmienną środowiskową,​ komunikat wyświetlany przy pomocy ''​echo''​ lub alias (patrz kolejna sekcja), a następnie logując się do odpowiedniej powłoki (np. poprzez ''​bash --login'',​ ''​tcsh''​) sprawdzić, czy alias jest znany (a zatem poprawnie wczytano i zinterpretowano plik inicjalizacyjny). 
- 
- 
-==== - GNU Readline ==== 
-Testować w GNU Bash, notacja funkcji GNU Emacs: 
- 
-    * historia: 
-        * przeglądanie:​ <​key>​C-p</​key>,​ <​key>​C-n</​key>​ 
-        * szukanie: <​key>​C-r</​key>​ 
-    * edycja linii: 
-        * poruszanie się: <​key>​C-a</​key>,​ <​key>​C-e</​key>,​ <​key>​M-f</​key>,​ <​key>​M-b</​key>​ 
-        * czyszczenie:​ <​key>​C-l</​key>​ 
-        * kopiowanie i wklejanie: <​key>​C-k</​key>,​ <​key>​M-d</​key>,​ <​key>​C-y</​key>​ 
-    * dopełnianie (ang. //​completion//​):​ <​key>​TAB</​key>​. 
-      Poniższe ćwiczenie należy wykonać na w powłoce bash, zamiast <T> należy wciskać tabulator: 
- 
-  le<​T><​T>​ss /​e<​T>/​pas<​T>​ 
-  echo $HO<​T><​T>​ME 
-  cd ~s<​T><​T>​ 
- 
-Należy przeglądać podręcznik do basha, część Readline, Completion. Zaobserwować działanie Readline w innych programach GNU, np. Emacs: uruchomić edytor, <​key>​C-c C-f</​key>​ <​key>​Tab</​key><​key>​Tab</​key>​. 
- 
- 
- 
-===== Dla poszerzenia wiedzy =====  
-  * [[http://​www.catonmat.net/​blog/​bash-emacs-editing-mode-cheat-sheet/​]] 
-  * Howard Dahdah //​[[http://​www.computerworld.com.au/​article/​279011/​-z_programming_languages_bourne_shell_sh|The A-Z of Programming Languages: Bourne shell, or sh (An in-depth interview with Steve Bourne, creator of the Bourne shell, or sh)]]// 05/03/2009. 
pl/dydaktyka/unix/lab_powloka.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0