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
program1 | program2
program1 2> hatalar1 | program2
program1 2> hatalar1 | program2 2> hatalar
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.
Dosya içinde satır, kelime, bayt saymak için bir tool.
UNIX'te büyük küçük harf farkı vardır.
- 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 saatkac="date"
$ saatkac
Pzt Tem 23 12:04:24 +03 2018
$ unalias saatkac
$ saatkac
saatkac: komut bulunamadı
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
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
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ı
- ...
- ~/.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.
UNIX içerisinde oldukça kullanışlı metin işleme komutları vardır.
ilk n satırı basar.
son n satırı basar.
Bir satırı parçalar.
Tekrarlayan bilgileri tek satıra düşürmeye yarar.
"Bir" karakterin yerine "bir" başka karakter koymak için kullanılır.
$ tr "[A-Z]" "[a-z]" < dosya
Split dosyaları istenilen büyüklüklerde bölümlere ayırır.
İki dosyayı satır satır veya sütun sütun birleştirmek için kullanılır.
Paste gibi iki dosyayı birleştirmekle birlikte biraz daha ileri bir komut olan join, iki dosyadaki sütunları eşleştirerek birleştirir.
İki dosya arasındaki farklılıkları gösteren bir araçtırç
Dosyanın md5 imzasını gösterir.
Dosyayı satır numaralarıyla gösterir.
Dosyalardaki tab karakterlerini boşluklarla değiştirmektedir.
Dosyalardaki boşluk karakterlerini tablarla değiştirmektedir.