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ıyla olmaktadır. Linux sistemlerde bu işi komut satırı dediğimiz ve bir kabuk(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 bakmak gerekir. Eğer verilen komutun çalıştırılabilir dosyası bu dizinlerin altındaysa çalıştırabiliriz.
$echo PATH → Yani yola(PATH) ekliyse çalıştırırız 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 direkt çalışmasını istiyoruz diyelim. Yani programın olduğu dizin altına gidip çalıştırmak yerine yol(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ğişkenlerinde 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 profil 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 → Yukarıdaki 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 çalıştırılabilir dosyanın, kaynak ve yardımcı dosyalarının konumunu öğrenmek için kullanılır.
whereis -b <komut> → Sadece çalıştırılabilir dosyanın yerini 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 parametrelerle de kullanılabilir.
free → Kullanılan bellek miktarını gösterir. -m parametresiyle daha okunabilir bir halde 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 komutları bu komut ile sıralayabiliriz.
.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 ile başlayan komutun son kullanma şekli ekranda görünür ve o komutu istersek yeniden kullanabiliriz.
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.
cd <dizin_adi>→ (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.
pwd → Hangi dizinde çalıştığımızı görmek için kullanılır.
./ → 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 yardım sayfalarından bilgi edinebiliriz.
EK BİLGİ ! Web tarayıcımızdan da dizinler arasında geçiş yapabiliriz, 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 yardım sayfalarına browserdan erişmek mümkündür.
Dosya İşlemleri
touch <dosya_adi> → 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 > <dosya_adi> 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(Varsayılan) değeri ilk 10 satırdır.
head -n /etc/passwd → İlk 10 satırı gösterir.
head -n 5 /etc/passwd → İlk 5 satırı gösterir.
tail → Dosya içeriğini görüntülerken sondan görüntülememizi sağlar. Default(Varsayılan) değeri ilk 10 satırdır.
tail -n /etc/passwd → Son 10 satırı gösterir.
tail -n 5 /etc/passwd →Son 5 satırı gösterir.
Yukarıdaki resimde gösterdiğim komutlara bakalım:
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 çevirilerek 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 yardım sayfası aydınlatıcı olacaktır. 🙂
cut → İncelemek istediğimiz dosyada bazı satırların, belirli yerlerini 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> → Kaynak dosyayı hedef dosyanın altına taşır.
mv <kaynak> <hedef> /<yenisim> → Taşıdığımız dosyayı bu şekilde farklı bir isimle de 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ı ya da 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.
Umarım faydalı bir yazı olmuştur. Şimdiden kolay gelsin. 📌
çok güzel bir içerik olmuş pocket'a attım ihtiyaç olunca kullanacağım.
Teşekkür ederim ^_^ Şimdiden kolay gelsin 🙂