This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
basic-unix:capitole:capitol-07 [2016/05/15 22:05] razvan [X. TODO] |
basic-unix:capitole:capitol-07 [2016/05/24 16:27] (current) razvan [Folosire scurtături] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== 7. Folosirea eficientă a liniei de comandă ====== | ====== 7. Folosirea eficientă a liniei de comandă ====== | ||
- | TODO | + | Întrucât folosim des comenzi în shell, dorim să eficientizăm cât mai mult lucrul cu acestea. Shell-ul permite (prin intermediul bibliotecii ''readline'') editarea comenzilor și scrierea acestora cât mai rapid. O funcționalitate utilă este căutarea în istoricul de comenzi (//reverse history search//). |
===== Subiecte abordate ===== | ===== Subiecte abordate ===== | ||
- | * TODO | + | * Scurtături în shell, biblioteca ''readline'' |
- | * TODO | + | * Căutarea în istoricul de comenzi |
- | * TODO | + | |
==== Utilitare folosite ==== | ==== Utilitare folosite ==== | ||
- | * TODO | + | * ''bash'', ''libreadline'' |
- | * TODO | + | |
- | * TODO | + | |
===== Resurse utile ===== | ===== Resurse utile ===== | ||
Line 24: | Line 21: | ||
==== Demo-uri ==== | ==== Demo-uri ==== | ||
- | TODO | + | Despre scurtăturile din shell pentru navivagarea în comenzi shell |
+ | |||
+ | Despre ''Alt+.'' | ||
+ | |||
+ | Despre istoricul de comenzi, ''!!'' și //reverse history search// (''Ctrl+r'') | ||
+ | |||
+ | ==== Exerciții de încălzire ==== | ||
+ | |||
+ | Accesați pagina de manual a Bash | ||
+ | <code> | ||
+ | man bash | ||
+ | </code> | ||
+ | și căutați șirul ''Commands for Moving''. Observați care sunt scurtăturile uzuale pentru comenzi în shell. | ||
+ | |||
+ | Scrieți la prompt, fără să rulați, comanda<code bash> | ||
+ | cd /h | ||
+ | </code> și apoi folosiți tasta {{{TAB}}} pentru autocompletare. Se completează la ''cd /home''. | ||
+ | |||
+ | Pentru listarea tuturor comenzilor ce încep cu {{{ap}}}, scrieți acest prefix în terminal și folosiți de două ori consecutiv tasta {{{TAB}}}. Se completează la lista de comenzi care încep cu ''ap'' | ||
+ | |||
+ | Scieți comanda ''apt-get install nmap'', fără să o executați. Folosiți combinația de taste {{{Ctrl + a}}} pentru a vă deplasa la începutul comenzii. Similar, folosiți {{{Ctrl + e}}} pentru a vă deplasa înapoi la finalul comenzii. Folosind săgețile, plasați cursorul după cuvântul {{{get}}}. După aceea, folosiți combinația {{{Ctrl + k}}}. Observați efectul. | ||
+ | |||
+ | După ce comanda este din nou completă, din aceeași poziție a cursorului, folosiți {{{Ctrl + w}}} și observați ce efect are. | ||
+ | |||
+ | Rulați următoarea comandă: <code bash> | ||
+ | ping -c 1 google.com > result.out | ||
+ | </code> | ||
+ | |||
+ | După aceea, folosiți combinația de taste {{{Alt + .}}} (adică țineți apăsat tasta ''Alt'' și apoi apăsați tasta ''.'' (punct)). Observați efectul acesteia: completează ultimul argument al ultimei comenzi. | ||
+ | |||
+ | Folosiți de mai multe ori {{{Alt + .}}}. Rezultatul este parcurgerea ultimului argument al ultimelor comenzi la fiecare apăsare | ||
+ | |||
+ | Ștergeți ce s-a afișat la punctul anterior. Rulați comanda: <code bash> | ||
+ | echo $_ | ||
+ | </code> Diferența față de ''Alt + .'' este că este neinteractiv și că nu afișează expandarea acelui argument. | ||
+ | |||
+ | În același terminal în care ați tastat comenzile de mai sus, rulați comanda: <code bash> | ||
+ | ping -c 1 8.8.8.8 | ||
+ | </code> | ||
+ | |||
+ | Apăsați {{{Ctrl + r}}} și în noul prompt apărut tastați {{{ping}}}. Mai apăsați o dată {{{Ctrl + r}}}. Observați ce se afișează. Folosiți tasta {{{ENTER}}}. Apoi repeteți primul pas și folosiți {{{ESC}}}. Observați diferența dintre cele două utilizări. | ||
+ | |||
+ | Rulați comanda de schimbare a directorului: <code bash> | ||
+ | cd /etc | ||
+ | </code> | ||
+ | |||
+ | După aceea, folosiți: <code bash> | ||
+ | cd - | ||
+ | pwd | ||
+ | </code> Observați ce efect are: schimbă directorul în directorul anterior. | ||
+ | |||
+ | Rulați comanda {{{ls /var/cache/apt/archives/}}} (utilizând cât mai mult command completion). Ce comandă vă permite schimbarea cât mai eficientă în directorul {{{/var/cache/apt/archives/}}}? | ||
+ | |||
+ | ==== Folosire scurtături ==== | ||
+ | |||
+ | Comanda de mai jos selectează numele fișierelor din /etc/ care se termină în {{{.conf}}} și scrie lista într-un fișiere: <code bash> | ||
+ | find /etc -name "*.conf" > result.txt | ||
+ | </code> | ||
+ | Folosind shortcut-urile de mai jos căutați fișierele care încep cu {{{mod}}} și schimbați numele fișierul în care se scrie în shiny-result.txt. Stergeți criteriul de căutare după nume și acum căutați toate directoarele din {{{/etc}}}. (Hint: man {{{find}}}, /type) | ||
+ | |||
+ | <note tip> | ||
+ | * ''Alt-f'' / ''Alt-b'' - deplasare cuvânt următor/anterior | ||
+ | * ''Alt-d'': ștergere cuvânt curent | ||
+ | * ''Alt-Backspace'': șterge cuvânt anterior | ||
+ | |||
+ | </note> | ||
+ | |||
+ | ==== Folosire eficientă a liniei de comandă ==== | ||
+ | |||
+ | Pentru a deschide un tab nou de terminal folosiți scurtătura ''Ctrl+Shift+t''. Închideți tab-urile nou deschise folosind scurtătura ''Ctrl+d''. | ||
- | TODO | + | Vreți să afișați discurile sistemului.Rulați comanda<code bash> |
+ | fdisk -l | ||
+ | </code> În cazul în care sistemul are disc cu suport de GPT, folosiți comanda <code bash> | ||
+ | gdisk -l /dev/sda | ||
+ | </code> | ||
+ | Vă dați seama că trebuie să rulați sub ''sudo''. Ce faceți? (gândiți-vă la eficiență) | ||
- | ==== TODO 2 ==== | + | Vreți să aflați informații despre executabilul aferent comenzii ''md5sum''. Întâi aflați care este calea către executabilul aferent comenzii. Pentru aceasta rulați comanda<code bash> |
+ | which md5sum | ||
+ | </code> | ||
+ | Pentru a afla din ce pachet face parte executabilul trebuie să folosiți comanda<code bash> | ||
+ | dpkg -S /cale/catre/executabil | ||
+ | </code> | ||
+ | Contrucția ''$(comanda)'' vă întoarce rezutaltul comenzii ''comanda''.Ce faceți? (gândiți-vă la eficiență) | ||
- | TODO | + | Rulați comenzile de mai jos pentru a crea un director nou și pentru a face o copie a fișierului ''/etc/passwd'':<code bash> |
+ | mkdir -p ~/store/system/ | ||
+ | cp /etc/passwd ~/store/system/passwd-copy | ||
+ | </code> | ||
+ | Folosiți comanda ''less'' pentru a vizualiza conținutul fișierului astfel copiat. | ||
- | ==== TODO 2 ==== | + | <note tip> |
+ | Fiți eficienți, folosiți combinația ''Alt+.'' pentru obținerea ultimului argument al ultimei comenzi. | ||
+ | </note> | ||
- | TODO | + | Rulați încă o dată comanda care afișa din ce pachet face parte utilitarul ''md5sum''. Fiți eficienți, căutați în istoricul de comenzi. |