Despre comanda cd pe Windows și Linux

Notă: acest articol nu este finalizat.

„cd” (sau legătură la articolul în engleză care este mai complet) este o comandă pe sistemele de operare de calculator Windows (în trecut pe MS-DOS), Linux și altele al cărei nume vine de la „chdir”, de la englezescul „change directory” tradus „schimbă directorul”.

Pe Windows

Executând comanda „cd /?” se afișează un mesaj de ajutor în legătură cu comanda „cd”. Pe scurt și, sper eu, mai clar, acest mesaj spune că:

1. Comenzile „cd” și „chdir” fac același lucru. Practic, sunt aceeași comandă.
2. Rulând comanda „cd” fără nici un argument (sinonim cu parametru) se afișează directorul curent asociat partiției curente (care este cel aflat în Command Prompt înainte de primul caracter „>” de pe linia în care se introduce comanda). Este interesant faptul că pe Windows comanda „cd” menține simultan un director curent pentru fiecare partiție, director care implicit este rădăcina partiției respective.
3. Rulând comanda „cd X:” unde X este litera unei partiții, se va afișa directorul curent asociat acelei partiții.
4. „cd X” schimbă directorul curent în X dacă X face referire la un director (dosar) din aceeași partiție cu directorul curent. X poate fi și numele special „..” care semnifică directorul părinte al directorului curent, dacă el există. Deci, rulând comanda „cd ..” în directorul „C:\Users\eu” directorul curent se schimbă în „C:\Users”. În cazul în care directorul curent este de forma „X:\” nu există director părinte și comanda „cd ..” nu face nimic. Acest nume special, „..” poate fi parte din calea X semnificând directorul părinte al directorului cu calea ce precede „..” în X. De exemplu, dacă suntem în directorul „D:\” și în acest director există dosarul „D:\dosarA\dosarB”, rulând comanda „cd dosarA\dosarB\..”, în final directorul curent va fi „D:\dosarA”. Numele „..” poate fi inclusiv în mijlocul unei căi de dosar.
5. Dacă vrem să schimbăm și partiția în calea X, executăm comanda „cd /D X”.
6. Comenzile de forma „cd /D X:” sunt echivalente cu comenzile „X:”, iar cele de forma „cd /D X:\cale\de\test” sunt echivalente cu comenzile „X:”, fiecare urmate de „cd cale\de\test”.

Exemplu:

Un exemplu de utilizare aveți mai jos. Comenzile de mai jos sunt executate în ordine, una după cealaltă, în aceeași fereastră Command Prompt. Înaintea fiecărei comenzi am trecut un număr și la fiecare număr am trecut explicațiile dedesubtul exemplului.


(1) C:\Users\silviu> cd E:\Muzică

(2) C:\Users\silviu> cd /D E:\Muzică

(3) E:\Muzică>cd ..

(4) E:\>cd ..

(5) E:\>cd Muzică

(6) E:\Muzică>cd
E:\Muzică

(7) E:\Muzică>cd C:
C:\Users\silviu

(8) E:\Muzică>cd /D C:

(9) C:\Users\silviu>cd E:
E:\Muzică

(10) C:\Users\silviu>cd /D E:

(11) E:\Muzică>cd /D C:\Users

(12) C:\Users>

Explicații:

(1) Prima comandă nu face nimic deoarece se cere schimbarea directorului curent într-un director aflat pe o altă partiție decât directorul curent.

(2) A doua comandă schimbă directorul curent schimbând și partiția, deoarece s-a folosit argumentul „steag” al comenzii, „/D”. Această comandă este echivalentă cu comanda „E:” urmată (după executarea acesteia) de comanda „cd Muzică”.

(3) Comanda aceasta schimbă directorul curent urcând cu un nivel spre rădăcina partiției curente.

(4) Comanda executată aici nu schimbă nici un director curent al niciunei partiții deoarece ne aflăm deja la rădăcina partiției directorului curent.

(5) Comanda aceasta intră în directorul Muzică din partiția E:.

(6) Se afișează directorul curent al partiției curente, partiție care este E:.

