SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
İSTANBUL ÜNİVERSİTESİ
SİBER GÜVENLİK TOPLULUĞU
BASH BETİK DİLİNİN TEMELLERİ
Hazırlayan :
Ramazan Furkan MATARACI
Monolitik Çekirdek
Yaygın kullanılan
shell dilleri
Bsh : sh olarak da geçer açılımı “Bourne Shell”
dir.GNU projesinin ilk dönemlerinde kullanılan shell
dilidir.Bugünlerde yerini büyük ölçüde bash'e
bırakmıştır.
Bash : bsh nin ardılı durumundadır.Bsh'nin üzerine
eklentiler yapılmış halidir.Açılımı “Bourne Again
Shell”dir
Csh : Syntax'ı C diline benzeyen bir shell'dir.Domine
dağıtımlar tarafından varsayılan olarak gelmediğinden
dolayı kullanıcı sayısı kısıtlıdır.Açılımı ise “C shell” dir.
Ksh : Bash ve Csh dillerini bir araya getiren ve
üzerinede yeni birkaç komut ve yordamları içeren shell
dilidir.Açılımı ise “Korn Shell” dir.
Zsh : Korn shell'in üzerine ekstra birkaç komut
barındıran bir shell dilidir.Açılımı ise “Z shell” dir.
İçsel(İnternal) Shell
Komutları
Bütün diller kendi içerisinde içsel komutlar bulundurur bunlar
dilden dile farklılık göstersede amaçları genellikle aynıdır.Bu
komutlar ile sisteme dair hayati temel işlemler
gerçekleştirilebilir.Bash içerisindeki internal komutlar ;
Cd : Bu komut sayesinde dizinler arasında geçişler
yapılabilir.Örnek cd /home/rfm komutu rfm kullanıcısına ait
home dizinine geçiş yapar.
Pwd : Şuanda komut satırının içerisinde bulunduğu dizini
terminale yazar.
Echo : Akabinde yazılacak olan komutları terminale
yazar.Örneğin echo “rfm” komutunun çıktısı terminale rfm
olacaktır.
Exec : Akabinde yazılacak olan komutu çalıştırıp terminali
kapatır.Örneğin exec firefox komutunu çalıştırırsanız terminal
kapanıp firefox web browser açılacaktır.
Time : Akabinde yazılcak olan komutun ne kadar sürede
çalıştığını ms cinsinden terminale yazar.
Set : İlerde bahsedilecek olan komut satırı parametrelerini
belirli kurallara göre önceden atayan komuttur.
Exit : Açık olan shelli kapatır.
External(Dışsal)
Shell Komutları
Kullanılan shell haricinde varsayılan olarak var
olmayan komutlara verilen genel isimdir.Bu komutlara
bir çok örnek verilebilir.İlk akla gelen komutlar : ls ,
cat , nano ,vi , vim , emacs , micro vb. Komutlardır.Bu
komutlar Linux dağıtımı kurulduğu esnada otamatik
olarak yüklenmiş olabilir.Herzaman yüklü olmak
zorunda değillerdir.Bu komutlar genellikle /bin dizini
içerisinde tutulurlar.Bu dizin dışında var olan
komutların komut satırı tarafından algılanabilmesi için
PATH çevre değişkeninde gösterilmesi
gerekmektedir.Bir linux dağıtımı olan debian'da bu
değişken varsayılan olarak :
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Yukarıdaki gibi belirlenmiştir ':' karakteri ile yeni komut
dizinlerini shell'in tanıması için bu değişkene
ekleyebilirsiniz.Bu gibi çevre değişkenlerine değerler
verirken dikkatli olunmazsa sistemsel bazı
bozukluklara sebep olunabilir.
Shell İçin Geçerli
Olan Bazı Tuş
Kısayolları
● Ctrl + C : Çalışmakta olan shell komutunu durdurur.
●
Ctrl + A : İmleci satır başına götürür
●
Ctrl + E : İmleci satır sonuna götürür.
●
Ctrl + L : Terminali temizler.
●
Ctrl + R : Önceden yazılmış olan komutlar için arama
yapılmasını sağlayan istemciyi açar.
●
Ctrl + D : Shelli kapatır.Exit komutuyla eşdeğerdir.
● Tab : Dosya adı,dizin adı veya komutadlarının yazılmayan
kısımlarını tamamlar.Örneğin , bas harflerini istemciye
yazıp tab tuşuna basılırsa otomatik olarak istemci , komutu
bash 'e tamamlar.
● Ctrl + Z : Çalışan bir programı durdurur 'fg' komutu ile
duran programı tekrardan geri getirmek mümkündür.
● !! : En son çalıştırılan komutu tekrardan çalıştırır
●
!!<komut> : En son çalışıtırılan komutun başına belirlenen
başka bir komutu ekler.
●
Ctrl + T : İmlecin üzerinde bulunduğu karakter ile bir
öncesindeki karakterin yerini değiştirir.
Man komutu
Man komutu ile bir komuta ait kullanım klavuzuna ulaşmak
mümkündür.Kullanım klavuzlarında ise komutun ne işe
yaradığı ile ilgili temel bilgiler ve eğer alıyorsa
parametrelerine ait bilgiler bulunur.man <komut adı>
şeklinde yazıldığında komuta ait kullanım klavuzunu
getirir.Komutlar dışında aşağıdki tabloda görülebilecek
öğelerinde kullanım klavuzuna man ile ulaşmak mümkün
olacaktır.Örneğin , “man passwd” komutu ile passwd
komutunun man sayfasına erişebilirken “man 5 passwd”
komutu ile passwd dosya uzantısına ait man sayfasına
erişirsiniz.Eğer aradığınız isimde bir man sayfası yoksa
hata ile karşılaşırsınız.
Metin akışları(Stream)
Terminal ortamında çalışan programlar metin
akışlarıyla çalışma durumlarını programı kullanan
kişiye aktarabilirler.Örneğin , ls komutu dizi ve dosyları
listeleyebilmesi için metin akışına ihtiyaç duyar.
Akış tipleri :
Standart Output : Bir program çalışmaya başladıktan
sonra o programın ürettiği çıktılara verilen isimdir.
Standart İnput : Kullanıcı klavyesinden ya da stdout
akışından gelen metni programa girdi olarak alabilen
akış türüdür.
Standart Error : Standart output'un bir türevi olup hata
çıktılarını içeren çıktılardır.Bir program çalışırken hata
mesajlarını dosyalara yazmak , diğer mesajları ise
terminalde tutmak istersek stderr çıktılarını
kullanabiliriz.
Girdi-Çıktı
Yönlendirmesi
Akışları birbirlerine yönlendirmek için bazı karakterler
kullanılır.Bunların kullanım şekilleri aşağıdaki gibidir.
Stdout > File : bir programın oluşturduğu stdout verisini yeni bir
dosya açarak o dosyaya kaydeder eğer dosya var ise üzerine yazar.
Stdout >> File : bir programın oluşturduğu stdout versini var olan bir
dosyaya kaydeder.Eğer dosya bulunmuyorsa yeni dosya oluşturur.
Stderr 2> File : ilk kullanımla aynı mantıktadır. Farklı olarak stdout
değilde stderr mesajlarını kullanır.
Stderr 2>> File : ikinci kullanımla aynı mantıktadır.Farklı olarak
stdout değilde stderr mesajlarını kullanır.
Stdout ve stderr &> : stdout ve stderr mesajlarını yeni bir dosyaya
yazar eğer dosya varsa üzerine yazar.
Stdin < File : dosya içeriğine stdin mesajı alan bir programa toplu
halde gönderir.
Stdin << File : dosya içeriğine stout mesajı alan bir programa satır
satır gönderir.
Stdin | stdout | stdin | stdout | …. : Pipe işlemi olarak adlandırılır.bir
programa ait stdout akışını akabinde gelen diğer programlara stdin
olarak gönderir.
Stdout | tee File : aynı anda output hem terminalde okunabilir hem
de bir dosyaya kaydedilebilir.
Komut içerisinde
komut çalıştırma
Bazı özel durumlarda komut içerisnde komut
çalıştırma ihtiyacı olabilir.Örneğin bir dizinde birden
fazla dosya bulunması durumunda bu dosyaların
hepsinin içeriğinin terminale yazılmasını isteyecek
olursak bu yöntemle kolay bir şekilde
gerçekleştirilebilir.
Bir komut içerisinde başka bir komutu çalıştırmak için
komutları aşağıdaki formda yazmak gerekir.
Komut `komut` buradaki özel karakter (`) kesme işareti
olan (') karakter ile karıştırılmamalıdır.
Değişkenler
Hemen her dilde olduğu gibi bash dilinde de değişkenler
bulunmakta.Temelde değişkenler programlar içerisinde belli
sayı veya başka tipteki veriyi tekrar tekrar yazmayı engeller ve
yazılan komutlar dizisinin daha anlamlı olmasını sağlarlar.bash
dilinde değişken tanımlaması aşağıdaki gibi yapılır.
rfm@debian:~/IUSiberSlaytlar$ x=rfm
Burada dikkat edilmesi gereken husus ise atama yaparken
aralarda boşluk olmamasıdır eğer bir metin ataması
yapılacaksa ya kaçış karakteri () kullanılarak boşluklar
belirtilmeli ya da içerisinde boşluk olan metinler (“ ”) işaretleri
arasına yazılmalıdır aksi halde komut yorumlayıcısı her bir
boşluktan sonrasını ya komut ya da parametre olarak
yorumlayacaktır.Bu da hatalara sebep olur.
Önceden tanımlı olan değişkenlerin değerlerine ulaşmak için
başlangıçlarına ($) işareti konulur.echo komutu sayesinde bir
değişkenin içeriğini terminale yazdırabiliriz.Örneğin ;
rfm@debian:~/IUSiberSlaytlar$ echo $x
12
Değişkenler üzerinde aritmetik işlemler yapmak
mümkündür aritmetik işlemler için let komutu
kullanılır.Örneğin ;
rfm@debian:~/IUSiberSlaytlar$ x=12
rfm@debian:~/IUSiberSlaytlar$ let x=$x+13
rfm@debian:~/IUSiberSlaytlar$ echo $x
25
rfm@debian:~/IUSiberSlaytlar$ x=12
rfm@debian:~/IUSiberSlaytlar$ let x=$x*2
rfm@debian:~/IUSiberSlaytlar$ echo $x
24
Çevre Değişkenleri
Shell içerisinde bazı işlemlerin yapılabilmesi için gerekli
olan ve kullanıcı tarafından üzerinde değişiklikler
yapılabilen değişkenler vardır bu değişkenlere çevre
değişkeni adı verilir.Örneğin java ile yazılan kodu
derlemek için jdk'ya ihtiyaç duyulur.jdk belirli bir dizin
içerisinde olmak zorunda değildir bundan dolayı
öntanımlı bir jdk dizini yoktur.Fakat komut satırının jdk'nin
bulunduğu dizini bilmesi gerekmektedir.Bu durumda
komut satırı bu adresi elde etmek için $JAVA_HOME
isimli çevre değişkenine bakacaktır.Bir başka örnek ise
terminal'in çalıştıracağı dışsal komutların bulunduğu
dizinler için verilebilir.Genellikle linux dağıtımlarında
çalıştırılabilir dosyalar /bin dizini içerisinde tutulur.Fakat
bu bir zorunluluk değildir eğer komut satırından doğrudan
erişmek istediğiniz programlar varsa bunların bulunduğu
dizinleri $PATH değişkenine aralarında ( : ) olmak üzere
eklerseniz bu programlara komut satırından rahatlıkla
erişebilirsiniz.Örneklerden de anlaşıldığı üzere çevre
değişkenleri büyük harflerle ifade edilirler bu yüzden
değişken ataması yaparken tümünü büyük harfle
yapmamak olası bir karışıklığın önüne geçilmesine
yardımcı olacaktır.
Düzenli
İfadeler(Regular
Expressions)
Düzenli ifadeler bir metnin içerisinde bir metin desenini
ifade etmek için kullanılır.Başka bir deyişle düzenli ifadeler
birden fazla ya da belli bir kurala uyan fakat önceden
belirlenemeyen bazı metinlerin yerine geçebilir.
Regex karakterleri
Köşeli parantezler : İçerisinde bulunan karakterlerden
herhangi biri yerine geçebilirler.Örnek ;
r[fse]m ifadesi rfm rsm rem ifadelerine karşılık gelecektir.
Tire karakteri : Belirli bir harf ya da rakam aralığını ifade
etmek için kullanılırlar.Örnek ;
r[a-c]m ifadesi ram rbm rcm ifadelerinin , 15[2-4]3 ifadesi
1523 1533 1543 ifadelerinin, [A-Z] A'dan Z'ye tüm harflerin
yerine [a-z] a'dan z'ye tüm harfler yerine geçecektir.
Nokta karakteri : Yerine yeni satır karakteri hariç herhangi
bir karakter gelebilir.Örnek ;
r.m ifadesi yerine rfm r2m r*m rFm … vb. Ifadeler karşılık
gelecektir.
( ^ ) ve ( $ ) karakterleri : (^) karakteri sonrasında gelen
metin ile başlayan tüm metinleri ifade etmek için
kullanılır. ( $ ) karakteri ise öncesinde gelen metin ile
biten metinleri ifade etmek için kullanılır.Örnek ;
^r ifadesi rfm rnm rrr rsm rqw rWx vb. metinler yerine
kullanılabilir.
r$ ifadesi ise awr wwr rrr qWr 1wr vb. metinler yerine
kullanılabilir.
( * ) ve ( ? ) karakterleri : ( * ) karakteri 0 veya 1'den fazla
herhangi bir karakter için kullanılır.( ? ) karakteri ise 0
veya 1 adet herhangi bir karakterin yerine geçmesi için
kullanılır.Örnek ; *Atatürk ifadesi MustafaKemalAtatürk
M.KemalAtatürk MustafaK.Atatürk ya da Atatürk
ifadelerinin yerine geçebilir.
??Mehmet ifadesi ise FSMehmet FMehmet SMehmet ya
da Mehmet ifadesi yerine geçebilir.
( | ) karakteri : iki farklı kuralı birleştirmek için
kullanılır.Örnek; (*Atatürk)|(??Mehmet) ifadesi bir önceki
açıklamadaki açılımların hepsinin yerine geçebilir
(  ) karakteri : kaçış karakteri olarak adlandırılır.Tırnak
işaretinin içerisinde tırnak işareti kullanma,kesme
işaretinin içerisinde kesme kullanma,komut satırında
boşluk kullanmak vb. Işlemler için tercih edilir.Aslında
kendinden sonra gelen karakterin eğer özel bir görevi
varsa o görevi yoksaymasını sağlar.Örnek ; ” - _ *

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim DökümanıLinux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
 
Pardus yazici islemleri_mseml
Pardus yazici islemleri_msemlPardus yazici islemleri_mseml
Pardus yazici islemleri_mseml
 
Linux101 - Standart Gi̇rdi-Çıktı
Linux101 - Standart Gi̇rdi-ÇıktıLinux101 - Standart Gi̇rdi-Çıktı
Linux101 - Standart Gi̇rdi-Çıktı
 
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu KurulumuLinux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
 
Temel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve KomutlarıTemel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve Komutları
 
Pwnlydays - Linux 101
Pwnlydays - Linux 101Pwnlydays - Linux 101
Pwnlydays - Linux 101
 
Development of Dynamic Engine and Graphical User Interface Software for Railw...
Development of Dynamic Engine and Graphical User Interface Software for Railw...Development of Dynamic Engine and Graphical User Interface Software for Railw...
Development of Dynamic Engine and Graphical User Interface Software for Railw...
 
Rust'a Giriş v1
Rust'a Giriş v1Rust'a Giriş v1
Rust'a Giriş v1
 
Linux 101
Linux 101Linux 101
Linux 101
 
Linux101
Linux101Linux101
Linux101
 
Unix Denetim Dokümanı
Unix Denetim DokümanıUnix Denetim Dokümanı
Unix Denetim Dokümanı
 
Pascal öGren
Pascal öGrenPascal öGren
Pascal öGren
 
Linux Kullanım Rehberi
Linux Kullanım RehberiLinux Kullanım Rehberi
Linux Kullanım Rehberi
 
delphi
delphidelphi
delphi
 
14
1414
14
 
delphi xe5
delphi xe5 delphi xe5
delphi xe5
 
Ubuntu Linux
Ubuntu LinuxUbuntu Linux
Ubuntu Linux
 
Nmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasiNmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasi
 
Linux komutlari
Linux komutlariLinux komutlari
Linux komutlari
 
Linux sunum
Linux sunumLinux sunum
Linux sunum
 

Similar a Introduction to BASH and Terminal

Csharpnedir
CsharpnedirCsharpnedir
Csharpnedirbykezza
 
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARISNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARIMehmetEminDOAN1
 
ARM Mimarisinde Exploit Geliştirme
ARM Mimarisinde Exploit GeliştirmeARM Mimarisinde Exploit Geliştirme
ARM Mimarisinde Exploit GeliştirmeSignalSEC Ltd.
 
Açık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeAçık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeSerkan Kaba
 
Linux İşletim Sistemi - Güncelleme-2018
Linux İşletim Sistemi - Güncelleme-2018Linux İşletim Sistemi - Güncelleme-2018
Linux İşletim Sistemi - Güncelleme-2018Murat KARA
 
Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1Uğurkan Ateş
 
Unixlinux (1)
Unixlinux (1)Unixlinux (1)
Unixlinux (1)sagsaglim
 
Temel Düzeyde MySQL ve PHP Eğitimleri 1
Temel Düzeyde MySQL ve PHP Eğitimleri 1Temel Düzeyde MySQL ve PHP Eğitimleri 1
Temel Düzeyde MySQL ve PHP Eğitimleri 1Univerist
 
Mehmetözcan 20102846
Mehmetözcan 20102846Mehmetözcan 20102846
Mehmetözcan 20102846Mehmet Özcan
 

Similar a Introduction to BASH and Terminal (18)

Kabuk / bash proglama
Kabuk / bash  proglamaKabuk / bash  proglama
Kabuk / bash proglama
 
Csharpnedir
CsharpnedirCsharpnedir
Csharpnedir
 
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARISNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
SNİFFİNG VE SERVİS DIŞI BIRAKMA SALDIRILARI
 
Php1
Php1Php1
Php1
 
Sunu (1)
Sunu (1)Sunu (1)
Sunu (1)
 
ARM Mimarisinde Exploit Geliştirme
ARM Mimarisinde Exploit GeliştirmeARM Mimarisinde Exploit Geliştirme
ARM Mimarisinde Exploit Geliştirme
 
Linux Sistem Yönetimi
Linux Sistem YönetimiLinux Sistem Yönetimi
Linux Sistem Yönetimi
 
Puppet ile Linux Sistem Yönetimi Otomasyonu
Puppet ile Linux Sistem Yönetimi OtomasyonuPuppet ile Linux Sistem Yönetimi Otomasyonu
Puppet ile Linux Sistem Yönetimi Otomasyonu
 
Açık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeAçık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım Geliştirme
 
Linux İşletim Sistemi - Güncelleme-2018
Linux İşletim Sistemi - Güncelleme-2018Linux İşletim Sistemi - Güncelleme-2018
Linux İşletim Sistemi - Güncelleme-2018
 
Phyton Programlama Dili
Phyton Programlama DiliPhyton Programlama Dili
Phyton Programlama Dili
 
Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1
 
Unixlinux (1)
Unixlinux (1)Unixlinux (1)
Unixlinux (1)
 
Temel Düzeyde MySQL ve PHP Eğitimleri 1
Temel Düzeyde MySQL ve PHP Eğitimleri 1Temel Düzeyde MySQL ve PHP Eğitimleri 1
Temel Düzeyde MySQL ve PHP Eğitimleri 1
 
pc bilgisayar
pc bilgisayarpc bilgisayar
pc bilgisayar
 
Mehmetözcan 20102846
Mehmetözcan 20102846Mehmetözcan 20102846
Mehmetözcan 20102846
 
PHP Temelleri
PHP TemelleriPHP Temelleri
PHP Temelleri
 
C dosya-isleme
C dosya-islemeC dosya-isleme
C dosya-isleme
 

Introduction to BASH and Terminal

  • 1. İSTANBUL ÜNİVERSİTESİ SİBER GÜVENLİK TOPLULUĞU BASH BETİK DİLİNİN TEMELLERİ Hazırlayan : Ramazan Furkan MATARACI
  • 3. Yaygın kullanılan shell dilleri Bsh : sh olarak da geçer açılımı “Bourne Shell” dir.GNU projesinin ilk dönemlerinde kullanılan shell dilidir.Bugünlerde yerini büyük ölçüde bash'e bırakmıştır. Bash : bsh nin ardılı durumundadır.Bsh'nin üzerine eklentiler yapılmış halidir.Açılımı “Bourne Again Shell”dir Csh : Syntax'ı C diline benzeyen bir shell'dir.Domine dağıtımlar tarafından varsayılan olarak gelmediğinden dolayı kullanıcı sayısı kısıtlıdır.Açılımı ise “C shell” dir. Ksh : Bash ve Csh dillerini bir araya getiren ve üzerinede yeni birkaç komut ve yordamları içeren shell dilidir.Açılımı ise “Korn Shell” dir. Zsh : Korn shell'in üzerine ekstra birkaç komut barındıran bir shell dilidir.Açılımı ise “Z shell” dir.
  • 4. İçsel(İnternal) Shell Komutları Bütün diller kendi içerisinde içsel komutlar bulundurur bunlar dilden dile farklılık göstersede amaçları genellikle aynıdır.Bu komutlar ile sisteme dair hayati temel işlemler gerçekleştirilebilir.Bash içerisindeki internal komutlar ; Cd : Bu komut sayesinde dizinler arasında geçişler yapılabilir.Örnek cd /home/rfm komutu rfm kullanıcısına ait home dizinine geçiş yapar. Pwd : Şuanda komut satırının içerisinde bulunduğu dizini terminale yazar. Echo : Akabinde yazılacak olan komutları terminale yazar.Örneğin echo “rfm” komutunun çıktısı terminale rfm olacaktır. Exec : Akabinde yazılacak olan komutu çalıştırıp terminali kapatır.Örneğin exec firefox komutunu çalıştırırsanız terminal kapanıp firefox web browser açılacaktır. Time : Akabinde yazılcak olan komutun ne kadar sürede çalıştığını ms cinsinden terminale yazar. Set : İlerde bahsedilecek olan komut satırı parametrelerini belirli kurallara göre önceden atayan komuttur. Exit : Açık olan shelli kapatır.
  • 5. External(Dışsal) Shell Komutları Kullanılan shell haricinde varsayılan olarak var olmayan komutlara verilen genel isimdir.Bu komutlara bir çok örnek verilebilir.İlk akla gelen komutlar : ls , cat , nano ,vi , vim , emacs , micro vb. Komutlardır.Bu komutlar Linux dağıtımı kurulduğu esnada otamatik olarak yüklenmiş olabilir.Herzaman yüklü olmak zorunda değillerdir.Bu komutlar genellikle /bin dizini içerisinde tutulurlar.Bu dizin dışında var olan komutların komut satırı tarafından algılanabilmesi için PATH çevre değişkeninde gösterilmesi gerekmektedir.Bir linux dağıtımı olan debian'da bu değişken varsayılan olarak : /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games Yukarıdaki gibi belirlenmiştir ':' karakteri ile yeni komut dizinlerini shell'in tanıması için bu değişkene ekleyebilirsiniz.Bu gibi çevre değişkenlerine değerler verirken dikkatli olunmazsa sistemsel bazı bozukluklara sebep olunabilir.
  • 6. Shell İçin Geçerli Olan Bazı Tuş Kısayolları ● Ctrl + C : Çalışmakta olan shell komutunu durdurur. ● Ctrl + A : İmleci satır başına götürür ● Ctrl + E : İmleci satır sonuna götürür. ● Ctrl + L : Terminali temizler. ● Ctrl + R : Önceden yazılmış olan komutlar için arama yapılmasını sağlayan istemciyi açar. ● Ctrl + D : Shelli kapatır.Exit komutuyla eşdeğerdir. ● Tab : Dosya adı,dizin adı veya komutadlarının yazılmayan kısımlarını tamamlar.Örneğin , bas harflerini istemciye yazıp tab tuşuna basılırsa otomatik olarak istemci , komutu bash 'e tamamlar. ● Ctrl + Z : Çalışan bir programı durdurur 'fg' komutu ile duran programı tekrardan geri getirmek mümkündür. ● !! : En son çalıştırılan komutu tekrardan çalıştırır ● !!<komut> : En son çalışıtırılan komutun başına belirlenen başka bir komutu ekler. ● Ctrl + T : İmlecin üzerinde bulunduğu karakter ile bir öncesindeki karakterin yerini değiştirir.
  • 7. Man komutu Man komutu ile bir komuta ait kullanım klavuzuna ulaşmak mümkündür.Kullanım klavuzlarında ise komutun ne işe yaradığı ile ilgili temel bilgiler ve eğer alıyorsa parametrelerine ait bilgiler bulunur.man <komut adı> şeklinde yazıldığında komuta ait kullanım klavuzunu getirir.Komutlar dışında aşağıdki tabloda görülebilecek öğelerinde kullanım klavuzuna man ile ulaşmak mümkün olacaktır.Örneğin , “man passwd” komutu ile passwd komutunun man sayfasına erişebilirken “man 5 passwd” komutu ile passwd dosya uzantısına ait man sayfasına erişirsiniz.Eğer aradığınız isimde bir man sayfası yoksa hata ile karşılaşırsınız.
  • 8. Metin akışları(Stream) Terminal ortamında çalışan programlar metin akışlarıyla çalışma durumlarını programı kullanan kişiye aktarabilirler.Örneğin , ls komutu dizi ve dosyları listeleyebilmesi için metin akışına ihtiyaç duyar. Akış tipleri : Standart Output : Bir program çalışmaya başladıktan sonra o programın ürettiği çıktılara verilen isimdir. Standart İnput : Kullanıcı klavyesinden ya da stdout akışından gelen metni programa girdi olarak alabilen akış türüdür. Standart Error : Standart output'un bir türevi olup hata çıktılarını içeren çıktılardır.Bir program çalışırken hata mesajlarını dosyalara yazmak , diğer mesajları ise terminalde tutmak istersek stderr çıktılarını kullanabiliriz.
  • 9. Girdi-Çıktı Yönlendirmesi Akışları birbirlerine yönlendirmek için bazı karakterler kullanılır.Bunların kullanım şekilleri aşağıdaki gibidir. Stdout > File : bir programın oluşturduğu stdout verisini yeni bir dosya açarak o dosyaya kaydeder eğer dosya var ise üzerine yazar. Stdout >> File : bir programın oluşturduğu stdout versini var olan bir dosyaya kaydeder.Eğer dosya bulunmuyorsa yeni dosya oluşturur. Stderr 2> File : ilk kullanımla aynı mantıktadır. Farklı olarak stdout değilde stderr mesajlarını kullanır. Stderr 2>> File : ikinci kullanımla aynı mantıktadır.Farklı olarak stdout değilde stderr mesajlarını kullanır. Stdout ve stderr &> : stdout ve stderr mesajlarını yeni bir dosyaya yazar eğer dosya varsa üzerine yazar. Stdin < File : dosya içeriğine stdin mesajı alan bir programa toplu halde gönderir. Stdin << File : dosya içeriğine stout mesajı alan bir programa satır satır gönderir. Stdin | stdout | stdin | stdout | …. : Pipe işlemi olarak adlandırılır.bir programa ait stdout akışını akabinde gelen diğer programlara stdin olarak gönderir. Stdout | tee File : aynı anda output hem terminalde okunabilir hem de bir dosyaya kaydedilebilir.
  • 10. Komut içerisinde komut çalıştırma Bazı özel durumlarda komut içerisnde komut çalıştırma ihtiyacı olabilir.Örneğin bir dizinde birden fazla dosya bulunması durumunda bu dosyaların hepsinin içeriğinin terminale yazılmasını isteyecek olursak bu yöntemle kolay bir şekilde gerçekleştirilebilir. Bir komut içerisinde başka bir komutu çalıştırmak için komutları aşağıdaki formda yazmak gerekir. Komut `komut` buradaki özel karakter (`) kesme işareti olan (') karakter ile karıştırılmamalıdır.
  • 11. Değişkenler Hemen her dilde olduğu gibi bash dilinde de değişkenler bulunmakta.Temelde değişkenler programlar içerisinde belli sayı veya başka tipteki veriyi tekrar tekrar yazmayı engeller ve yazılan komutlar dizisinin daha anlamlı olmasını sağlarlar.bash dilinde değişken tanımlaması aşağıdaki gibi yapılır. rfm@debian:~/IUSiberSlaytlar$ x=rfm Burada dikkat edilmesi gereken husus ise atama yaparken aralarda boşluk olmamasıdır eğer bir metin ataması yapılacaksa ya kaçış karakteri () kullanılarak boşluklar belirtilmeli ya da içerisinde boşluk olan metinler (“ ”) işaretleri arasına yazılmalıdır aksi halde komut yorumlayıcısı her bir boşluktan sonrasını ya komut ya da parametre olarak yorumlayacaktır.Bu da hatalara sebep olur. Önceden tanımlı olan değişkenlerin değerlerine ulaşmak için başlangıçlarına ($) işareti konulur.echo komutu sayesinde bir değişkenin içeriğini terminale yazdırabiliriz.Örneğin ; rfm@debian:~/IUSiberSlaytlar$ echo $x 12
  • 12. Değişkenler üzerinde aritmetik işlemler yapmak mümkündür aritmetik işlemler için let komutu kullanılır.Örneğin ; rfm@debian:~/IUSiberSlaytlar$ x=12 rfm@debian:~/IUSiberSlaytlar$ let x=$x+13 rfm@debian:~/IUSiberSlaytlar$ echo $x 25 rfm@debian:~/IUSiberSlaytlar$ x=12 rfm@debian:~/IUSiberSlaytlar$ let x=$x*2 rfm@debian:~/IUSiberSlaytlar$ echo $x 24
  • 13. Çevre Değişkenleri Shell içerisinde bazı işlemlerin yapılabilmesi için gerekli olan ve kullanıcı tarafından üzerinde değişiklikler yapılabilen değişkenler vardır bu değişkenlere çevre değişkeni adı verilir.Örneğin java ile yazılan kodu derlemek için jdk'ya ihtiyaç duyulur.jdk belirli bir dizin içerisinde olmak zorunda değildir bundan dolayı öntanımlı bir jdk dizini yoktur.Fakat komut satırının jdk'nin bulunduğu dizini bilmesi gerekmektedir.Bu durumda komut satırı bu adresi elde etmek için $JAVA_HOME isimli çevre değişkenine bakacaktır.Bir başka örnek ise terminal'in çalıştıracağı dışsal komutların bulunduğu dizinler için verilebilir.Genellikle linux dağıtımlarında çalıştırılabilir dosyalar /bin dizini içerisinde tutulur.Fakat bu bir zorunluluk değildir eğer komut satırından doğrudan erişmek istediğiniz programlar varsa bunların bulunduğu dizinleri $PATH değişkenine aralarında ( : ) olmak üzere eklerseniz bu programlara komut satırından rahatlıkla erişebilirsiniz.Örneklerden de anlaşıldığı üzere çevre değişkenleri büyük harflerle ifade edilirler bu yüzden değişken ataması yaparken tümünü büyük harfle yapmamak olası bir karışıklığın önüne geçilmesine yardımcı olacaktır.
  • 14. Düzenli İfadeler(Regular Expressions) Düzenli ifadeler bir metnin içerisinde bir metin desenini ifade etmek için kullanılır.Başka bir deyişle düzenli ifadeler birden fazla ya da belli bir kurala uyan fakat önceden belirlenemeyen bazı metinlerin yerine geçebilir. Regex karakterleri Köşeli parantezler : İçerisinde bulunan karakterlerden herhangi biri yerine geçebilirler.Örnek ; r[fse]m ifadesi rfm rsm rem ifadelerine karşılık gelecektir. Tire karakteri : Belirli bir harf ya da rakam aralığını ifade etmek için kullanılırlar.Örnek ; r[a-c]m ifadesi ram rbm rcm ifadelerinin , 15[2-4]3 ifadesi 1523 1533 1543 ifadelerinin, [A-Z] A'dan Z'ye tüm harflerin yerine [a-z] a'dan z'ye tüm harfler yerine geçecektir. Nokta karakteri : Yerine yeni satır karakteri hariç herhangi bir karakter gelebilir.Örnek ; r.m ifadesi yerine rfm r2m r*m rFm … vb. Ifadeler karşılık gelecektir.
  • 15. ( ^ ) ve ( $ ) karakterleri : (^) karakteri sonrasında gelen metin ile başlayan tüm metinleri ifade etmek için kullanılır. ( $ ) karakteri ise öncesinde gelen metin ile biten metinleri ifade etmek için kullanılır.Örnek ; ^r ifadesi rfm rnm rrr rsm rqw rWx vb. metinler yerine kullanılabilir. r$ ifadesi ise awr wwr rrr qWr 1wr vb. metinler yerine kullanılabilir. ( * ) ve ( ? ) karakterleri : ( * ) karakteri 0 veya 1'den fazla herhangi bir karakter için kullanılır.( ? ) karakteri ise 0 veya 1 adet herhangi bir karakterin yerine geçmesi için kullanılır.Örnek ; *Atatürk ifadesi MustafaKemalAtatürk M.KemalAtatürk MustafaK.Atatürk ya da Atatürk ifadelerinin yerine geçebilir. ??Mehmet ifadesi ise FSMehmet FMehmet SMehmet ya da Mehmet ifadesi yerine geçebilir. ( | ) karakteri : iki farklı kuralı birleştirmek için kullanılır.Örnek; (*Atatürk)|(??Mehmet) ifadesi bir önceki açıklamadaki açılımların hepsinin yerine geçebilir ( ) karakteri : kaçış karakteri olarak adlandırılır.Tırnak işaretinin içerisinde tırnak işareti kullanma,kesme işaretinin içerisinde kesme kullanma,komut satırında boşluk kullanmak vb. Işlemler için tercih edilir.Aslında kendinden sonra gelen karakterin eğer özel bir görevi varsa o görevi yoksaymasını sağlar.Örnek ; ” - _ *