Skip to content

Latest commit

 

History

History
145 lines (112 loc) · 4.2 KB

Gün04-23-07-18.md

File metadata and controls

145 lines (112 loc) · 4.2 KB

Standart Girdi ve Çıktı

Her UNIX programının üç standartı vardır:

  • Standart Girdi -> stdin
  • Std. Çıktı -> stdout
  • Std. Hata -> stderr

Kanal numaraları:

  • Standart girdi kanalı nu: 0
  • Standart çıktı kanalı nu: 1
  • Standart hata kanalı nu: 2

Çıktıyı farklı yerlere yönlendirebiliriz:

$ program 1> dosya -> dosyaya yazarlar
$ program > dosya
$ program 1>> dosya -> dosyanın "devamına" yazılır
$ program >> dosya

$ program 1> dosya 2>&1

program < dosya
Örnek: mail kullanici@alanadi.com < dosya

$ | - pipe

program1 | program2
program1 2> hatalar1 | program2
program1 2> hatalar1 | program2 2> hatalar

$ tee ve $ grep

cat /etc/passwd | grep [-v] <regex>
cat /etc/passwd | sort | tee siralikullanicilar.txt | grep user

$ tee girdiyi alır ve bir dosyaya kaydeder, ardından çıktı olarak diğer komuta veya stdout'a gönderir.

$ wc

Dosya içinde satır, kelime, bayt saymak için bir tool.

UNIX'te büyük küçük harf farkı vardır.

Bash'in özellikleri

  • CTRL + a -> satır başına gider
  • CTRL + e -> satır sonuna gider
  • CTRL + u -> imleçten önceki silinir
  • CTRL + k -> imleçten sonrası silinir
  • CTRL + l -> ekranı temizler
  • CTRL + r -> geriye doğru arama yapar

$ alias, $ unalias

$ alias saatkac="date"
$ saatkac
Pzt Tem 23 12:04:24 +03 2018
$ unalias saatkac
$ saatkac
saatkac: komut bulunamadı

Arka planda işlem başlatma, başlamış işlemi arka plana alma

Bir işlemi başlattıktan sonra arka plana almak için CTRL+Z yaparız. Arka plana aldığımız işlem ilk önce durur. Onu arka planda devam ettirmek için $ bg yazarız. Eğer bu işlemi başlatırken çıktıyı dosyaya belirtmediysek (örneğin komutun sonuna $ komut > dosya gibi bir ifade belirtmediysek) işlem stdout kısmını kullanmaya devam edecektir. Yani arka planda çalışıyor olsa bile komut satırımıza çıktıları düşmeye devam edecektir.

Arka plana alınmış işlemi $ fg ile ön plana alabiliriz. Ardından onu tekrar arka plana atmak istersek CTRL+Z işimizi görecektir. Anlık olarak arka plandaki işlerle ilgili bilgi almak istersek $ jobs komutunu kullanabiliriz. Çıktısı şuna benzer olacaktır:

$ jobs
[1]  + suspended  ./program1
[2]  - running    ./program2

Dipnot: kill

Süreçler sinyallerle yönetilir ve CTRL+Z veya CTRL+C aksiyonları aslında UNIX için proseslere sinyal gönderilmesi demektir. Sinyaller şu şekilde yönetilir:

$ kill --SIGHUP süreçnumarası

Örneğin şu gibi sinyaller bulunmaktadır:

  • SIGHUP
  • SIGKILL
  • SIGTERM
  • SIGSTOP
  • SIGCONT

prompt

Komut istemi "PS1" çevre değişkenine tanımlıdır. Şu gibi örneklerle tanımlıdır:

  • "\u" - kullanıcı adı
  • "\h" - bilgisayarın adı
  • "\W" - çalışma dizini
  • "\w" - kökten itibaren çalışma dizni
  • "\j" - kabuk tarafından yönetilen görev sayısı
  • ...

Bash yapılandırma dosyaları

  • ~/.bashrc ve ~/.bash_profile, kabuk başlarken çalışacak komutları tanımlar.
  • ~/.bash_logout kabuk sonlanırken çalışacak komutları tanımlar.
  • ~/.bash_history kabuk geçmişini tutar.

Metin İşleme

UNIX içerisinde oldukça kullanışlı metin işleme komutları vardır.

$ head -[n] dosyaadı

ilk n satırı basar.

$ tail -[n] dosyaadı

son n satırı basar.

$ cut

Bir satırı parçalar.

$ uniq

Tekrarlayan bilgileri tek satıra düşürmeye yarar.

$ tr

"Bir" karakterin yerine "bir" başka karakter koymak için kullanılır.

$ tr "[A-Z]" "[a-z]" < dosya

$ split

Split dosyaları istenilen büyüklüklerde bölümlere ayırır.

$ paste

İki dosyayı satır satır veya sütun sütun birleştirmek için kullanılır.

$ join

Paste gibi iki dosyayı birleştirmekle birlikte biraz daha ileri bir komut olan join, iki dosyadaki sütunları eşleştirerek birleştirir.

$ diff

İki dosya arasındaki farklılıkları gösteren bir araçtırç

$ md5sum

Dosyanın md5 imzasını gösterir.

$ nl

Dosyayı satır numaralarıyla gösterir.

$ expand --tabs=sayı dosya

Dosyalardaki tab karakterlerini boşluklarla değiştirmektedir.

$ unexpand --tabs=sayı dosya

Dosyalardaki boşluk karakterlerini tablarla değiştirmektedir.