(7) Se afișează directorul curent al partiției C: care a rămas neschimbat din ultimul moment în care am fost cu directorul curent în partiția C:.

(8) Se schimbă directorul curent în directorul curent asociat partiției C:. Această comandă este echivalentă cu comanda „C:”.

(9) Se afișează directorul curent al partiției E: care a rămas la fel ca în ultimul moment în care eram cu directorul curent în partiția E:.

(10) Se schimbă directorul curent în directorul curent asociat partiției E:. Această comandă este echivalentă cu comanda „E:”.

(11) Pe lângă „cd /D C:” se mai pune și o cale a unui director în interiorul partiției C:, astfel nu doar că se schimba partiția curentă în C:, dar se schimba și directorul curent asociat noii partiții curente. Această comandă este echivalentă cu comanda „C:” urmată (după executarea acesteia) de comanda „cd Users”.

(12) Aici se poate vedea directorul curent rezultat în urma ultimei comenzi.

Pe Linux

Executând comanda „cd --help” se afișează următorul mesaj:

„bash: cd: --: opțiune nevalidă
cd: utilizare: cd [-L|[-P [-e]] [-@]] [dir]”

Cu comenzile „man” și „info” pe Ubuntu 15.10 x64 nu pot găsi informații despre cum se folosește comanda „cd”. În schimb am găsit acest articol în limba engleză foarte bun în legătură cu comanda „cd” pe Linux.

Diferențele comenzii „cd” de pe Linux față de Windows sunt:
1. Nu există argument care să facă comanda să afișeze un mesaj de ajutor despre utilizarea ei.
2. Nu se păstrează un director curent pentru fiecare partiție montată. Există un singur director curent la un moment dat.
3. Pe Linux partițiile nu au litere asociate ci directoare în care se montează. În loc de obișnuita partiție „C:” există directorul rădăcină cu calea „/” (pe Linux separatorii din căi sunt „/”, nu „\” spre deosebire de Windows).
4. Pentru a afișa directorul curent de lucru nu se folosește comanda „cd” fără nici un argument ci comanda „pwd” fără nici un argument.
5. Spre deosebire de comanda „cd” pe Windows, pe Linux aceasta are mai multe argumente (opțiuni) de tip „steag” adică fie sunt specificate în comandă, fie nu, neavând nici o valoare asociată. Aceste argumente sunt „-L” care face ca comanda să urmărească legăturile simbolice, și „-P” care face face ca comanda să folosească structura fizică a directorului în locul legăturilor simbolice.

Vezi această pagină pentru cum să execuți o operație „Înapoi” sau „Back” (nu „În sus” sau „Up”, comanda funcționează doar cu un o singură întoarcere la directorul curent din trecut, după care începe să se învârtă în cerc, între directorul curent și directorul curent anterior) în terminal cu comanda „cd” (Acest lucru nu este posibil pe Windows).

Pe alte sisteme de operare

Pe Unix, BSD, Mac OS X nu am putut încerca comanda cd, dar mă gândesc că este extrem de similară cu cea de pe Linux.

Programul meu Windows favorit de citire de fișiere PDF

Cred că cei mai mulți folosesc Adobe Reader numit mai nou Adobe Acrobat Reader DC.

Eu prefer STDU Viewer (deschizând această legătură în partea stângă aveți capturi de ecran, iar în partea dreaptă, mai în jos, aveți legături de descărcare). Este gratuit, distribuit sub forma unui program de instalare executabil. Există și o versiune portabilă.

Spre deosebire pozitivă de Adobe Reader,
  • este mai rapid, pornește mai repede, încarcă fișierele mai repede;
  • nu instalează adware (Adobe Reader instalează automat McAfee Security Scan Plus și din câte văd acum nu există opțiune de a dezactiva această funcție);
  • are o interfață mai prietenoasă pentru utilizatorii de maus (Adobe Reader are meniuri gigantice parcă făcute pentru a fi atinse cu degetele);
  • există funcția de rupere a vizualizării documentului pe orizontală sau pe verticală (este o funcție mai flexibilă decât funcția de vizualizare a două pagini pe orizontală disponibilă în Adobe Reader);
  • are funcția de inversare a culorilor din document la citire care e plăcută noaptea (pe întuneric) la documentele care altfel ar fi foarte luminoase.
