Search

 
 
 
 
Previous article Next article Go to back
       

Linux. Komandos. Bash, komandinė eilutė

KOMANDINĖS EILUTĖS APLINKA
Kai paleidžiama Linux OS, atsidaro grafinis arba tekstinės komandinės eilutės terminalai. Grafinis terminalas (grafinė aplinka) skirtas labiau namų vartotojams, tekstinis- sys. administratoriams. Nuotoliniu būdu jungtis prie serverių naudojama putty tekstinio terminalo programa. Virtualūs terminalai, kai administruojama esant prie serverio kompiuterio, perjungiami [CTRL]+[ALT]+[Fx]. [CTRL]+[ALT]+[F7] -grafinis terminalas. Terminale komandos vykdomos po ženklo:

# -sisteminiam administratoriui
$ -paprastam vartotojui

Jeigu įėjus į terminalo aplinką nematome po pranešimų, gale #, tai reiškia, kad ne sisteminis administratorius.

Komandų interpretatorius (KI)– tarpininkas tarp OS branduolio ir vartotojo. KI verčia komandas, įvestas iš komandinės eilutės į dvejetainius kodus, suprantamus OS sistemos branduoliui. Dažniausiai naudojami bash, csh (c shell), gali būti naudojami net PHP ar PERL. Svarbu norodyti faile, kokį komandų interpretatorių naudoti. KI kai kuriuos simbolius supranta, kaip turinčius papildomas funkcijas. Tai – vadinami metasimboliai. Skirtingi KI gali turėti kitokį metasimbolių rinkinį, kitokį komandų rinkinį.

Galimos įvairios pagalbinės klavišų kombinacijos, kurios palengvina darbą terminalo aplinkoje:
  • Tabuliacija. Rašom raides rm ir spaudžiam [TAB]. Matom komandas, kurios prasideda rm. [TAB] -iškviečia esančių serveryje komandų sąrašą. Rašom rmd ir spaudžiam [TAB], atsiranda komanda rmdir komandų eilutėje.
  • Tekstinio terminalo aplinkoje rodyklės [Aukštyn], [Žemyn] leidžia vykdyti prieš tai byvusias komandas. Komandos vykdomos nuspaudus [ENTER].
  • [CTRL] + [r] - Paieška komandų, kurios buvo naudotos terminale.
  • [CTRL] + [k] - Nukerta komandą iki žymeklio.
  • [CTRL] + [z] - Užmigdo dabar vykdoma komandą terminale. Komanda lieka operatyviojoje aplinkoje.
  • [CTRL] + [c] - Nutraukia vykdoma komandą.
  • [CTRL] + [Alt] + [Delete] - Perkrauna kompiuterį, arba išmeta langą su pasirinkimu.
  • [CTRL] + [l]  išvalo ekraną, tiksliau, nustumia viską į viršų. (raidė [el], o ne [i])
  • [CTRL] + [b]  Pajudina žymeklį per vieną pozicija į kairę.
  • [CTRL] + [f]  Pajudina žymeklį per vieną pozicija į dešinę.
  • [CTRL] + [Alt] + [Backspace] - Jeigu esama grafiniame terminale, grižtama į "log in" langą, perkrauna grafinį terminalą.
Tašku prasideda paslėptieji failai: .htaccess. Jie gali būti nematomi. Komandos turi būti rašomos tiksliai tomis raidėmis, kaip nurodyta dokumentacijoje: A ir a skirtingos raidės. Komandos RM nėra, yra komanda rm.
mc FAILŲ NAVIGACIJOS PRIEMONĖ
 
mc- failų tvarkyklė, komanderis. Paleidus jį, galioja sekantčios klavišų kombinacijos: [CTRL]+ [o] - laikinai išjungia mc, galima pažiūrėti komandų rezultatus. Įeiti vėl į mc aplinką spaudžiam [CTRL] + [o].

[ALT] + [o] - kitoje mc dalyje atidaro aukštesnį katalogą, arba tą patį katalogą, kaip einamojoje dalyje, Kokiam kataloge esama- rodo viršuje.

