[Linux] Crearea propriei comenzi. Alias

Salut, astazi o sa vorbesc putin si despre comanda “alias” cu aceasta comanda putem poreclii o alta comanda sau o serie de comenzi. De exemplu, Gheorge are porecla Piulita lumea cand il vede il striga asa si el raspunde la strigarile pe aceasta porecla. Asta face si comanda alias.
alias newcommand="command;command2;command3;.....;commandn"
Inainte de crearea unui alias, se recomanda folosirea comenzii type ca sa se vada daca exista deja pentru a nu se crea incurcaturi.

Un bun exemplu este acesta, noi avem un fisier in care la sfarsitul zilei scriem ce avem de facut pentru a doua zi, acest fisier se afla pe Desktop, in dir1 din directorul todo. V-a trebui sa scriem cd ~/Desktop/todo/dir1; cat file1 . Daca stim ca v-om folosii asta destul de des, o sa facem un alias pentru aceasta comanda, o sa il numim todo, intai verificam daca exista prin tastarea:
type todo
Vedem ca o sa ni se afiseze textul: bash: type: todo: not found , asta inseamna ca, comanda nu exista asa ca o putem crea.
!!! intre numeAlias si seria de comenzi/comanda exista un egal, trebui mentionat faptul ca nu trebui sa existe spatii nici in dreapta, nici in stanga egalului.
Acum sa cream comanda:
alias todo="cat ~/Desktop/todo/dir1/todo.txt"
Gata, acum in fiecare zi cand vrem sa citim acest fisier scriem doar todo.

Stergerea unui alias se face prin executarea comenzii unalias:
unalias numeAlias

.bashrc

.bashrc este fisierul de configurare pentru bash. Acest fisier se gaseste in folderul userului din home(~) si este ascuns se poate vedea prin tastarea comenzii ls -a
Pentru a se seta un alias permanent trebui adaugat in acest fisier

Advertisements

[Linux] Wildcards — partea I

Wilcard-urile sunt simboluri care reprezinta unul sau mai multe caractere.

 
* reprezinta orice caracter
? reprezinta un singur caracter

Stiu, ca nu intelegeti prea multe dar o sa intelegeti imediat. Haideti sa facem niste exemple.

cp file* dir1
Ce va face ? Va copia toate fisierele care incep cu file si continua cu orice caracter/serie de caractere, Daca avem file1.txt file2.txt le va copia in directorul 1

rm * Va sterge orice fisier din directorul curent.

Daca vrem sa copiem toate fisierele indiferent de nume, dar cu extensia .txt? Simplu.
cp *.txt dir1
* -> Inseamna tot, orice caracter, orice fisier, etc. Ati prins ideea

Acum sa vorbim si despre caracterul ?
Acest simbol reprezinta un singur caracter.
cp file?.txt dir1
Asta inseamna ca va copia fisierele/fisierul file?.txt in dir1. Acel ? inseamna ca poate fii orice caracter, nu imi pasa de acel caracter, daca v-om avea de exemplu file21.txt nu o va copia deoarece ? cauta doar dupa un singur caracter si va trebui sa avem specificat in cp file??.txt dir 1 ca sa caute dupa 2 caractere.
Acum ca incheiere a tutorialului va voi arata ? si * in aceeasi comanda.
rm f?le*.txt
Va elimina fisierul/fisierele care incep cu litera f urmatorul caracter nu imi pasa de el deci va fi, dupa acel caracter va contine literele le. Iar dupa aceea poate sa contina orice caractere dar sa se termine .txt
De exemplu daca avem in directorul respectiv
file1.txt
fzle3223.txt
fyle323.txt
fzle123.txt
Le va elimina pe toate pentru ca indeplineste conditile. incep cu litera f, urmatoarea nu conteaza, sunt urmate de literele le, dupa aceea iar nu conteaza urmatoarele caractere si se termina .txt

[Linux] Combinarea comenzilor in terminal

Salut, astazi voi vorbi despre accesarea mai multor comenzi pe o singura linie in terminal.
Sa zicem ca vrem sa accesam  date si cal intr-o singura linie, cum vom face asta?

1. Prima optiune disponibila este cu caracterul

date; cal

Intai se executa date iar dupa aceea cal( ca in limbajul php fiecare statement se termina cu ; )

mkdir numbers; touch text.txt; mv text.txt numbers
– ordinea comenzilor executate va fii exact cum va fii specificata. In cazul nostru, se va creea directorul numbers, se va creea fisierul text.txt, se va muta in folderul numbers.

comm
2. A doua optiune disponibila este cu ajutorul caracterelor &&

Aici ca si in cazul cu ; ordinea va fii stabilita de ordinea in care au fost specificate comenzile.

cal && date

Intai se va executa cal si dupa aceea date.

Este o diferenta fundamentala intre caracterul ; si && aceea ca daca in ; o comanda este scrisa gresit, restul comenzilor care urmeaza dupa aceasta vor fii executate. Dar cu && daca o comanda este scrisa gresit nu se vor mai executa nici cele care urmează dupa aceasta.

[Linux]Citirea fisierelor.

Salut, astazi voi scrie despre citirea fisierelor. Voi face referire la strict doua comenzi cat si tac. 

