Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:unix:lab_powloka [2013/09/16 14:52] kkluza [DO PRZYGOTOWANIA] |
pl:dydaktyka:unix:lab_powloka [2019/06/27 15:50] (aktualna) |
Samodzielnie należy przed tym laboratorium przygotować: | Samodzielnie należy przed tym laboratorium przygotować: |
| |
* podstawy pracy z //Vi// | * podstawy pracy z //Vi// (ten link może pomóc: http://vim-adventures.com/) |
* podstawy pracy z //Emacs// | * podstawy pracy z //Emacs// |
* zapoznać się z innymi edytorami, takimi jak **pico**, **nano**, **mcedit**, ew. czy **joe** **pico** **jed** **zile** | * zapoznać się z innymi edytorami, takimi jak **pico**, **nano**, **mcedit**, ew. czy **joe** **pico** **jed** **zile** |
* przeczytać artykuł {{:pl:dydaktyka:unix:gjn-bash.pdf|GNU Bash - Więcej niż Sh}} | * przeczytać artykuł {{:pl:dydaktyka:unix:gjn-bash.pdf|GNU Bash - Więcej niż Sh}} |
| |
| NIEOBOWIĄZKOWO, dla zainteresowanych: [[https://dev.to/awwsmm/101-bash-commands-and-tips-for-beginners-to-experts-30je|101 Bash Commands and Tips for Beginners to Experts]] |
===== WPROWADZENIE ===== | ===== WPROWADZENIE ===== |
| |
| |
==== Zmiana znaku zachęty ==== | ==== Zmiana znaku zachęty ==== |
Bash (opis w //bash(1)//, "PROMPTING") | Bash (opis w //bash(1)//, "PROMPTING" (ZACHĘTA POWŁOKI)) |
| |
export PS1='\u@\h:\w ' | export PS1='\u@\h:\w ' |
| |
Inne prompty to: ''PS2 PS3'' i ''prompt1 prompt2''. | 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 ==== | ==== Inicjalizacja pracy powłok ==== |
/etc/csh.logout | /etc/csh.logout |
~/.logout | ~/.logout |
| |
| |
==== 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łówy ''"'', 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] | |
| |
==== GNU Readline ==== | ==== GNU Readline ==== |
* Reszta często emuluje w pewnym zakresie jeden z tych dwóch. | * 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. | * 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]] |
| |
==== Midnight Commander ==== | |
Jest to program do zarządzania plikami. Obsługuje się go podobnie jak inne typu "commander". Dodatkowo: | |
| |
* zmiana praw dostępu: <key>C-x c</key> | |
* dostęp do klawiszy <key>Fn</key> przez <key>ESC n</key> | |
* //lynx-like motion// w konfiguracji | |
* wiele innych możliwości... | |
| |
Z MC dostępney jest edytor **mcedit**. | |
| |
===== ĆWICZENIA ===== | ===== ĆWICZENIA ===== |
* 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. | * 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'') | * przetestować dziedziczenie prompta w sh (ustawiać z i bez ''export'') |
==== - Inicjalizacja powłok ==== | |
| |
* odnaleźć w dokumentacji odpowiednie fragmenty opisujące inicjalizację powłok: //bash(1)//: INVOCATION, FILES, //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). | |
| |
==== - Aliasy ==== | ==== - Aliasy ==== |
| |
echo 'ls -l' | 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). |
| |
| |
| |
le<T><T>ss /e<T>/pas<T> | le<T><T>ss /e<T>/pas<T> |
echo $ HO<T><T>ME | echo $HO<T><T>ME |
cd ~s<T><T> | cd ~s<T><T> |
| |
| |
| |
==== - MC ==== | |
Uruchomić Midnight Commander, **mc** i zmienić prawa dostępu do wybranego pliku <key>C-x c</key>. | |
| |
===== Dla poszerzenia wiedzy ===== | ===== Dla poszerzenia wiedzy ===== |
* [[http://www.catonmat.net/blog/bash-emacs-editing-mode-cheat-sheet/]] | * [[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. | * 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. |