[ALT]+[s] - paieška kataloge, apačioje atsiranda juosta, rašom ieškomo failo pavadinimą. Tarkim, einam į /etc katalogą: cd /etc
[ALT]+[H] - įvykdytų mc aplinkoje komandų istorija.

Spaudžiam kombinaciją [ALT]+[s], po to passwd, Suradus- spaudžiame [ESC], [ESC]. [F4] redaguoja failą, arba galima rašyt:
mcedit failoPavadinimas
Pagal nutylėjimą gali būti įjungtas kitas napatogus redaktorius (nemėlynas), einam į [Options]->[Configuration]->[Use internal Edit] pažymim varnelę. Spaudžiam [Save]. Tada [F4] atidaro mcedit redaktorių. Iš mcedit aplinkos išeinama [esc] pagalba.

[F10] išeina iš mc, išeiti galima naudoti komandą exit.
NAVIGACIJA KATALOGUOSE: KAIP PATEKTI IŠ VIENO KATALOGO Į KITĄ

Aukščiausias katalogų taškas yra /. Kur esama, kokiame kataloge, rodo komanda
pwd
Eiti į /etc:
cd /etc
Pakilti katalogo medžiu aukštyn:
cd ..
Pakilti dvejais katalogais aukštyn:
cd ../..
Pakilti į patį aukščiausią šakninį katalogą:
cd /
Eiti į katalogą, kuris yra einamajame (patikrinam su pwd, koks einamasis, tarkim /home, tai eis į /home/a ):
cd a
Eiti į katalogą, kuris yra nuo aukščiausio taško viršaus vienu lygiu žemiau:
cd /a
Eiti į namų (namų katalogas- pagrindinis vartotojo katalogas) katalogą:
cd ~
pwd

Jeigu esate kataloge /home/b:
cd a eis į /home/b/a
cd /a eis į /a katalogą.

Jeigu esate /home/b/c :
cd ../a
eis į /home/b/a
cd ../../a eis į /home/a
NAUDINGOS KOMANDOS
Pagalba apie ls:
man lsIšeiti iš man komandos spaudžiam [q] arba [CTRL] + [C].

Data:
# data
date

# nustatyti laiką
date -s 10:00

# nustato datą
date -s 'Sep 25'
Kalendorius:
cal

# visi metai
cal -y

Išvalo ekraną:
clear
cat – isvesti failo turinį, more- skirstymas puslapiais (spausti enter, tarpą, backspace, ctrl B).
cat /etc/resolv.conf
 
cat /var/log/messages

Ilgiems failams geriau:
more /var/log/messages

Jeigu turime 3 failus a.txt, b.txt ir c.txt ir norime gauti vieną failą, kuriame informacija surašyta c.txt, b.txt, a.txt:
date > a.txt

cat a.txt

date > b.txt

cat b.txt

date > c.txt

cat c.txt

cat c.txt b.txt a.txt > d.txt

cat d.txt

help – pagrindinių komandų sąrašas. Patogiau:
help | more
Informacija apie komandą:
info grubman grub – per mažai informacijos pateikia.

ls rodo informaciją apie katalogus ir failus.

-l rodo išplėstinę informaciją. Informacija apie katalogo turinį:
ls -l /etc
Stulpeliai atitinka:

1. drwxrwxrwx – parodo ar katalogas, ar failas (d arba -). rwx – skaitymo, rašymo, vykdymo teisės failo kūrėjui, jo grupei, visiems kitiems. Informacijos teises gali keisti sisteminis administratorius arba failo kūrėjas.
2. Nuorodų- vardų skaičius (kietosios nuorodos- hard links).
3. Savininko vardas.
4. Savininko grupė.
5. Dydis baitais.
6. Sukūrimo ar keitimo data.
7. Failo pavadinimas.

Parodo visus, įskaitant paslėptuosius failus:
# Įeinam į /root katalogą
cd /root

ls -a
ls -a -l ir ls -al rodo tą patį.

Informacija apie failus kataloge:
ls -l /etc
Informacija tik apie tą katalogą:
ls -ld /etc
Kitos ls komandos galimybės:
# Rikiavimas pagal failo dydį,
ls -l /etc | sort -k 5 -n 

# Rikiavimas pagal failo dydį, ir skirstymas puslapiais
ls -l /etc | sort -k 5 -n | more

