mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-24 10:01:38 +00:00
Merge pull request #603 from ellimist/master
fixed typos, a little bit of formatting
This commit is contained in:
commit
92a8aa8b1d
@ -12,16 +12,18 @@ lang: ro-ro
|
|||||||
filename: LearnBash-ro.sh
|
filename: LearnBash-ro.sh
|
||||||
---
|
---
|
||||||
|
|
||||||
Bash este numele shell-ului unix, care a fost de asemenea distribuit drept shell pentru pentru sistemul de operare GNU si ca shell implicit pentru Linux si Mac OS X.
|
Bash este numele shell-ului unix, care a fost de asemenea distribuit drept shell pentru sistemul de operare GNU si ca shell implicit pentru Linux si Mac OS X.
|
||||||
Aproape toate exemplele de mai jos pot fi parte dintr-un script sau pot fi executate direct in linia de comanda.
|
Aproape toate exemplele de mai jos pot fi parte dintr-un script sau pot fi executate direct in linia de comanda.
|
||||||
|
|
||||||
[Citeste mai multe:](http://www.gnu.org/software/bash/manual/bashref.html)
|
[Citeste mai multe:](http://www.gnu.org/software/bash/manual/bashref.html)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Prima linie din script se numeste "shebang" care spune systemului cum sa execute scriptul
|
# Prima linie din script se numeste "shebang"
|
||||||
|
# care spune systemului cum sa execute scriptul
|
||||||
# http://en.wikipedia.org/wiki/Shebang_(Unix)
|
# http://en.wikipedia.org/wiki/Shebang_(Unix)
|
||||||
# Dupa cum te-ai prins deja, comentariile incep cu #. Shebang este de asemenea un comentariu.
|
# Dupa cum te-ai prins deja, comentariile incep cu #.
|
||||||
|
# Shebang este de asemenea un comentariu.
|
||||||
|
|
||||||
# Exemplu simplu de hello world:
|
# Exemplu simplu de hello world:
|
||||||
echo Hello world!
|
echo Hello world!
|
||||||
@ -41,7 +43,8 @@ VARIABLE = "Niste text"
|
|||||||
echo $VARIABLE
|
echo $VARIABLE
|
||||||
echo "$VARIABLE"
|
echo "$VARIABLE"
|
||||||
echo '$VARIABLE'
|
echo '$VARIABLE'
|
||||||
# Atunci cand folosesti variabila, o atribui, o exporti sau altfel, numele ei se scrie fara $.
|
# Atunci cand folosesti variabila, o atribui, o exporti sau altfel,
|
||||||
|
# numele ei se scrie fara $.
|
||||||
# Daca vrei sa folosesti valoarea variabilei, atunci trebuie sa folosesti $.
|
# Daca vrei sa folosesti valoarea variabilei, atunci trebuie sa folosesti $.
|
||||||
# Atentie la faptul ca ' (apostrof) nu va inlocui variabla cu valoarea ei.
|
# Atentie la faptul ca ' (apostrof) nu va inlocui variabla cu valoarea ei.
|
||||||
|
|
||||||
@ -55,7 +58,8 @@ echo ${VARIABLE:0:7}
|
|||||||
|
|
||||||
# Valoarea implicita a unei variabile:
|
# Valoarea implicita a unei variabile:
|
||||||
echo ${FOO:-"ValoareaImplicitaDacaFOOLipsesteSauEGoala"}
|
echo ${FOO:-"ValoareaImplicitaDacaFOOLipsesteSauEGoala"}
|
||||||
# Asta functioneaza pentru null (FOO=), sir de caractere gol (FOO=""), zero (FOO=0) returneaza 0
|
# Asta functioneaza pentru null (FOO=),
|
||||||
|
# sir de caractere gol (FOO=""), zero (FOO=0) returneaza 0
|
||||||
|
|
||||||
# Variabile pre-existente
|
# Variabile pre-existente
|
||||||
echo "Ulima valoare returnata de ultimul program rulat: $?"
|
echo "Ulima valoare returnata de ultimul program rulat: $?"
|
||||||
@ -70,7 +74,8 @@ read NAME # Observa faptul ca nu a trebuit sa declaram o variabila noua
|
|||||||
echo Salut, $NAME!
|
echo Salut, $NAME!
|
||||||
|
|
||||||
# Avem obisnuita instructiune "if"
|
# Avem obisnuita instructiune "if"
|
||||||
# Foloseste "man test" pentru mai multe informatii despre instructinea conditionala
|
# Foloseste "man test" pentru mai multe informatii
|
||||||
|
# despre instructinea conditionala
|
||||||
if [ $NAME -ne $USER ]
|
if [ $NAME -ne $USER ]
|
||||||
then
|
then
|
||||||
echo "Numele tau este username-ul tau"
|
echo "Numele tau este username-ul tau"
|
||||||
@ -79,8 +84,8 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Este de asemenea si executarea conditionala de comenzi
|
# Este de asemenea si executarea conditionala de comenzi
|
||||||
echo "Intotdeauna executat" || echo "Executat numai daca prima instructiune esueaza"
|
echo "Intotdeauna executat" || echo "Executat daca prima instructiune esueaza"
|
||||||
echo "Intotdeauna executat" && echo "Executat numai daca prima instructiune NU esueaza"
|
echo "Intotdeauna executat" && echo "Executat daca prima instructiune NU esueaza"
|
||||||
|
|
||||||
# Expresiile apar in urmatorul format
|
# Expresiile apar in urmatorul format
|
||||||
echo $(( 10 + 5 ))
|
echo $(( 10 + 5 ))
|
||||||
@ -93,9 +98,10 @@ ls
|
|||||||
# Aceste comenzi au optiuni care la controleaza executia
|
# Aceste comenzi au optiuni care la controleaza executia
|
||||||
ls -l # Listeaza fiecare fisier si director pe o linie separata
|
ls -l # Listeaza fiecare fisier si director pe o linie separata
|
||||||
|
|
||||||
# Rezultatele comenzii precedente poate fi trimis urmatoarei comenzi drept argument
|
# Rezultatele comenzii anterioare pot fi
|
||||||
# Comanda grep filtreaza argumentele trimise cu sabloane. Astfel putem vedea fiserele
|
# trimise urmatoarei comenzi drept argument
|
||||||
# .txt din directorul curent.
|
# Comanda grep filtreaza argumentele trimise cu sabloane.
|
||||||
|
# Astfel putem vedea fiserele .txt din directorul curent.
|
||||||
ls -l | grep "\.txt"
|
ls -l | grep "\.txt"
|
||||||
|
|
||||||
# De asemenea poti redirectiona o comanda, input si error output
|
# De asemenea poti redirectiona o comanda, input si error output
|
||||||
@ -106,17 +112,17 @@ python2 hello.py 2> "error.err"
|
|||||||
# Daca vrei sa fie concatenate poti folosi ">>"
|
# Daca vrei sa fie concatenate poti folosi ">>"
|
||||||
|
|
||||||
# Comenzile pot fi inlocuite in interiorul altor comenzi folosind $( ):
|
# Comenzile pot fi inlocuite in interiorul altor comenzi folosind $( ):
|
||||||
# Urmatoarea comanda afiseaza numarul de fisiere si directoare din directorul curent
|
# Urmatoarea comanda afiseaza numarul de fisiere
|
||||||
|
# si directoare din directorul curent
|
||||||
echo "Sunt $(ls | wc -l) fisiere aici."
|
echo "Sunt $(ls | wc -l) fisiere aici."
|
||||||
|
|
||||||
# The same can be done using backticks `` but they can't be nested - the preferred way
|
# Acelasi lucru se poate obtine folosind apostrf-ul inversat ``,
|
||||||
# is to use $( ).
|
# dar nu pot fi folosite unele in interiorul celorlalte asa ca modalitatea
|
||||||
# Acelasi lucru se poate obtine folosind apostrf-ul inversat ``, dar nu pot fi folosite
|
# preferata este de a folosi $( )
|
||||||
# unele in interiorul celorlalte asa ca modalitatea preferata este de a folosi $( )
|
|
||||||
echo "Sunt `ls | wc -l` fisiere aici."
|
echo "Sunt `ls | wc -l` fisiere aici."
|
||||||
|
|
||||||
# Bash foloseste o instructiune 'case' care functioneaza in mod similar cu instructiunea
|
# Bash foloseste o instructiune 'case' care functioneaza
|
||||||
# switch din Java si C++
|
# in mod similar cu instructiunea switch din Java si C++
|
||||||
case "$VARIABLE" in
|
case "$VARIABLE" in
|
||||||
0) echo "Este un zero.";;
|
0) echo "Este un zero.";;
|
||||||
1) echo "Este un unu.";;
|
1) echo "Este un unu.";;
|
||||||
|
@ -78,9 +78,9 @@ false.class #=> FalseClass
|
|||||||
'Sunt un sir de caractere'.class #=> String
|
'Sunt un sir de caractere'.class #=> String
|
||||||
"Si eu sunt un sir de caractere".class #=> String
|
"Si eu sunt un sir de caractere".class #=> String
|
||||||
|
|
||||||
fi_inlocuit = "inlocui o valoare in string"
|
fi_inlocuit = "fi inlocuit"
|
||||||
"Pot #{fi_inlocuit} atunci cand folosesc dublu apostrof"
|
"Pot #{fi_inlocuit} atunci cand folosesc dublu apostrof"
|
||||||
#=> "Pot inlocui o valoare intr-un sir de caractere atunci cand folosesc dublu apostrof"
|
#=> "Pot fi inlocuit atunci cand folosesc dublu apostrof"
|
||||||
|
|
||||||
|
|
||||||
# Printeaza
|
# Printeaza
|
||||||
@ -106,7 +106,8 @@ adresa = '/nume/nu atat de bun/'
|
|||||||
|
|
||||||
# Simbolurile (sunt obiecte)
|
# Simbolurile (sunt obiecte)
|
||||||
# Simbolurile sunt constante imutabile, reutilizabile, reprezentate intern
|
# Simbolurile sunt constante imutabile, reutilizabile, reprezentate intern
|
||||||
# de o valoare numerica. Sunt deseori folosite in locul sirurilor de caractere pentru a da un nume reprezentativ unei valori
|
# de o valoare numerica. Sunt deseori folosite in locul sirurilor de caractere
|
||||||
|
# pentru a da un nume reprezentativ unei valori
|
||||||
|
|
||||||
:exemplu_simbol.class #=> Symbol
|
:exemplu_simbol.class #=> Symbol
|
||||||
|
|
||||||
@ -160,10 +161,12 @@ hash.keys #=> ['culoare', 'numar']
|
|||||||
hash['culoare'] #=> 'verde'
|
hash['culoare'] #=> 'verde'
|
||||||
hash['numar'] #=> 5
|
hash['numar'] #=> 5
|
||||||
|
|
||||||
# Incercand sa accesezi un element dintr-un hash printr-o cheie care nu exista va returna "nil".
|
# Incercand sa accesezi un element dintr-un hash
|
||||||
|
# printr-o cheie care nu exista va returna "nil".
|
||||||
hash['nimic_aici'] #=> nil
|
hash['nimic_aici'] #=> nil
|
||||||
|
|
||||||
# Incepand cu Ruby 1.9, este o sintaxa speciala pentru atunci cand se folosesc simboluri drept chei:
|
# Incepand cu Ruby 1.9, este o sintaxa speciala
|
||||||
|
# pentru atunci cand se folosesc simboluri drept chei:
|
||||||
|
|
||||||
hash_nou = { defcon: 3, actiune: true}
|
hash_nou = { defcon: 3, actiune: true}
|
||||||
|
|
||||||
@ -195,10 +198,11 @@ end
|
|||||||
# TOTUSI, Nici una nu foloseste instructiunea for
|
# TOTUSI, Nici una nu foloseste instructiunea for
|
||||||
# In locul acesteia ar trebui sa folosesti metoda "each" si sa ii trimiti un block
|
# In locul acesteia ar trebui sa folosesti metoda "each" si sa ii trimiti un block
|
||||||
# Un bloc este o bucata de cod pe care o poti trimite unei metode precum "each".
|
# Un bloc este o bucata de cod pe care o poti trimite unei metode precum "each".
|
||||||
# Este analog pentru "lambda", functii anonime, sau closures in alte limbaje de programare.
|
# Este analog pentru "lambda", functii anonime,
|
||||||
|
# sau closures in alte limbaje de programare.
|
||||||
#
|
#
|
||||||
# The "each" method of a range runs the block once for each element of the range.
|
# Metoda "each" a unui interval, ruleaza block-ul o data
|
||||||
# Metoda "each" a unui interval, ruleaza block-ul o data pentru fiecare element din interval.
|
# pentru fiecare element din interval.
|
||||||
# Block-ul primeste ca si parametru un index
|
# Block-ul primeste ca si parametru un index
|
||||||
# Invocand metoda "each" cu un block, arata in urmatorul fel:
|
# Invocand metoda "each" cu un block, arata in urmatorul fel:
|
||||||
|
|
||||||
@ -256,7 +260,8 @@ def dublu(x)
|
|||||||
x * 2
|
x * 2
|
||||||
end
|
end
|
||||||
|
|
||||||
# Functille (si toate block-urile) returneaza implicit valoarea ultimei instructiuni
|
# Functille (si toate block-urile)
|
||||||
|
# returneaza implicit valoarea ultimei instructiuni
|
||||||
dublu(2) #=> 4
|
dublu(2) #=> 4
|
||||||
|
|
||||||
# Parantezele sunt optionale cand rezultatul nu este ambiguu
|
# Parantezele sunt optionale cand rezultatul nu este ambiguu
|
||||||
@ -312,7 +317,8 @@ class Om
|
|||||||
def initialize(nume, varsta=0)
|
def initialize(nume, varsta=0)
|
||||||
# Atribuie argumentul, variabilei "nume", care apartine doar unei instante
|
# Atribuie argumentul, variabilei "nume", care apartine doar unei instante
|
||||||
@nume = nume
|
@nume = nume
|
||||||
# Daca varsta nu este data, o sa ii atribuim valoarea implicita din lista de argumente (0, in cazul nostru)
|
# Daca varsta nu este data, o sa ii atribuim valoarea implicita
|
||||||
|
# din lista de argumente (0, in cazul nostru)
|
||||||
@varsta = varsta
|
@varsta = varsta
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -326,14 +332,17 @@ class Om
|
|||||||
@nume
|
@nume
|
||||||
end
|
end
|
||||||
|
|
||||||
# Functionalitatea de mai sus poate fi obtinuta folosing metoda "attr_accessor" dupa cum urmeaza:
|
# Functionalitatea de mai sus poate fi obtinuta
|
||||||
|
# folosing metoda "attr_accessor" dupa cum urmeaza:
|
||||||
attr_accessor :nume
|
attr_accessor :nume
|
||||||
|
|
||||||
# Metodele pentru a lua si a seta valoarea unei variabile pot fi de asemenea obtinute individial:
|
# Metodele pentru a lua si a seta valoarea unei variabile
|
||||||
|
# pot fi de asemenea obtinute individial:
|
||||||
attr_reader :nume
|
attr_reader :nume
|
||||||
attr_writer :nume
|
attr_writer :nume
|
||||||
|
|
||||||
# O metoda apartinand unei clase foloseste "self" pentru a se diferentia de metodele unei instante ale clasei respective
|
# O metoda apartinand unei clase foloseste "self" pentru a se diferentia
|
||||||
|
# de metodele unei instante ale clasei respective
|
||||||
# Poate fi invocata doar pe clasa, si nu pe o instanta a acesteia
|
# Poate fi invocata doar pe clasa, si nu pe o instanta a acesteia
|
||||||
def self.spune(msg)
|
def self.spune(msg)
|
||||||
puts "#{msg}"
|
puts "#{msg}"
|
||||||
@ -380,8 +389,10 @@ defined? @@var #=> "class variable"
|
|||||||
Var = "Sunt o constanta"
|
Var = "Sunt o constanta"
|
||||||
defined? Var #=> "constant"
|
defined? Var #=> "constant"
|
||||||
|
|
||||||
# Clasele sunt de asemenea obiecte in ruby. Astfel incat clasele pot avea variabile care apartin unei instante
|
# Clasele sunt de asemenea obiecte in ruby. Astfel incat clasele
|
||||||
# O variabila care apartine unei clase poate fi accesata de toate instantele acesteia si de clasele care o extind
|
# pot avea variabile care apartin unei instante
|
||||||
|
# O variabila care apartine unei clase poate fi accesata de toate
|
||||||
|
# instantele acesteia si de clasele care o extind
|
||||||
|
|
||||||
# clasa parinte
|
# clasa parinte
|
||||||
class Om
|
class Om
|
||||||
@ -406,7 +417,8 @@ Muncitor.foo # 0
|
|||||||
Om.foo = 2 # 2
|
Om.foo = 2 # 2
|
||||||
Muncitor.foo # 2
|
Muncitor.foo # 2
|
||||||
|
|
||||||
# Variabilele care apartin unei instante ale unei clase, nu sunt impartite de (copii acesteia) clasele care o extind
|
# Variabilele care apartin unei instante ale unei clase,
|
||||||
|
# nu sunt impartite de (copii acesteia) clasele care o extind
|
||||||
class Om
|
class Om
|
||||||
@bar = 0
|
@bar = 0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user