Linux
işletim sistemi kullanacaksınız öğrenmeniz gereken ilk kavram
Linux terminali(konsol) ve Linux komut satırı
kavramlarıdır.
Yapılan
her işlem aslında arka planda komutların yorumlanıp çalıştırılması ile
olmaktadır.Linux sistemlerde bu işi komut satırı dediğimiz ve bir
kabul(shell) programını temel alarak çalışan yapı sayesinde
gerçekleştiriyoruz.
Linux
terminali(konsol/uçbirim), sistemde yapmak istediğimiz işler için bize
çok esnek ve kullanışlı bir yapı sunuyor.Shell(kabuk) programının
yetenekleri ölçüsünde bu esnek yapının performansı tatmin edici oluyor.
Shell(Kabuk)
Görevi
kernel ile kullanıcı arasında yer alarak,kullanıcıdan gelen komutları
yorumlayıp kernel'e iletmektir.Birçok shell programı kullanılmaktadır.
- Sistemimizde kullanılan kabuk programını öğrenmek için echo $SHELL komutunu kullanırız.
root@dilek# echo $SHELL
/bin/bash
Çevre Değişkenleri
Bir
komutu çalıştırmak için sırası ile bazı dizinlere bakmam gerekir.Eğer
verilen komutun çalıştırılabilir dosyası bu dizinlerin altındaysa
çalıştırırım.
$echo PATH → Yani yola(PATH) ekliyse çalıştırırım yoksa çalıştıramam.
Herhangi bir anda çalıştırma ortamınız için çevre(ortam) değişkenlerini görmek için printenv ya da env komutunu kullanabiliriz.
Örneğin
bir programın konsoldan verdiğimiz bir komutla direk çalışmasını
istiyoruz diyelim.Yani programın olduğu dizin altına gidip çalıştırmak
yerine yola(PATH) ekleyip, programla ilgili komutu kullandığımızda direk
çalışmasını istiyoruz.Bunun için programımızın olduğu dizini yola
eklememiz gerekir.
Mesela program /usr/local/prog dizinde ise:
PATH=$PATH:/usr/local/prog komutunu yazarak yola eklemiş oluruz.
Ortam değikenlerinden yaptığımız değişikliklerin kalıcı olmasını istiyorsak .bashrc dosyasına eklememiz gerekir.Çünkü sistem açılırken bu dosyayı okuyarak dosyada yer alan değerlere göre açılacaktır.
/bin/bash (kabuğun kendisi)
/etc/profile (kabuğun genel profik ayarlarının bulunduğu dosya)
Bash kabuğunun birçok özelliği vardır.Bunlardan biri de kabuktan çıkmak için kullanılan CTRL + D tuş takımıdır.
set -o ignoreeof komutu ile CTRL + D ile kabuktan çıkılmasını engeller.
set +o ignoreeof komutu ile geri eski haline getirebiliriz.
Yada .bashrc dosyasının alt satırına export IGNOREEOF=2 yazıp kayıt ederek bu ayarı kalıcı hale getirebilirz.
Birde noclobber
komutundan bahsedeceğim. Bu komut ile, bir komutun çıktısı bir dosyaya
gönderildiğinde, dosyanın eski içeriği aynı kalır.Bu tanım sayesinde
yanlışlıkla bir dosyanın üzerine başka bilgilerin yazılması önlenebilir.
Yardım Alma Komutları
$help <komut>
$<komut> --help
$man <komut> → Kılavuz sayfasıdır (manual pages)
$whatis <komut> → Bir uygulama yada komutla ilgili yardımın hangi kılavuz sayfalarında olduğunu öğrenebiliriz.
$apropos <x> → x ifadesinin geçtiği uygulamaları bize listeler.Aslında aynı işlemi yapan $man -k <x> komutunu arka planda çalıştırır.
Eğer aradığımız yardımı man sayfalarında bulamıyorsak, man dizin belleğini güncellemeliyiz: root@dilek # mandb
Bilgi Alma Komutları
root@dilek# lsb_release -a→ Kullandığımız Linux dağıtımının adını öğrenmek için kullanılır veya cat /etc/*release komutu kullanılır.
cat /etc/issue → Kullandığımız Linux'un adını görmek için kullanılır.
uname → Kernel adını öğrenmek için kullanılır.
uname -n veya hostname → Hostname'i öğrenmek için kullanılır.
uname -m → Çekirdek mimarisi
uname -r → Çekirdek sürümü
uname -a → Bu bilgilerin hepsini birlikte gösterir.
w → hangi kullanıcının o anda hangi uygulamayı/komutu çalıştırdığı bilgisi
whoami → Kullanıcın hangi kimlikte çalıştığını gösteririr.
who →Sistemde hangi kimlikle çalışıldığı
who -b → sistemin en son ne zaman açıldığı bilgisi
who -r → açılış seviyesini(runlevel) gösterir.
uptime → sistemin ne kadar zamandır açık olduğunu gösterir.
whereis → Bir dosya ile ilgili çalıştırılabilir dosyanın, kaynak ve yardım dosyalarının konumunu öğrenmek için kullanılır.
whereis -b <komut> → Sadece çalıştırılabilir dosyanın yerinin gösterir.
whereis -m <komut> → Sadece man sayfalarının yerini gösterir.
whereis -s <komut> → Varsa kaynak kodunun konum bilgisini verir.
which <komut> → Verilen bir komutun tam yol bilgisini öğrenmek için kullanılır.
locate <komut> → Aradığımız dosyanın nerede olduğunu yani hangi dizin yada dizinlerde olduğunu gösterir.
dmidecode -t <donanım> → Sistemin donanım bileşenleri ve BIOS ile ilgili bilgiyi görmek için kullanılır.
<donanım>→system,baseboard,chassis,processor,memory,cache,connector,slot
bilgilerini öğrenebiliriz.
Eğer CPU bilgisini görmek isterseniz $dmidecode –t 4 komutunu kullanmalısınız.
DMI(Desktop Management Interface)->0...39 ile diğer bileşenler hakkında bilgi edinebiliriz.
proc → CPU ve RAM hakkında ayrıntılı bilgi edinmek için, sanal dosya sistemi olan proc kullanılır.
CPU için ; cat /proc/cpuinfo
Hafıza için; cat /proc/meminfo
fdisk -l → Sistemimizdeki disk bölümlerini görebiliriz.
df → Disk kullanımı ile ilgili ayrıntılı bilgiyi gösterir.Daha düzgün bir çıktı(MB,GB türünde) için df -h komutu kullanılır.
df -T → Dosya sistemi bilgisi ile birlikte liste almak için kullanılır.
du
→ Bir dizinin altında bulunan alt dizin,dosya yada klasörlerin diskte
kapladıkları alanın boyutunu öğrenmek için kullanırız.Çeşitli
parametreler alarak kullanılabilir.
free → Kullanılan bellek miktarını gösterir. -m parametresiyle daha düzenli görünecektir.
hdparm <disk> → Harddisk ile ilgili bilgi almak için kullanılır.
hdparm -Tt <disk> → Disk performansı ile ilgili bilgi almak için kullanılır.
ÖNEMLİ !! Hdparm komutunu bazı parametrelerle kullanılım tehlikeli olabilir, bu nedenle kullanırken dikkat edilmelidir.
modinfo → Linux kernel modülleriyle ilgili bilgileri listeler.
lsmod → Modül listesini görmek için kullanılır.
stat <dizin/dosya>→ Dosya yada dizin durumu hakkında bilgi almak için kullanılır. -f parametresi ile de kullanılabilir
vmstat → Sistemin genel durumunu görmek için kullanılır.
history → Linux sisteminde kullanılan komutlar hafızada tutulur.Bu yüzden daha önce kullandığımız komutlara bu komut ile bakabiliriz.
.bash_history dosyasına, komut satırında kullanılan komutlar kayıt edilir.Yani history komutu bu dosyayı referans alarak çıktı verecektir.
Listenen komutların yanında sayılar olacaktır. Başına !125 yazarak 125. satırdaki komutun tekrardan çalıştırmış oluruz.
Eğer son kullanmak istediğimiz komutu tekrar kullanmak istersek, !! komutunu kullanabiliriz.
CTRL + R → Bu tuş kombinasyonu reverse search yapmamızı sağlar.Konsol açıkken bu tuşlara bastığımızda ekranda (reverse-i-search)”: ifadesi
çıkar. Yani buraya yazdığımız karakterler başlayan komutun son kullanma
şekli ekranda görünür ve o komutu istersek yeniden kullanabilir.
Dizinler/Klasörler Arasında Gezme ve İçeriğini Listeleme
Linux
dünyasında her şey bir dizin altında alt dizin/dosya görünümünde yer
alır.Bütün dizinler hiyerarşik şekilde kök dizine(root dizin)
bağlıdır.Root dizin
/ (slash) ile ifade edilir.
pwd → Hangi dizinde çalıştığımızı görmek için kullanılır.
cd → (Change directory) Bu komut dizinler arasında geçiş yapmamızı sağlar.
Herhangi bir dizindeyken ana dizine dönmek için yine cd komutu kullanılabilir.
./ → bulunduğumuz dizin
../ → bir üst dizin
cd - → Çalıştığımız iki dizin arasında geçiş yapmamızı sağlar.
Pushd ve popd → İki ayrı klasör/dizin açıp, bu dizinler arasında istediğimiz gibi geçiş yapmamıza yarar.
Pushd ile devamlı dizinler arasında geçiş yapılabiliyorken,popd ile sadece diğer dizinlere tek tek bir kere geçiş yapılıp o dizinde çalışılabiliyor.
dirs – v → Açık olan dizinleri listelemek için kullanılır.
ls → Dizinler arasında bulunan alt dizin,klasör ve dosyaları listelemek için kullanılır.
ls -l → Daha ayrıntılı çıktı alırız.(Erişim izinleri , kullanıcı adı,tarih ve dosya isimleri...)
ls -la → Gizli dosyaları görmek istersek bu komutu kullanırız.(gizli klasörler “.” ile başlar.)
ls -R → Dizin içeriğini recursive olarak listelemek için kullanılır.
ls -1 → Ekran çıktısının liste şeklinde olması için kulanılır.
ls 'nin birlikte kullanıldığı daha birçok parametre vardır.Bunları öğrenmek için ls --help veya man ls komutları ile kılavuz sayfalarından bilgi edinebiliriz.
EK BİLGİ ! Web tarayıcmızdan da dizinler arasında geçiş yapabilir,dosyaları
listeleyebiliriz. Örneğin root dizin için browser'ımıza /(slash) ifadesini yazıp enter'ladığımızda içeriği göreceğizdir.
man:ls yada man:echo yazarakta kılavuz sayfalarına browserdan erişmek mümkündür.
Dosya İşlemleri
touch <dosyaismi> → Metin dosyası oluşturmamızı sağlar.Bu komut aynı zamanda var olan dosyanın tarih etiketini güncellemek için de kullanılır.
cat → Dosya içeriğinin konsoldan okunmasını sağlar.Aynı zamanda oluşturulan dosyanın içine yazı yazılmasınıda sağlar. Şu şekilde $cat > <dosyaismi> yazdığımızda istediğimiz ifadeleri yazarak CRTL+D diyerek yazımızı sonlandırarak, dosyanın içeriğine istediklerimizin yazılmasını sağlarız.
Yukarıdaki ekran görüntüsünde kısaca “>” ve “>>” kullanımını anlatamaya çalıştım. :)
cat -n /etc/passwd
→ Bu komut satırları numaralandırarak dosya içeriğini gösterecektir. Bu
komut yerine nl komutunuda kullanarak satırları numaralı olarak
görebiliriz.
more → Bu komut da metin dosyalarını
terminalden okumaya yarar.Ama daha çok komut çıktısının uzun olduğu
durumlarda çıktıyı daha rahat okuyabilmemiz için kullanılır. “Enter”
tuşuna her bastığımızda satır satır ilerler, “space” tuşuda sayfa sayfa
ilerler.Bir önceki sayfaya dönmek için “b” tuşu kullanılır.Çıkmak
istediğimizde “q” tuşu kullanılır.
less → Yine dosya içeriğini
okumak için kullanılır.More gibi ekran çıktısı uzun olan dosyaları daha
kolay okumak için kullanırız. Yukarı ve aşağı ok tuşlarını kullanarak
sayfada ilerleyebiliriz.”space” tuşu bir sonraki sayfaya,”b” bir önceki
sayfaya geçmeyi sağlar.Çıkmak için “q” tuşu kullanılır.
head → Dosya içeriğini görüntülerken baştan görüntülememizi sağlar.Default değeri ilk on satırdır.
head -n /etc/passwd → İlk on satırı gösterir.
head -n 5 /etc/passwd → İlk beş satırı gösterir.
tail → Dosya içeriğini görüntülerken sondan görüntülememizi sağlar.Default değeri ilk on satırdır.
tail -n /etc/passwd → Son on satırı gösterir.
tail -n 5 /etc/passwd →Son beş satırı gösterir.
tac → Bir metin dosyasının içeriğini sondan başa doğru yazmak için kullanılır.
rev → Her satır ters çevrilerek ekrana yazılır. İlginç bir komuttur. :)
sort → Alfabetik olarak metin dosyasını terminale yazar.
sort -r şeklinde olursa ters alfabetik olarak gösterir.
wc → Bir dosyanın içindeki satır,kelime, karakter sayılarını gösterir.
wc -l → satır sayısını
wc -w → kelime sayısını
wc -c → karakter sayısını
pr → Belge içeriğini sayfalara bölmek için kullanılır.
paste <dosya1> <dosya2> → İki veya daha fazla dosyada bulunan karşılıklı satırları aralarına tab boşluğu koyarak yan yana listelemeyi sağlar.
grep → Dosyalar içerisinde yada bir komut çıktısı içinde bir ifade aramak için kullanılır.
-i : Büyük/Küçük harf ayırımı yapmaz.
-v : Aranılan kelimeyi içermeyen satırları gösterir.
-r : Verilen dizinin alt dizinlerinde de arama yapar.
-n : Aranılan kelimenin satır sayısını da gösterir.
Bu parametrelerle yetinmeyip daha fazlasını öğrenmek isteyenler için man grep kılavuz sayfası aydınlatıcı olacaktır. :)
cut → İncelemek istediğimiz dosyada bazı satırların belirli bazı alanlarını görmek için kullanılır.
cut -d: -f 2,4 /etc/passwd → /etc/passwd dosyasındaki satırların 2. ve 4. alanlarını listeler.
-d → Alanların ayrıldığı yerler
-f → Kaçıncı alanları görmek istedğimiz
cmp <dosya1> <dosya2>→ Dosyalar arasında karşılaştırma yapmak için kullanılır.
diff <dosya1> <dosya2>→ İki dosya arasında karşılaştırılma yapılacaksa kullanılır.
diff3 <dosya1> <dosya2> <dosya3>→ Üç dosya arasında karşılaştırma yapılacaksa kullanılır.
find → Nerede olduğunu hatırlayamadığımız dosyaları yada dizinleri bulmak için kullanırız.
find [dosya_yolu] -name [aranacak_ifade]
İşimizi kolaylaştıran bazı parametreler:
type -f → Dosyalar
type -d → Dizinler
ctime x→ x gün önce değişikliğe uğramış dosyaları
find [dosya_yolu] [parametre] -name [aranacak_ifade]
xargs
→ Find komutu ile kullanabileceğimiz bir araçtır.Kendisine girdi olarak
verilen verileri tek tek kendisinden sonraki programa argüman olarak
verir.
find /etc -name “*.conf” | xargs ls -l
ls *.txt | xargs ls -l → Çalışma dizinindeki txt ile biten dosyaları bul ve ayrıntılı listele demiş olduk.
Dosya Taşıma-Kopyalama-Silme
cp → Kopyalamak için kullanılan komuttur.
cp <kaynak> <hedef> → Kaynak dosya, hedef dosyaya kopyalanacaktır.
mv → Dosya taşımak için kullanılır.
mv <kaynak> <hedef> şeklindedir. Kaynak dosyayı hedef dosyanın altına taşır.
mv <kaynak> <hedef> /<yenisim> Taşıdığımız dosyayı bu şekilde farklı bir isimlede kayıt edebiliriz.
rm → Dosya veya dizin silmek için kullanılır.
Dizin Oluşturma
mkdir <dizinadı>→ Dizin oluşturmak için kullanılır.
mkdir -p <dizin1><dizin2> → Bir dizini, alt dizinleriyle beraber oluşturmak için kullanılır.
mkdir -m 700 <dizin> → İzinleri 700(rwx------) olan bir dizin oluşturmuş olduk.
rm → Dizinleri silmek için kullanılır.
rm -r → Bir dizini,alt dizin ve dosyalarıyla beraber silmek için.
rm -rf → Ne var ne yoksa sorgusuz silmek için.
rm -ri → Silerken bize sorsun istiyorsak.
Dosya Sıkıştırma-Açma-Arşivleme
Linux
sistemlerde istediğimiz dosyayı yada dosya grubunu arşiv dosyası
olarak yedekleyebilir,saklayabilir,daha sonra gerektiğinde tekrar
yükleyebiliriz.
Arşivleme işlemini sıkıştırarakta yapabiliriz.
tar → Arşiv dosyası oluşturmak için kullanılır.
c → create demiş oluruz.
f → oluşturulan arşiv dosyasının adını belirleriz.
x → extract v → verbose
Sıkıştırma için iki temel araç vardır
gzip ve
bzip2.
Sıkıştırma işleminde gzip kullanılırsa uzantısı
gz,
bzip2 kullanılırsa
bz2 olacaktır.Dosyaları açarken ise
gunzip ve
bunzip araçları kullanılır.
Sıkıştırma
ve açma işlemlerinden bahsettiğimize göre artık sıkıştırarak arşivleme
ve arşivi açma komutlarını öğrenebiliriz. Sıkıştırılmış arşiv dosyası
oluştururken gzip kullanılmışsa dosyanın uzantısı
tgz ya da
tar.gz olur, eğer
bzip2 kullanılmışsa
tar.bz2 olur.
gzip →
czvf parametreleri sıkıştırılırken; açarken
xzvf,
bzip2 → cjvf parametreleri sıkıştırılırken
; açarken
xjvf kullanılır.
Açarken
c yerine
x kullanılır.
Linux sistemlerde
.rar ve
.zip uzantılı dosyaların nasıl açılacağına bir bakalım.
rar dosyaları açabilmek için
unrar aracını kullanırız.
zip dosyaları içinde
unzip aracını kullanabiliriz.
zip komutu ile sıkıştırma işlemi de yapabiliriz.
Şimdiden kolay gelsin. :)