# Rikiavimas pagal laiką + pilna informacija
ls -lt

# Tik failas /etc/resolv.conf
ls -l /etc/resolv.conf

# Rodyti failus viename stulpelyje. 
ls -1

Failo sukūrimas, informacija apie failą:
touch a.txt

# patikrinam
ls -l a.txt

Katalogo sukūrimas. Sukuriam jį ir patikrinam informaciją:
mkdir /a

#patikrinam
ls -ld /a

Galima kurti failus pavadinimu,  [tarpas][tarpas] ir panašiai:
touch '[tarpas]'
touch '[tarpas][tarpas]'
touch 'student.txt[tarpas]'

ls -l


# Trynimo komanda, neištins, nėra failo student.txt
rm student.txt

# Ištrins
rm 'student.txt[tarpas]'

Tada įdomiai atrodo ls -l rezultatai. Reikia nepamiršti, nors operacinė sistema ir leidžia tokius failų pavadinimus, serveriai gali neteisingai interpretuoti, nerodyti ir tų failų, todėl reiktų vengti failų pavadinimų, kuriuose yra tarpai.

Informacija apie failą:
file a.txt
Info apie visus failus kataloge:
file *
Rodyti loginius diskus ir jų užpildymą:
df

# human vaizdas, rodo KB, MB, GB
df -h

# megabaitais
df -m
Diskai prijungti prie katalogų. Taip part rodo virtualias failų sistemas: tmpfs ir t.t., kurios yra operatyviojoje atmintyje.

INFORMACIJOS SPAUSDINIMAS
Išveda tekstą į ekraną:
echo labas rytas

# tas pat
echo "labas rytas"

# vartotojo kintamasis, kuriame saugoma vartotojo "namų " katalogo adresas
echo $HOME

# vartotojo kintamasis, kuriame saugoma vartotojo el. pašto katalogo adresas.
echo $MAIL

# išveda tekstą ir vykdo komandą, kuri yra tarp atvirkštinių kabučių.
echo dabar yra ` date `

# su specialiais simboliais
echo -e "linux \n\n pamokos"

FAILŲ KOMANDOS

Sukuriam failą su tekstu:
jonas
petras
simas
egle
petras

Rūšiuoja eilutes abecelės tvarka:
sort failoVardas
Raktai:
rūšiuoja pagal skaičiaus dydį:
-n

rūšiuojant ignoruoja simbolius, išskyrus raides, tarpus ir skaičius:
-d

rūšiuoja atvirkščiai:
-r

rūšiuoja ir panaikina pasikartojančias eilutes:
-u

rūšiuojant neatsižvelgia į didžiąsias ir mažąsias raides.
-f

Pavyzdys:
# rūšiavimas pagal atitinkamą stulpelį
sort -k 5 failoVardas

# katalogo turinio atvirkštinis rikiavimas
ls -1 /etc | sort -r

Failo pabaigos eilutės:
# išveda 10 paskutių eilučių (gali būti kitas kiekis):
tail failoVardas

# rodyti 1000 paskutinių eilučių.
tail –1000 failoVardas

tail -n 1000 failoVardas

tail -n -1000 failoVardas


# Rodyti viską, išskyrus dvi pirmas
tail -n +2 failoVardas

Analogiškai (išveda pradžios eilutes) veikia komanda head.

wc parodo kiek eilučių, žodžių ir simbolių yra faile:
wc failoVardas

# kiek failų ir katalogų yra /etc kataloge
ls -1 /etc | wc -l

-l, -w, -c atitinkamai rodo tik vieną kiekį.

Filtras, išrenkantis eilutes:
grep filtrasTekstui failoVardas
Raktai. Išrinkti eilutes be nurodyto teksto:
-v

rodyti ir eilutės numerį:
-n

reguliariosios išraiškos:
-e "xxx|yyy|zzz"

ignoruojamas skirtumas tarp didžiųjų ir mažųjų raidžių:
-i

Rodyti nurodytą eilučių kiekį prieš surastą eilutę: 
-B

Rodyti nurodytą eilučių kiekį po surastos eilutės: 
-A

Ieškoti visame nurodytame kataloge ir pakatalogiuose:
-R

