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 -als -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 &