fixed typos, a little bit of formatting

This commit is contained in:
Adrian Bordinc 2014-05-07 18:53:23 +02:00
parent 54cde3d98d
commit e8264c3fa9
2 changed files with 52 additions and 34 deletions

View File

@ -12,16 +12,18 @@ lang: ro-ro
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.
[Citeste mai multe:](http://www.gnu.org/software/bash/manual/bashref.html)
```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)
# 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:
echo Hello world!
@ -41,7 +43,8 @@ VARIABLE = "Niste text"
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 $.
# 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:
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
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!
# 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 ]
then
echo "Numele tau este username-ul tau"
@ -79,8 +84,8 @@ else
fi
# Este de asemenea si executarea conditionala de comenzi
echo "Intotdeauna executat" || echo "Executat numai daca prima instructiune esueaza"
echo "Intotdeauna executat" && echo "Executat numai daca prima instructiune NU esueaza"
echo "Intotdeauna executat" || echo "Executat daca prima instructiune esueaza"
echo "Intotdeauna executat" && echo "Executat daca prima instructiune NU esueaza"
# Expresiile apar in urmatorul format
echo $(( 10 + 5 ))
@ -93,9 +98,10 @@ ls
# Aceste comenzi au optiuni care la controleaza executia
ls -l # Listeaza fiecare fisier si director pe o linie separata
# Rezultatele comenzii precedente poate fi trimis urmatoarei comenzi drept argument
# Comanda grep filtreaza argumentele trimise cu sabloane. Astfel putem vedea fiserele
# .txt din directorul curent.
# Rezultatele comenzii anterioare pot fi
# trimise urmatoarei comenzi drept argument
# Comanda grep filtreaza argumentele trimise cu sabloane.
# Astfel putem vedea fiserele .txt din directorul curent.
ls -l | grep "\.txt"
# 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 ">>"
# 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."
# The same can be done using backticks `` but they can't be nested - the preferred way
# is to use $( ).
# Acelasi lucru se poate obtine folosind apostrf-ul inversat ``, dar nu pot fi folosite
# unele in interiorul celorlalte asa ca modalitatea preferata este de a folosi $( )
# Acelasi lucru se poate obtine folosind apostrf-ul inversat ``,
# dar nu pot fi folosite unele in interiorul celorlalte asa ca modalitatea
# preferata este de a folosi $( )
echo "Sunt `ls | wc -l` fisiere aici."
# Bash foloseste o instructiune 'case' care functioneaza in mod similar cu instructiunea
# switch din Java si C++
# Bash foloseste o instructiune 'case' care functioneaza
# in mod similar cu instructiunea switch din Java si C++
case "$VARIABLE" in
0) echo "Este un zero.";;
1) echo "Este un unu.";;

View File

@ -78,9 +78,9 @@ false.class #=> FalseClass
'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 inlocui o valoare intr-un sir de caractere atunci cand folosesc dublu apostrof"
#=> "Pot fi inlocuit atunci cand folosesc dublu apostrof"
# Printeaza
@ -106,7 +106,8 @@ adresa = '/nume/nu atat de bun/'
# Simbolurile (sunt obiecte)
# 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
@ -160,10 +161,12 @@ hash.keys #=> ['culoare', 'numar']
hash['culoare'] #=> 'verde'
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
# 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}
@ -195,10 +198,11 @@ end
# TOTUSI, Nici una nu foloseste instructiunea for
# 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".
# 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 pentru fiecare element din interval.
# Metoda "each" a unui interval, ruleaza block-ul o data
# pentru fiecare element din interval.
# Block-ul primeste ca si parametru un index
# Invocand metoda "each" cu un block, arata in urmatorul fel:
@ -256,7 +260,8 @@ def dublu(x)
x * 2
end
# Functille (si toate block-urile) returneaza implicit valoarea ultimei instructiuni
# Functille (si toate block-urile)
# returneaza implicit valoarea ultimei instructiuni
dublu(2) #=> 4
# Parantezele sunt optionale cand rezultatul nu este ambiguu
@ -312,7 +317,8 @@ class Om
def initialize(nume, varsta=0)
# Atribuie argumentul, variabilei "nume", care apartine doar unei instante
@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
end
@ -326,14 +332,17 @@ class Om
@nume
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
# 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_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
def self.spune(msg)
puts "#{msg}"
@ -380,8 +389,10 @@ defined? @@var #=> "class variable"
Var = "Sunt o constanta"
defined? Var #=> "constant"
# Clasele sunt de asemenea obiecte in ruby. Astfel incat clasele 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
# Clasele sunt de asemenea obiecte in ruby. Astfel incat clasele
# 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
class Om
@ -406,7 +417,8 @@ Muncitor.foo # 0
Om.foo = 2 # 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
@bar = 0