cat file.txt

tac file.txt

Ambele vor citii fisierul file.txt spre deosebire de cat, tac le va citi in ordine inversa de la ultima linie spre prima. Cat va citi fisierul normal. Asta este principala diferenta dintre cele doua.
Spre deosebire de comanda less (vezi topicul cu aceasta comanda) va citi fisierul in aceeasi fereastra din terminal nu va deschide alta.

Cu ajutorul comenzii cat dar si tac fisierele pot fii concatenate. Adica vor fii citite impreuna. De exemplu:

cat file1 file2

Va citi fisierul 1 pana la sfarsit dupa aceea il va citi si pe al doilea.

[Linux]Istoricul comenzilor

Istoricul comenzilor poate fii vazut tastand comanda  history sau in fisierul .bash_history

history

Va afisa istoricul comenzilor executate. Putem naviga prin istoric fara a tasta aceasta comanda, cu  ajutorul sagetilor sus si jos. De exemplu, apasam sageata de sus ne va afisa ultima comanda executata, mai apasam odata ne-o arata pe penultima si tot asa. Istoricul comenzilor poate fi foarte util, de exemplu, am instalat un pachet si acum nu il mai avem si nu mai stim cum sa il instalam, cautam in history comanda speciala pentru avel pachet.


history -c

Aceasta comanda va sterge tot istoricul comenzilor. Daca specificam un numar dupa comanda history ne va afisa ultimele n comenzi. De exemplu: 

history 5

Va afisa ultimele 5 comenzi, putem sa cerem afisarea si pentru 50, 500, pentru orice numar specificat va arata comenzile respective.

[Linux]Numele fisierelor/directoarelor(spatii, keywords speciale).

Salut, de data asta voi vorbii despre spatierea si includerea de caractere speciale in numele unui fisier sau al unui director. Eu daca vreau sa creez un fisier care o sa se numeasca eu tu , nu va functiona exact cum sper eu, adica, imi va face doua directoare unul cu numele eu si altul cu numele tu . Eu vreau sa creez un singur director care sa contina acest nume, pentru asta voi folosii ghilimelele duble sau cele simple. De exemplu, ca sa creez acest director voi folosi:

mkdir “eu tu”

Si il va crea cu spatiu, de asemenea puteam sa folosim si ghilimelele simple ‘eu tu’ si tot ar fii mers.

Mai exista o metoda prin care se poate face asta si anume cu ajutorul caracterului de escape backslash

De exemplu, in cazul precedent, puteam folosi:

mkdir eu\ tu

Si ar fii functionat exact cum imi doream. Caracterul escape (\) nu face altceva decat sa ii spuna shell-ului nostru ca urmatorul caracter nu va fii interpretat ca un caracter special sau ca un spatiu.

***Pentru a face escape la caracterele speciale, in afara de backslash, se mai poate folosii si ghilimelele simple sau duble.

Caracterele speciale sunt:

  • $
  • <
  • >
  • &
  • |
  • \
  • ;

Acestea se pot pune in numele unui fisier sau al unui director tot prin ajutorul caracterului escape backslash. De exemplu daca vreau sa creez folderul $adicode il voi face asa:

mkdir \$adicode

Si va interpreta $ ca text nu ca si caracter special. Si caracterul backslash poate fii pus intr-un nume la fel.

mkdir \\masini\\

Iar directorul va avea numele \masini\

***Exista o exceptie unde nici ghilimelele nici acest caracter nu poate sa ii faca escape si anume forwardslash ( / ) (la mkdir).

[Linux]Comenzile de stergere: “rm”/”rmdir”

rm -> aceasta comanda poate sterge un fisier/mai multe fisiere sau un director/mai multe directoare. Poate sterge mai mult decat 1 singur element.

rm filename

rm filename1 filename2 filename3

Prima comanda, sterge decat un fisier, a doua sterge mai multe, este irelevant numarul fisierelor care vor fii șterse nu are o limita, a fost doar un exemplu.
Optiuni:

-v (verbose) => afiseaza un sumar la ceea ce sa petrecut cand s-a executat aceasta comanda.

-R (relative) => aceasta optiune este folosita pentru a sterge un director care nu este gol, care mai contine si alte directoare/ fisiere. Functioneaza in felul urmator: intra in director, cauta dupa subdirectoare, sterge fisierele din subdirectoare, sterge subdirectoarele apoi sterge directorul specificat.

-i (interaction) => cere confirmare pentru a intra in director si a sterge fisiere/directoare. Se raspunde doar cu y sau n.(yes/no)

-f (force) => forteaza un folder/fisier sa fie sters, nu va afisa nici o confirmare, nici in timpul actiunii, nici dupa. Daca fisierul exista il va ignora.

** Spre deosebire de comanda “ls” aici optiunea -r este case-insensitive, adica, ori ca folosim -r ori ca folosim -R va fii acelasi lucru.

*** Optiunile pot fii folosite împreună ca si la celelalte comenzi gen:

rm -R -i -v dir1

Optiunile se mai pot aseza doar cu un -, adica: -Riv. Nu este importanta ordinea optiunilor.

rmdir -> sterge un director care nu contine nimic, daca directorul nu  este gol va rezulta o eroare.

rmdir dir1