Dar Adobe Reader are avantajele lui specifice:
  • are funcție de autoderulare (ținând apăsată rotița mausului și mișcând în sus și în jos mausul se realizează o derulare lină, frumoasă);
  • are setări mai multe pentru tipărire;
  • are temă gri închis pentru aplicație (conținutul documentelor rămâne la fel ca la tema gri deschis).
Aceasta nu este o analiză exhaustivă.

Introducere în Git

Ce este Git?
Un sistem de gestionare a versiunilor fișierelor dintr-un dosar (numit și folder sau director). Altfel spus, un program care înregistrează fiecare modificare dintr-un dosar de-a lungul timpului, astfel încât utilizatorii acelui dosar pot să se întoarcă în orice punct din istoria dosarului sau pot analiza evoluția lui de-a lungul timpului. O funcție foarte importantă a Git este cea de „ramuri”, prin care istoria unui dosar poate evolua concomitent în mod diferit în mai multe „ramuri” (create cu „git checkout -b” sau cu „git branch”), și într-un moment ales acele ramuri pot fi unificate (cu comanda „git merge”) Ceea ce face Git cu adevărat folositor este funcția de „remote”-uri, adică servere pe care git încarcă întreaga istorie a unui dosar permițând colaborarea mai multor utilizatori asupra aceluiași dosar. Exemple de servicii care folosesc Git pentru a permite colaborarea utilizatorilor asupra unor proiecte sunt GitHub și BitBucket. GitHub este cel mai popular, dar BitBucket permite crearea unui număr nelimitat de depozite Git private.

Cum se instalează Git?
Pe sistemele Linux care folosesc managerul de pachete apt-get (inclusiv distribuția Linux Ubuntu), Git se instalează cu comanda „sudo apt-get install git”. Pe Windows, Git se instalează folosind programul executabil de instalare de pe site-ul Git și în funcție de opțiunile alese în timpul instalării va fi utilizarea ulterioară Git: fie veți putea utiliza Git în orice fereastră Command Prompt, fie veți putea utiliza Git doar din programul Git Shell.

Cum se folosește Git?
Odată instalat Git poate fi folosit prin comenzile în linia de comandă (cu alte cuvinte în terminal) pe care le oferă. Există însă și programe cu interfață grafică pentru utilizator care fac utilizarea Git mai ușoară în unele cazuri, de exemplu, SourceTree și GitHub for Desktop (ambele compatibile cu Windows 7 și versiuni mai târzii de Windows și cu OS X 10.9 și versiuni mai târzii de OS X), dar care nu fac obiectul acestui articol.

Trecem în revistă câteva comenzi mai importante (care se rulează din directorul în care se dorește urmărirea modificărilor fișierelor, director în care se intră cu ajutorul comenzii „cd”).
git init
Această comandă transformă directorul curent într-un depozit Git, indiferent dacă directorul curent este gol sau nu. Această comandă nu este influențată de conținutul directorului și nu afectează conținutul directorului decât că practic, această transformare constă doar în crearea directorului (ascuns pe sistemele Linux) „.git” în interiorul directorului curent. Acest dosar conține informații folosite în mod intern de Git pentru gestiunea versiunilor dosarului.
git add X
Această comandă marchează fișierele sau dosarele X aflate în interiorul dosarului depozitului Git ca făcând parte din „staging area”. Aceste fișiere vor fi înregistrate în istoria dosarului la următoarea rulare a comenzii „git commit”. Această operațiune nu are sens decât dacă ați efectuat modificări asupra fișierelor/subdosarelor X de la ultimul commit, sau de la crearea depozitului git (în cazul în care nu există încă niciun commit), sau X reprezintă fișiere noi care până acum nu au fost adăugate în depozit. Ne putem imagina „staging area” ca pe un coș folosit de un om pentru a culege merele (schimbările din directorul de lucru, directorul depozitului) dintr-o livadă. Există mai multe coșuri pline puse unul lângă altul care formează istoria depozitului.
git commit -m "Test"
Această comandă înregistrează modificările adăugate cu „git add” în „staging area” ca o nouă versiune a dosarului în istoria dosarului și apoi golește „staging area” pregătind-o pentru noi modificări. În loc de „Test” se poate scrie orice șir de caractere care reprezintă o descriere a ultimelor modificări ce vor fi înregistrate, iar dacă se dorește chiar introducerea unui caracter „"” în interiorul mesajului de commit, se tastează „\"” în loc de „"”. Istoria dosarului poate fi văzută rulând comanda „git log”.
git log
Această comandă afișează jurnalul commit-urilor din depozitul directorului curent. O versiune a acestei comenzi care afișează jurnalul mai frumos în opinia mea este „git log --graph --color --decorate --all --date=relative”. Dacă vă place mai mult această afișare, o puteți folosi mai ușor printr-un alias creat cu următoarea comandă: „git config --global alias.mylog "log --graph --color --decorate --all --date=relative"”. Astfel veți putea folosi pentru aceeași funcție comanda „git mylog”.

