Merge pull request #603 from ellimist/master

fixed typos, a little bit of formatting
This commit is contained in:
Nami-Doc 2014-05-07 18:56:08 +02:00
commit 92a8aa8b1d
2 changed files with 52 additions and 34 deletions

View File

@ -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.";;

View File

@ -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