nerodyti failo vardų, jeigu filtruojama daug failų:
grep jonas -h /etc/*
priverstinai rodyti failų vardus, jeigu filtruojama daug failų:
grep jonas -H /etc/*
Pavyzdys:
grep -v '#' /etc/resolv.conf

# failo išvalymas ir jo perrašymas
grep -v '#' /usr/local/apache2/conf/httpd.conf > httpdNew
mv httpdNew httpd.conf
METASIMBOLIAI
GOOGLE: METASIMBOLIAI EN raktai:
linux bash programming examples|
linux bash scripts
bash metasymbols
linux metacharacters

# reiškia komentarą, po jo tekstas nevykdomas:
# ls -l
# komentaras, jame nevykdomas veiksmas

Bet kiek ir bet kokių simbolių (žvaigždutė):
* Pvz.:
# rodyti visus failus, prasidedančius p raide
ls –l p*

# rodyti visų failų turinį, kurie prasideda I raide
cat *.txt

# ieškoti tik AVI failų, pradedant nuo / katalogo
find / -name "*.avi"

"" ir ' ' –skirtos "apgaubti" simbolius ir metasimbolius. Failų pavadinimai gali atitikti metasimbolius:
# sukuriamas failas pavadinimu *
touch '*'

# rodyti visų failų informaciją kataloge
ls -l *

# failo, kurio pavadinimas * išvedimas į ekraną
ls –l "*"

# tas pat
ls –l '*'

# sukuriamas failas pavadinimu "*", tai rodys ls komanda
touch '"*"'

# Jeigu failo vardas "*" , tai išvedama informacija tokiu būdu

ls –l ‘"*"‘


\ - po jo einantis vienas simbolis interpretuojamas kaip paprastas. Jei rašysime:
ls –l \*tai ekrane rodys tik failo * informaciją.

Jei failo vardas yra \*, tai ekrane bus informacija tik apie tą failą:
ls –l \\\* ? –bet koks vienas simbolis:
ls -l a?
> -nukreipimas į failą ar įrenginį, ištrinant seną informaciją.
>> - nukreipimas į failą ar įrenginį, neištrinant senos informacijos.
< - nukreipimas iš failo ar klaviatūros.
<< - nukreipimas iš failo ar klaviatūros, nepanaikinant senos informacijos. Pvz:
# įrašo į failą dabar_data.txt komandos rezultatą
date > dabar_data.txt

# ištrinti mc komandų istoriją
> /root/.mc/history

# ištrinti BASH komandų istoriją
> /root/.bash_history


Kuo skiriasi > nuo >> galima patikrinti sekančiai:
ls -l /etc/hosts > a

ls -l /etc/hosts > a

cat a

ls -l /etc/hosts >> b

ls -l /etc/hosts >> b

cat b

cat > failas.txt –šiuo atveju cat komanda be argumento. Tada iš klaviatūros bus galima rinkti tekstą tiesiai į failą, gaunasi kaip paprasčiausias redaktorius. Užbaigiant nuspausti [CTL]+[C] arba [CTRL]+[D].
cat < failas.txt tas pat kaip ir cat failas.txt.

< ir << naudojami retai, pavyzdžiui nukreipti failą į siunčiamą laišką. Failas tampa laiško turiniu:
mail a @ a.lt < a.txt
; - komanda vykdoma viena po kitos:
# ekrane rodys datą, bus padėtas tarpas, o po to einamojo mėnesio kalendorių
date ; echo ; cal

[]- veikia kaip arba sąlyga vienam simboliui iš rinkinio:
# rodyti failus, prasidedančius a arba p arba k raidėmis
ls [apk].txt

# rodyti failus, prasidedančius tarp a ir k
ls [a-k].avi

# rodyti failus, kurių vardai- iš vienos raidės
cat [a-zA-Z].*

# analogiškai skaičiams
cat [0-9].jpg

# nerodyti turinio failų, kurie prasideda a arba p arba k raidėmis.
more [!apk]*

Metasimboliai {}- vienas iš teksto variantų:
ls -l *.{avi|jpg}

Metasimbolis $ ir aplinkos kintamieji $ naudojamas apibrėžti kintamųjų reikšmes. Aplinkos kintamieji aprašo vartotojo katalogus, KI tipą ir t.t. Aplinkos kintamieji: $HOME Namų katalogas,
$PATH Sąrašas katalogų vykdomos komandos paieškai,
$MAIL Pašto dėžutės katalogas,
$USER Vartotojo identifikatorius,
$BASH komandų interpretatoriaus vardas.

Aplinkos kintamuosius galima pasižiūrėti set komandos pagalba, atskirus kintamuosius- echo $kintamasis. Tarkim

HOME1=/home/kolegija

# eis į /home/kolegija katalogą
cd $HOME1
.
# rodys katalogo /home/kolegija turinį.
ls {$HOME1}/jonas

|, ||, &&, &
Konvejeris (pipe, nukreipimas) | naudojamas, kai viena komanda turi naudotis kitos rezultatu.
Informacija apie failus, išrikiuota pagal 5 stulpelį, t.y. failo dydį (kartais sort komanda skaičiuoja ne nuo 1 o nuo 0 stulpelius, tada bus -k 4):
ls –l | sort -k 5 -n
Kiek atidaryta terminalų:
who | wc -l
Kiek vartotojas root atidaręs terminalų:
who | grep root | wc -l

Vartotojo power sukurti failai (power yra savininkas tų failų), išrikiuoti pagal failų dydį. Pavadinimu "power" failų nėra:
ls –l /tmp | grep -e "power" | sort -k 5 –n
Kiti pavyzdžiai:
help | tail

help | head

ls -la | wc -l

ls -l *.avi | wc -l

# Kodėl šis variantas tinkamesnis už esantį viršuje
ls -1 *.avi | wc -l

# Išrinkti failus, kurie sukurti kovą
ls -l /etc | grep " Mar "

# Išrinkti katalogus, kurie turi teises drwxr-xr-x
ls -l /etc | grep "drwxr-xr-x"

# Išrinkti failus ir katalogus, kurie sukurti kovą, išrikiuoti pagal dieną
ls -l | grep " Mar " | sort -k 7 -n

Metasimbolis || skirtas įvykdyti antrą komandą, jei neįvykdoma pirma. Jei failo neras, parodys pranešimą “nėra failo”:
rm fvardas || echo nėra failo
Metasimbolis && skirtas įvykdyti antrą komandą, jei įvykdoma pirma. Jei failas yra, ištrins failą ir parodys pranešimą “failas ištrintas”:
rm fvardas && echo failas ištrintas
Jeigu failas egzistuoja, spausdinti jį. Šitos komandos įrašomos į failą failas.txt ir paleidžiama sh failas.txt:
file="a.txt"

[ -f $file ] || exit 0

sleep 10

date > $file


6.1. Papildomai:
ls -1 | sort -r | tail

# atmest 200
ls -1 | sort -r | tail -n +200

ls -1 /etc | wc -l

6,2 Papildomai:
apt-get install net-tools

Skirtumai, konkretizuojam:
# Suvelta ir apie vartotoją ir apie servisą, ir konfiguracija

grep studentas /etc/*

grep studentas /etc/* > /root/studentas.log

grep studentas -R /etc/* > /root/studentas.log

# jau geriau
grep ssh-R /etc/* > /root/ssh.log

grep -v "#" /etc/ssh/ssh_config


# visi prisijungimai ir filtras (kiek atidarytu portu)
netstat -natp | grep LISTEN | wc -l

Metasimbolis & naudojamas paleisti procesą foniniu režimu: (sleep 1000)& Pirmu atveju terminalas užimamas, ir neleidžia vykdyti komandų, kol kodas nebus baigtas (užbaigti vykdymą [CTRL]+[C]), antru- procesas vyksta fone.
(sleep 1000 ; echo jonas)

(sleep 1000; echo jonas) &
Antru atveju kodas užbaigiamas ps -ef ir kill komandų pagalba:

Pavyzdys: paleisti kelis kartus, palaukt kol įvykdys, vis pasižiūrėti, kiek įrašė:
(sleep 10 ; echo test >> /root/test.log > ) &

Pavyzdys:
clamscan &
Previous article Next article Go to back
.
To top
Facebook
Share