În final, închei cu fluxul de lucru Git, tradus de aici:
1. modifici fișierele din directorul de lucru (depozitul Git);
2. „montezi” (în engleză „to stage”) fișierele, adăugând instantanee ale lor în aria de montare („staging area”);
3. faci un commit, care ia fișierele așa cum sunt ele în aria de montare și stochează acel instantaneu permanent în directorul Git („.git”).

Unde pot afla mai multe despre Git și unde pot cere ajutor?
Documentația oficială Git este extraordinar de bună, dar este în limba engleză. Dacă preferați limba română, cred că vi se va răspunde cu plăcere pe forumul Softpedia. Dacă aveți cunoștințe medii de limbă engleză puteți cere ajutorul pe site-uri precum StackOverflow.

Va urma.

Cum modifici mesajele de commit ale unor commit-uri Git din trecut

1. Cum schimbi mesajul de commit al ultimului commit

În următorul mod poți preciza noul mesaj de commit în linia de comandă:
git commit –amend -m "Mesaj nou"
În următorul mod se deschide un editor (de exemplu Vim) pentru editarea mesajului de commit anterior:
git commit –amend -e 
2. Cum schimbi mesajele de commit ale unor commit-uri din trecut (unul sau mai multe)

Această metodă funcționează doar dacă nu s-a făcut push la commit-urile respective sau dacă este vorba doar despre un depozit git local fără remote-uri.
git rebase -i X
unde X este ID-ul commit-ului aflat în cronologia commit-urilor chiar înainte de primul commit al cărui mesaj vrei să îl schimbi, și care se poate afla executând:
git log
În loc de ID-ul commit-ului poate fi (și deseori e mai folositor) un reper de tipul HEAD, HEAD~1 (commit-ul dinaintea ultimului commit), HEAD~2 (commit-ul dinaintea penultimului commit) etc.

Această comandă (rebase) va deschide editorul de text configurat pentru asta (de exemplu Vim) cu o listă de commit-uri, câte unul pe fiecare rând, și la începutul fiecărui rând va fi precizată comanda „pick” care înseamnă că acel commit nu va dispărea în urma rebase-ului.



Commit-urilor cărora doriți să le schimbați mesajul de commit schimbați-le comanda „pick” în „reword”, salvați fișierul și ieșiți din editor.



După ieșirea din editor, pentru fiecare commit la care s-a setat comanda „reword” se va deschide iar editorul pe rând cu vechiul mesaj de commit și aveți posibilitatea de a scrie un alt mesaj de commit sau să îl modificați pe cel vechi.

E important de menționat că rebase-ul va schimba ID-ul commit-urilor modificate deci trebuie făcut cu grijă când commit-urile se află și pe un server, deci nu sunt doar locale.

Dacă aveți întrebări sau sugestii, vă rog să scrieți comentarii mai jos.

Introducere în programul de editare de text Vim

