Personalizarea liniei de comanda

0

Bash, Bourne Again SHell, e un shell gratuit creat pentru proiectul GNU. A ajuns foarte vestit pentru ca majoritatea distributiilor Linux il folosesc ca shell default pus la dispozitia utilizatorilor. Bineinteles, ca orice aplicatie cu vechime folosita de un numar mare de utilizatori, a ajuns sa fie un shell complex care ne permite sa il personalizam dupa bunul plac crescand astfel productivitatea.

Pentru personalizare bash foloseste fisierul “.bashrc“, fisier care e executat de bash la initializare pentru orice rulare interactiva (adica nu se executa si in cazul scripturilor). Daca ne intereseaza sa cream un anumit mediu de functionare sau sa setam unele variabile de mediu sau limitari in utilizare aici este locul in care trebuie sa faem modificari.

Sa luam de exemplu limitarea utilizatorului care a deschis o sesiune bash interactiva. De exemplu daca suntem pe un sistem desktop nu ne intereseaza sa facem debuging iar coredump il putem face de 0 blocuri. Pentru asta vom adauga in fisierul “.bashrc” urmatoarea linie:

Bineinteles, putem adauga oricate limitari dorim folosind comanda ulimit. Lista limitarilor disponibile, in functie de sistem, poate fi afisata de comanda “ulimit -a“.

Tot aici putem seta diferite optiuni folosind comanda “set“. Putem, de exemplu, sa activam optiunea de pastrare a istoricului comenzilor rulate ruland in fisierul “.bashrc” comanda “set -o history” sau putem determina shellul sa nu se inchida cand se foloseste combinatia de taste CTRL+D ruland in fisierul “.bashrc” comanda “set -o ignoreeof“. Pentru asta vom adauga cele doua comenzi pe linii distincte:

Pentru a va face o idee despre ce se poate seta cu comanda “set” puteti sa aruncati o privire pe pagina proiectului GNU The Set Builtin.

Pentru a determina modul in care bash se comporta in diferite situatii putem folosi comanda “shopt” cu ajutorul careia activam sau dezactivam diferite optiuni ale shellului. De exemplu putem determina shellul sa corecteze erorile minore in cazul in care scriem gresit numele directorului in care vrem sa intram folosind comanda “cd“, adaugand in fisierul “.bashrc” linia:

O lista completa de optiuni care poti fi setate cu ajutorul comenzii “shopt” poate fi gasita, ca in cazul anterior, pe pagina proiectului GNU The Shopt Builtin.

Pe langa optiuni putem seta diferite variabile folosind comanda “export“. Cu ajutorul comenzii “export” putem seta variabilele de mediu care determina promptul afisat, editorul de text preferat, aplicatia preferata de paginare etc. De exemplu, pentru a seta un prompt de forma “[user@host]$ “, pentru a seta “vi” ca editor preferat si “less” ca aplicatie pentru paginare vom adauga in fisierul “.bashrc” urmatoarele trei linii:

Tot in fisierul “.bashrc” putem crea si aliasuri pentru diferite comenzi complexe. De exemplu putem crea un alias cu numele “ll” pentru comanda “ls -al“, un alias “la” pentru comanda “ls -A” sau putem crea un alias care sa adauge un anumit parametru la fiecare rulare a unei comenzi, cum ar fi rularea comenzii “grep –color=auto” de fiecare data cand se ruleaza comanda “grep“. Pentru toate astea vom adauga in fisierul “.bashrc” urmatoarele trei linii:

O alta facilitate draguta a shellului bash este creare de functii in cadrul fisierului “.bashrc“. Daca avem mai multe comenzi de rulat intr-o anumita situatie sau daca avem de rulat o comanda mai complexa putem crea o functie care sa faca totul pentru noi. De exemplu, putem crea o functie/comanda cu numele “lf” care de fiecare data cand este rulata si primeste ca parametru un numar, va verifica lista de fisiere deschise din directorul “/home” de procesul cu PID-ul trimis ca parametru:

Exemplul de mai sus e unul simplu (si util) care il puteti folosi ca punct de pornire pentru crearea propriilor functii care sa faca procesari complexe ale datelor.

Sunt multe moduri in care bash poate fi personalizat pentru a corespunde stilului nostru de lucru sau pentru a ne creste productivitatea. Pentru a afla mai multe despre bash va recomand sa cititi Bash Reference Manual, pus la dispozitie de proiectul GNU.

Leave A Reply