Puteți citi mai multe despre acest program în articolul Wikipedia în limba română despre vim (sau via Wikiwand) sau în cel în limba engleză (sau via Wikiwand).



Pentru mine, Vim este folositor din următoarele motive:
- este foarte (ușor) extensibil și după ce te familiarizezi cu comenzile (și poate chiar începi să îți faci tu propriile comenzi!) devii foarte productiv;
- poate fi folosit direct din terminal pe sistemele de operare Linux (de exemplu, Ubuntu în cazul meu) ceea ce permite un flux de lucru frumos și productiv.



Pe Ubuntu, Vim se poate instala executând în terminal:
sudo apt-get install vim vim-gtk
(Am inclus și instalarea pachetului vim-gtk în comandă deoarece acest pachet permite utilizarea clipboard-ului cu comenzile "+y, "+p, "+d.)

Pentru Windows există un program de instalare automat, care poate fi descărcat aici și care creează o scurtătură în meniul Start.

Pe Linux, programul Vim se pornește rulând din terminal comanda „vim”. Pentru a deschide un fișier se rulează comanda „vim [cale_fișier]” unde „cale_fișier” este o cale relativă sau absolută către fișierul pe care doriți să îl editați. Recomand mult comanda „vimtutor” care oferă o introducere simplă și practică în limba engleză a comenzilor de bază pentru utilizarea Vim.



După deschiderea unui fișier în Vim, Vim are mai multe moduri de funcționare (sau de editare) printre care și:
- modul normal - în care se execută comenzi de editare pentru modul normal (în general mai simple decât cele pentru modul linie de comandă), acesta este modul în care intră Vim automat la pornire;
- modul de inserare - în care se introduc caractere, pentru trecerea în acest mod din modul normal se introduce comanda „i” (pur și simplu se apasă tasta „i”);
- modul de înlocuire - la fel ca modul de inserare dar caracterele introduse înlocuiesc caracterele deja existente pe pozițiile cursorului, pentru intrarea în acest mod din modul normal se apasă combinația de taste Shift+R (altfel spus, se apasă simultan tastele Shift și R, care împreună formează caracterul „R” mare);
- modul linie de comandă - în care se introduc comenzi mai complexe care încep cu caracterul „:”, pentru a intra în acest mod pornind din modul normal, se apasă „:”;
- modul vizual - în care se lucrează cu secțiuni din fișier selectate în mod vizual, pentru a intra în acest mod din modul normal se introduce comanda „v” pentru selectarea caracter cu caracter sau „V” pentru selectarea rând cu rând.


După ce veți lucra cu Vim mai mult și vă veți familiariza cu el, veți realiza că fișierul „.vimrc” este inima lui Vim. Puteți vedea fișierul meu „.vimrc” aici. Sper să vă fie de ajutor. În viitor sper să scriu un articol numai despre fișierul (meu sau nu doar al meu ci în general) „.vimrc”.


Dacă aveți curiozități sau întrebări legate de Vim, vă este de mare ajutor cunoașterea limbii engleze și site-uri precum acesta unde puteți pune întrebări, da răspunsuri, câștiga reputație, totul în legătură cu Vim (și Vi).



Va urma.

Dacă aveți întrebări sau sugestii, vă rog să scrieți comentarii mai jos.

Recomandare software: Evernote

Evernote este un program excelent pentru luarea de notițe. Notițele pot fi etichetate și introduse în „caiete” (notebooks). Funcția de căutare este foarte bună și organizarea notelor prin etichete este foarte eficientă. Notele pot avea fișiere anexate (versiunea gratuită a Evernote permite maxim 60MB de fișiere pe lună, ceea ce pentru mine e suficient). Recent, interfața web Evernote a fost îmbunătățită mult și acum Evernote poate fi folosit cu mai multă ușurință pe alte sisteme de operare decât Windows, dar clientul Windows rămâne produsul lor de cea mai bună calitate. Există o extensie de browser oficială Evernote Web Clipper cu care puteți salva pagini web sau părți din pagini web în notițe care păstrează și originea lor, și păstrează și imaginile, stilul în mare parte.