Linux Unix

Linux Essentials Sertifikasyon Sınavına Hazırlık – Modül 3

Merhaba arkadaşlar, bir önceki makalemizde komut satırının gücünü incelemiştik. Linux Essentials kursumuzu bu modül ile yarılamış olacağız. Uygulayarak yapmamız çok önemli. Aksi halde kısa süre içinde bu bilgiler unutulacaktır. Şimdi işleyeceğimiz konulara bakıp, adım adım başlayalım.
Modül 2 için bakınız: https://www.cozumpark.com/linux-essentials-sertifikasyon-sinavina-hazirlik-modul-2

Modül 3 konuları;
1. Dosyaları ve Dizinleri Yönetme
2. Arşivleme ve Sıkıştırma
3. Dosyalar ile çalışma

DOSYALARI ve DİZİNLERİ YÖNETME

Bir Linux İşletim Sisteminde çalışırken, dosyaları ve dizinleri nasıl değiştireceğinizi bilmek önemlidir. Bazı Linux dağıtımları, dosyaları yönetmenize izin veren GUI tabanlı uygulamalara kullanmaktadır. Bu işlemlerin komut satırı aracılığıyla nasıl gerçekleştirileceğini bilmek daha avantajlıdır.

Unix’ten taşınan bir özellik olan Linux’taki her şeyin büyük / küçük harfe duyarlı olduğunu tekrar hatırlatmakta fayda var. Bu, kabuğun küçük harfli bir karakteri büyük harf karakterinden tamamen farklı olarak tanıdığı anlamına gelir . Dosyaları işlerken, büyük harf kullanımına dikkat edin.

Glob karakterlerinden bir önce ki modülümüzde bahsetmiştik. Şimdi daha detaylı inceleyeceğiz. Joker karakter olarakta adlandırılan, kabuk için özel anlama gelen sembol karakterleridir.
Bu karakterler sayesinde tek dosyayı değiştirmek yerine, bir çok dosyayı etkileyen komutları kolayca çalıştırabiliriz. Örnek vermek gerekirse, belli bir uzantıya veya belirli bir dosya adı uzunluğuna sahip tüm dosyaları değiştirmek mümkündür. Glob karakterler herhangi bir komut ile kullanılabilir.

Yıldız * Karakteri

Yıldız işareti, bir dosya anındaki herhangi bir karakteri sıfır veya daha fazlasını temsil etmek için kullanılır. Yani her şeyi bulur.
echo /etc/*

Örnekleyerek daha iyi anlayalım. Mesela /etc dizinindeki m harfi ile başlayan tüm dosyaları görüntüleyelim.
echo /etc/m*

Gayet kullanışlı ve basit gördüğünüz gibi. Başka bir örnekte ise h ile başlayan ve .conf ile biten dosyalara nasıl bakabiliriz. Onu görelim. Ek olarak her konuları örnekleri değiştirerek 4-5 defa uygulayınız.
echo /etc/h*.conf

Soru ? Karakteri

Soru karakteri herhangi bir tek karakteri temsil eder. Her soru işareti karakteri tam olarak bir karakterle eşleşir. Yani herhangi bir dizin arama yaparken kaç tane ? soru işareti koyarsak herhangi bir karakterin yerini alır. Hemen örnekleyelim.
echo /etc/m????? (m ile başlayan karakterden sonra 5 karakter olan tüm dosyaları görüntüle)
Aklınızda şu geçebilir ne işime yarayacak. En basit aradığını bir dosya vardır ama tam hatırlayamıyorsunuz. ? işareti bulmanıza yardımcı olacaktır 🙂

Glob karakterler ile daha karmaşık desenler bulmak için birlikte kullanılabilirler. Mesela bir dizin içinde yalnız 10 karakter olan tüm dosyaları bulalım.
echo /etc/*??????????

Yada bir uzantı aramak isteyebilirsiniz. Bu örnekte ise yine aynı dizinde olan üç harfli tüm uzantıları bulalım.
echo /etc/*.??? Şimdi daha iyi anlaşıldığını düşünüyorum.

Köşeli Parantez [] Karakterleri

Köşeli ayraç karakterleri, olası eşleşen karakter olan bir dizi karakterleri temsil ederek tek bir karakteri eşleştirmek için kullanılır. Örneğin [yu]* kalıbı ile y ve u ile başlayan tüm dosyaları bulur.
echo /etc[yu]*

Köşeli parantez, bir dizi karakteri temsil etmek içinde kullanılabilir. Örneğin, /etc [a-k] yani a ve k arasındaki herhangi harf ile başlayan tüm dosyaları eşlemiş olur.
echo /etc/[a-k]*

Son olarak en az bir rakam içeren herhangi bir dosyaya bakalım.
echo /etc/*[0-9]*

Ünlem ! Karakteri

Ünlem karakteri bir aralığı olumsuzlaştırmak için köşe parantezler ile birlikte kullanılır. Örneğin [!a-k]* tüm dosyalar ile eşleşir, a,b,c ….. k aralığındaki harflere kadar başlayan dosyaları vermez. Ama l,m ….. y,z aralığındaki tüm dosyaları eşlemiş olur. Aşağıdaki görselde l ve sonraki harfler ile başlayan tüm dosyaları eşlediğini görebilirsiniz.

Dosyaları Kopyalama

cp komutu dosyaları kopyalamak için kullanılır. Bir kaynak ve hedef vermeniz gerekmektedir.
cp [kaynak] [hedef]

Komutu uyguladıktan sonra herhangi bir çıktı vermeyecektir. Aşağıdaki örnekte etc/hosts dosyası kaynak ~ ise hedeftir. (~ tilde sembolünün ev dizini olduğunu unutmayalım.) Örnekte hosts dosyasını alıp ev dizinime yapıştırdım. Listediğimiz zaman kopyalandığını görebiliyoruz.
cp /etc/hosts ~

Biraz daha ayrıntıya indiğimiz zaman komut sonrası bir çıktı almak için -v seçeneğini kullanarak ayrıntılı olarak görebiliriz. Yeni dosyaya farklı bir isim vermek için, hedef kısmından sonra yeni bir isim veriyorum.

Verilerin üzerine yazmaktan kaçınmalıyız. Eğer hedef dosya zaten varsa mevcut verilerin üzerine yazacaktır. Hemen örnekler ile bakalım. hosts dosyasının içerisini bir şey yazalım. Şuan için bir çıktı kullanıp içine bir şeyler yazacağım. İlerleyen zamanda girdi ve çıktılara daha detaylı olarak değineceğim.
cat hosts

echo mehmet> hosts

Kopyalama işlemini tekrar yapıyorum.
cp /etc/hosts ~
Görseldeki gibi herhangi bir soru sormadan üstüne yazdı. Bu tür durumlardan kaçınmak için dosya kopyalarken yeni bir isim belirtebilirsiniz. Örnek cp /etc/hosts ~/hosts.copy

Yanlışlıkla üzerine yazmaya karşı koruma sağlamak için diğer bir yöntem ise -i seçeneğidir. Komut bir dosyanın üzerine yazmadan kullanıcıya sorar.
cp -i /etc/hosts ~

Yukarıdaki görseldeki gibi üzerine yazılsın mı? gibi bir seçenek gördüğünüz zaman aynı dosyadan olduğunu unutmayın. Böyle bir durumda y (üzerine yaz) ve n (üzerine yazma) harflerini kullanarak üzerine yazmasının kararını verebilirsiniz.

Dizinleri Kopyalama

Varsayılan olarak cp komutu dizinleri kopyalayamaz ve bunu yapmaya çalıştığımızda hata çıktısı üretecektir.
cp /etc/ ~

Dizinleri kopyalamamız için -r seçeneğini kullanmamız gerekmektedir.
cp -r /etc/ ~

Yukarıdaki görsel yetkili bir kullanıcıya sahip olmadığımız için bazı dosyaları kopyalarken hata çıktıları gözükmektedir. Normalde yetkimiz olan bir dizini kopyalasaydık herhangi bir çıktı vermeyecektir. Detaylı çıktı almak için -v seçeneğini kullanmamız gerekmektedir.
cp -rv /etc/ ~

NOT: Bu seçenek tüm dizin yapısı kopyalanacak ve bu da çok sayıda dosya ve dizinin kopyalanmasına neden olacaktır.

Dosyaları Taşıma

Dosyaları taşımak için mv komutu kullanıyoruz. Kopyalama komutuna çok benzemektedir.
command [kaynak] [hedef]
mv /etc/hosts ~

Bir dosya taşındığında, dosya orijinal konumundan kaldırılır ve yeni bir konuma yerleştirilir. Linux’ta dosya taşımak biraz zor olabilir çünkü belirli izinlere sahip olması gerekmektedir. Doğru izinler olmadan Permission Denied hata çıktısı üretir. İlerleye kısımlarda daha detaylı ele alacağız.

Ek seçeneklerden bir kaçına bakacak olursak

i Bir dosyanın üzerine yazılıp yazılmayacağını sorur.
-n Bir hedef dosyanın içeriğinin üzerine yazmaz.
-v Ekrana yapılan işlemin çıktısını yazdırır.

NOT: Dizinler taşınacağı zaman -r seçeneği kullanmamıza gerek yoktur.

Dosya Oluşturma

Dosya oluşturmanın birkaç tane yolu vardır. Konuları geldikçe değineceğim. Boş bir dosya oluşturmak için touch komutu kullanın.
touch dosya

Yeni dosyanın boyutunun  0 bayt olduğuna dikkat edin. touch komutu yeni dosyaya herhangi bir veri yazmaz.

Birden fazla dosya oluşturmak için, touch komutundan sonra birer boşluk bırakarak oluşturabilirsiniz.
touch dosya1 ahmet mehmet

Diğer bir seçenek ise çengelli parantez kullanarak birden fazla aynı isimde dosyalar oluşturabilirsiniz.
touch deneme{1..5}

Arkadaşlar dizin ve dosya oluşturma, kopyalama, silme gibi yaptığımız örnekleri GUI ortamında kontrol etmeyi unutmayınız.

NOT: Yukarıdaki birden fazla dosya oluşturma örneklerini klasörler içinde yapabilirsiniz.

Dosya İsimleri Değiştirme

mv komutu sadece taşıma görevini üstlenmez. Aynı zamanda dosya isimlerini de değiştirebilir.
mv [dosya] [yeni-dosya-ismi]

Yukarıdaki görselde, dosya isimli dosyanın ismi debian olarak değiştirilmiştir.

Dosya Kaldırma

Bir dosyayı silmek için rm komutunu kullanıyoruz. Biraz önce ismini değiştirdiğimiz dosyayı silelim.
rm debian

Bir, glob karakterleri kullanarak birden çok dosyayı silerken sorunlara neden olabilir. Bu dosyalar sorgusuz sualsiz silindiğin için, silinmesini istemediğimiz dosyaları kaybedebiliriz. İlk olarak bir kaç tane dosya oluşturalım.
touch kali.txt pardus.txt ubuntu.txt fedora.txt

rm *.txt komutunu çalıştırdığım zaman sonu .txt olan her şeyi silecektir. Glob karakterleri dikkatli kullanmamız gerekmektedir.

Çengelli parantez kullanarak tekrar bir kaç tane dosya oluşturuyorum.
touch muzik{1..6}

Aşağıdaki görselde mu ile başlayan tüm dosyaları silmesini sağladık. Ek olarak birden çok dosyayı silerken önlem amaçlı -i seçeneğini kullanmalıyız. Her dosyada silme işlemi yapmadan önce n (silme) y (sil) tuşlara basarak işlemlerinizi gerçekleştirebilirsiniz. n = no y = yes

NOT: Dosyaların soru sorulmadan silindiğini unutmayın. Dosyalar kalıcı olarak silinir. Bir dosyanın silinmesini geri almak için bir komut yoktur ve silinen dosyaları kurtaracak çöp kutusu yoktur. Eğer kritik bir dizin içinde silme işlemi yapıyorsanız veya ne yaptığınızdan emin değilseniz, bir önlem olarak, birden çok dosyayı silerken -i seçeneğini  kullanmalısınız.

Dizin Oluşturma

Bir dosya oluşturmak için mkdir komutu kullanın.
mkdir proxmox

Dizin Kaldırma

rm komutu kullanarak dizinleri silebiliriz. Ama varsayılan olarak seçenek olmadan dizinleri silmemektedir. İlk önce 2 tane dizin oluşturuyorum.
mkdir suse solaris

suse dizinimin içi boş olacak ve solaris dizinimin içinde dosya olacak şekilde yapılandırıyorum.
touch solaris/slackware.txt

rmdir komutu ile içi boş olan dizini silmeye çalışıyorum ve herhangi bir hata ile karşılaşmıyorum.

rmdir komutu ile içinde dosya olan dizini silmeye çalıştığımda silmediğini görüyorum.

Bu durumda -r seçeneğini kullanarak içi dolu dizinleri silebiliyoruz.
rm -r solaris

Yine bu kısımda bir kaç ek seçenekten bahsetmekte fayda var.

-r Alt dizin ve dosyaların silinmesini sağlar.
-v Yapılan işlemlerin çıktısını verir.
-i Silmeden önce onay ister.
-f Herhangi bir onay istemez ve zorla siler.

Son bir örnek ile toparlayalım. etc dizini ev dizinime kopyalıyorum.
cp -r /etc ~
Sonra etc dizini silmeye çalışıyorum. Herhangi bir seçenek belirtmediğim halde kritik bir dizin olduğu için benden onay istiyor.
rm -r etc

Yüzlerce dosya olduğunu varsayalım tek tek onay almak gerçekten gereksiz bir iş yükü olacaktır. Diğer bir senaryoda ise farklı dosya veya dizini silerken de hatalar ile karşılaşabilirsiniz. Bu gibi durumlarda emin olursanız -f seçeneğini kullanmalısınız.

NOT: Bir kullanıcı bir dizini sildiğinde, tüm dosyalar ve alt dizinler herhangi bir etkileşimli soru olmadan silinir.  Eğer kritik bir dizin içinde silme işlemi yapıyorsanız veya ne yaptığınızdan emin değilseniz, bir önlem olarak, birden çok dizin silerken -i seçeneğini  kullanmalısınız.

ARŞİVLEME ve SIKIŞTIRMA

En çok karıştırılan konulardan bir tanesi ile karşı karşıyayız 🙂 Arşivle ve Sıkıştırma aynı değildir. İlk önce ne olduklarına inceleyelim ve uygulamalara geçelim.
Arşivleme : Birden çok dosyayı tek bir dosyada birleştirir, bu da tek tek dosyalardaki ek yükü ortadan kaldırır ve dosyaların iletilmesini kolaylaştırır.
Sıkıştırma : Gereksiz bilgileri kaldırarak dosyaları küçültür.
Dosyalar tek tek sıkıştırılabilir veya birden çok dosya tek bir arşivde birleştirilebilir ve ardından sıkıştırılabilir.

Linux yöneticilerinin dosyaları arşivlemek ve sıkıştırmak için gerekli araçlara aşina olması çok önemlidir. Peki bize ne gibi faydaları vardır?

  • Sıkıştırılmış bir arşivin indirilmesi, dosyaları tek tek indirmekten daha kolaydır.
  • Günlük dosyalarının diskleri doldurma alışkanlığı vardır, bu nedenle onları tarihe göre bölmek ve eski sürümleri sıkıştırmak yararlıdır.
  • Dizinleri yedeklerken, hepsini tek bir arşivde tutmak, her dosyanın sürümüne göre daha kolaydır.
  • Bir dosyayı ağ üzerinden göndermeden önce sıkıştırmak, daha hızlı olabilir.

DOSYALARI SIKIŞTIRMA

Sıkıştırma , bir dosyayı saklamak veya iletmek için gereken veri miktarını azaltırken, dosyayı geri yüklenebilecek şekilde saklar. Dosyanın sıkıştırılmış sürümü tipik olarak görüntülenmez veya kullanılmaz, bunun yerine kullanılmadan önce açılır.

Sıkıştırma algoritması orijinal dosyayı kodlamak için bilgisayar kullanan bir prosedürdür. Bilgisayar bilimcileri bu algoritmaları araştırır ve daha hızlı çalışabilen veya girdi dosyasını küçültebilen daha iyi algoritmalar bulur.

Sıkıştırma hakkında konuşurken iki tür vardır:

  • Kayıpsız : Dosyadan hiçbir bilgi kaldırılmaz. Bir dosyayı sıkıştırmak ve onu açmak, orijinaliyle aynıdır.
  • Kayıplı : Bilgiler dosyadan kaldırılabilir. Orjinalinden biraz farklı bir dosya ile sonuçlanacaktır. Örneğin, iki farklı aynı renge sahip bir görüntü, bu iki tonu aynı şekilde ele alarak daha küçük hale getirilebilir. Çoğu zaman, göz yine de bu farkı anlayamaz.

Belgeler, yazılımlar gibi bozulmadan kalması istediğimiz zamanlarda kayıpsız sıkıştırmaya ihtiyacımız vardır. GIF, PNG ve JPEG gibi çoğu görüntü biçimi, bir tür kayıplı sıkıştırma uygulanabilir. Genel olarak ne kadar kaliteyi korumak istediğinize karar verebilirsiniz. Daha düşük kalite, daha küçük bir dosya boyutları ile sonuçlanır, ancak sıkıştırmayı açtıktan sonra, pürüzlü kenarlar veya renk değişimleri gibi kusurlar fark edebilirsiniz. Yüksek kalite, orijinal görüntüye çok benzeyecek, ancak dosya boyutu da orijinaline daha yakın olacağını unutmamakta fayda var. Sıkıştırılmış bir dosyayı tekrar sıkıştırmak onu küçültmez.

GZİP

Linux üzerinde dosyaları sıkıştırmak için kullanılan çeşitli araçlar vardır. En yaygın kullanılan gzip aracıdır. Verilen dosyayı Lempel Ziv (LZ77) kodlamasını kullanarak sıkıştırır ve dosya boyutunu küçültür. Sıkıştırılan dosyanın uzantısı otomatik olarak . gz yapılır. Öntanımlı olarak orjinal dosya ismini ve dosya değiştirilme zamanını muhafaza eder.

İlk olarak cp komutu ile sıkıştırabileceğimiz bir dosyayı home dizinimize kopyalayalım.
cp /etc/hosts ~
gzip hosts
Aşağıdaki görselde işlemler tamamlandıktan sonra, orjinal dosya kaybolur ve yerine dosya uzantısı .gz ile sıkıştırılmış bir dosya oluşur. Dosya boyutlarını karşılaştırdığımız zaman yüksek oranda bir sıkıştırma olduğunu gözle görebiliyoruz.

 Sıkıştırılmış dosyaları gunzip komutunu kullanarak orjinal haline geri yükleyebiliriz.
gunzip hosts.gz

BZİP2

bzip2 Burrows Wheeler metin sıkıştırma algoritmasını kullanan bir sıkıştırma komutudur. Bu algoritma daha küçük dosya sıkıştırabilir. Kullanımı gzip ile aynıdır. Dosya uzantısı bz2 şeklinde oluşur.

 Sıkıştırılmış dosyaları bunzip2 komutunu kullanarak orjinal haline geri yükleyebiliriz.
bunzip2 hosts.bz2

DOSYALARI ARŞİVLEME

Dosyalarınızın her birini ayrı ayrı sıkıştırmayı seçebilirsiniz ve toplamda sıkıştırılmamış dosyalar gönderdiğinizden daha az miktarda veriye sahip olursunuz, ancak yine de birçok dosyayla aynı anda uğraşmanız gerekir. Arşivleme , bu sorunun çözümüdür. Dosyaları arşivlemek için kullanılan geleneksel UNIX yardımcı programı tar, Tape Archive’ın kısa bir biçimi olan adlandırılır . Yedekleme veya dosya aktarımı için birçok dosyayı bir anda aktarmak için kullanıldı. tar komutu birkaç dosyaları alır ve iletim diğer ucunda orijinal dosyalar halinde tekrar bölünebilir tek çıkış dosyası oluşturur.

tar komutunda sık kullanılan üç mod vardır.

  • Oluştur: Bir dizi dosyadan yeni bir arşiv oluşturur.
  • Ayıkla: Bir arşivden bir veya daha fazla dosyayı çıkarır.
  • Liste: Arşivin içeriğini çıkarmadan gösterir.

Bir komut satırına birden çok dosya adı girebileceğiniz için arşivin adını nerede belirteceğinizi unutmayın.

Tar
•c : create
•v : verbose
•z : gzip
•j : bzip
•x : extract
•f : file

Öncelikle tar komutu ile arşiv oluşturmamız için 2 adet opsiyon kullanmamız gerekir. Bunlar -c (oluşturma) ve -f (arşiv dosyası ve arşiv dosyası adı) dir.
tar -cf [yeni arşiv adı veya çıkarılacak arşiv adı] [arşivlenecek dosyalar]

Örnek olarak 10 tane dosya oluşturalım.
touch resim{1..10}

Glob karakter kullanarak resim ile başlayan tüm dosyaları dahil edelim.

tar -cf arsiv.tar resim*

-z (gzip ) komutu kullanarak bir arşivi sıkıştırın.
tar -zcf arsiv.tar.gz

Şimdi de dosyaları aynı anda arşivleyip sıkıştıralım.
tar -zcf arsiv2.tar.gz resim*

Glob karakter kullanarak a ile başlayan dosyaları silelim.
rm a*

-j (bzip2 ) komutu kullanarak dosyaları arşivleyip sıkıştıralım. Bu sefer -v opsiyon ile daha ayrıntılı görmek istiyorum.
tar -jcvf arsiv.tar.bz2 resim*

Peki çıkarma işlemi yapmadan önce içine bakmak isteseydik? Hemen bakalım.

-t seçeneği ile dosyamızı çıkarmadan içine bakabiliriz.
tar -tf arsiv.tar.bz2

Eğer çıkarma işlemini başka bir dizine yapmak isterseniz oluşturduğumuz arşivi oraya taşımanız gerekmektedir. Bu sefer Pictures dizinine çıkarmak istiyorum. İlk olarak taşıma işlemini gerçekleştiriyorum.

Pictures dizinine geçip -x ile de son olarak arşivlenmiş ve sıkıştırılmış dosyamızı çıkaralım.
tar -xvf arsiv.tar.bz2

Aklınıza neden arşivleme ve sıkıştırma uzantılarını biz kendimiz yazıyoruz diye bir soru gelebilir. O yüzden birde uzantı yazmadan inceleyelim. Aşağıdaki görseldeki gibi boyut olarak bir şey değişmedi.

Peki uzantısız olanı çıkarabilecek miyiz? Birde buna bakalım. Öncelikle resim dosyalarının hepsini siliyorum.
rm r* ve çıkarma işlemini gerçekleştiriyorum. Görselde görüldüğü üzere çıkarma işlemi başarılı. Buradan sonuç olarak dosya uzantılarına göre anlamamızın kolay olması için böyle yapmamız doğru olandır. Sonuçta sistemi ilerleyen zamanlarda başkaları yönetebilir.

Ek olarak -f arşiv dosyasının ismi olacağı için opsiyon kısmında en sona yazılmalıdır. Aksi halde hata alacaksınız.

Arşiv içinden istediğimiz belirli dosyaları çıkarmaya bakalım.
tar -xf uzantili.tar.gz resim1 resim3 resim7

ZIP Dosyaları

Microsoft’taki arşivleme yardımcı programı ZIP dosyasıdır. Aşağıdaki görseller Windows10 İşletim Sistemi üzerinden alınmıştır.


Linux’ta ZIP yaygın değildir, ancak zip ve unzip komutları tarafından desteklenmektedir. Tar ve gzip/gunzip gibi aynı komutlar ve seçenekler ile oluşturma, çıkarma işlemlerini gerçekleştirmek için birbirlerinin yerine kullanılabilse de farklılıklar vardır.

İlk argüman yine oluşturulacak arşivin adıdır, sonrası ise eklenecek dosyaların listesidir.
zip yenizip mu*

Çıktı dosyaları ve sıkıştırma oranını gösterir. Görseldeki dosyaların içi boş olduğu için herhangi bir oran gözükmemiştir.
Yukarıda ki örnekteki gibi varsayılan olarak sadece zip komutu ile kullandığımız zaman arşive ekleme ve sıkıştırma işlemi gerçekleştirecektir. tar komutundaki gibi -f seçeneği yazmadık. ZİP komutu için dosya adını seçenek ile belirtmemize gerek yoktur.

zip arşivlerinin içeriğini görmek için unzip komutu ve -l seçeneğini kullanabiliriz.
unzip -l sontest.zip

Dosyaları çıkarma işlemi için yine unzip komutunu kullanırız. Eğer bulunduğum dizinin ve arşivin içinde aynı dosyalar var ise çıkarma işlemi sırasında üzerine yazmadan bir kaç seçenek sunmaktadır.
replaca muzikler1? [y]es, [n]o, [A]ll, [N]one, [r]ename:
Bu kısımda birden çok seçenek bizi karşılamış oldu. y ve n harflerini kullandığımız zaman her dosya için bize üstüne yazıp yazmama hakkı verecektir.

Büyük A ve N harfleri ise toplu olarak bu işlemi gerçekleştirecektir. A harfi tüm dosyaların üstüne yazacaktır. N harfi ise hiç bir değişiklik yapmayacaktır. Sonuç olarak eğer zip’in içindeki dosyalar geçerli olmasını isterseniz y ve A harflerini, mevcut dizindekilerin geçerli olmasını istersek n ve N harflerini kullanmamız yeterlidir. Yada bunlarla uğraşmak yerine farklı bir dizin oluşturup çıkarabilirsiniz.

Son seçenek olan [r]ename ise her dosyayı çıkarmadan önce farklı bir isim vererek çıkarmanızı sağlar. Bu sayede mevcut dizindeki dosyalar üzerinde değişik yapmamış olursunuz.

NOT: .zip uzantısını sıkıştırılmış dosya adı için kullanmanız gerekmez, ancak dosya türünü belirlemede faydalı olacaktır. Bir arşiv dosyasını başka bir kişiye gönderirken iyi stil olarak kabul edilir.

DOSYALAR ile ÇALIŞMA

Bu kısımda ise bir linux sisteminde ki dosyalar ile nasıl işlem yapacağımızı inceleyeceğiz. Linux sistemlerinin çoğunda çok fazla dosya vardır. Kullanıcıların dosyalara müdahele etmesini kolaylaştırmak için, önemli komutlar vardır. Bu komutlar ile dosyaları görüntülemek ve düzenlemek için kullanmaktayız. Ayrıca bu komutlar dosyaları görüntülemekle kalmaz başka bir dosyaya yeniden yönlendirebiliriz. Bu özelliklerin hepsi, kullanıcıların çalışması için çok daha esnek ve güçlüdür.

cat komutu

İlk olarak bir terminalde dosyaları nasıl görüntüleyeceğimize bakalım. En güzel komutlardan bir tanesi olan cat ile başlayalım. cat komutu ile metin dosyalarının içeriği görüntülenebilir. Dosyadayı çıktıyı görüntülemek için komutu ve ardından dosya adını yazmamız yeterlidir. Şuan uygulama yapmayınız.
cat Egitim.txt

Yukarıda ki örnekte varsayılan bir çıktı olsada, cat komutu ile içeriği başka dosyara yeniden yönlendirmek içinde kullanılabilir. Örnekte kısa bir cümle olduğu için cat komutu çıktıyı görüntülerken herhangi bir sorun çıkarmadı ama büyük dosyalar için kullanışlı bir komut olmayacaktır. cat komutu içeriğin çıktısını verir ve komut sonlanmış olur.

Daha büyük dosyaların içeriğini görüntülemek için pager (çağrı cihazı) komutu kullanmamız gerekir. Bu sayede dosyayı görüntüleyebiliriz ve haraket tuşlarını kullanarak dosyada ileri ve geri gitmemize olanak tanınır.

less ve more komutları

Yaygın olarak iki pager komutu vardır.
1- less komutu bir çok gelişmiş çağrı yeteneği sağlar.
2- more komutu UNIX ilk günlerinden bu yana vardır. Daha az özelliğe sahip olsa da tüm linux dağıtımlarında kullanabilirsiniz. Ancak less için aynısı söylenemez.

more ve less komutları kullanıcıların tuş komutlarını kullanarak belgeyi kullanmalarını sağlar.

less komutu ile bir dosyayı görüntülemek için komutu ve argümanı yazmamız gerekmektedir. Örnekleri okuduktan sonra uygulayınız. Herhangi bir uzun dosya bulup ilk olarak cat komutu ve less komutu ile görüntüleyelim.
cat /usr/share/doc/words/readme.txt
less /usr/share/doc/words/readme.txt
cat komutunu çalıştırdıktan sonra ekrana çıktıyı verdi ve komutu sonlandırdı. Dosyanın içinde gezinmek için yön tuşlarının bize hiç bir faydası olmayacaktır. Yine dosya içine belirli bir metni aramak isteyebiliriz. Özetle küçük dosyalarda cat komutunu kullanıyoruz.

less komutu ile aynı dosyanın içeriğine bakıyorum. Bu sefer komutu sonlandırmadı. Yön tuşlarına bastığımda dosyanın içerisinde gezebildiğimi fark ediyorum. Yine her zaman ki gibi bir çok tuş kombinasyonu ve komuta sahip. Yardım komutlarını bildiğimiz için artık korkmamız gerek yok. Yardım ekranı görüntülemek için shift +h veya h tuşuna basıyorum.

En kullanışlı olan bir kaç özelliklerine bakalım. Her komutun man ve –help yardım komutları ile detaylarına bakmanız kısa süre içinde alışmanızı sağlayacaktır.

Anahtar Hareket
q –>> çıkış
h –>> yardım
space bar –>> ileri pencere
B –>> geriye doğru pencere
/ –>> eşlesen satır için ileri doğru arama
? –>> eşleşen satır için geriye doğru arama

Komutta arama yapmamızın iki yolu vardır. İleri ve geri arama. Mevcut konumunuzdan ileri arama yapmak için eğik çizgi / tuşu ve ardından aradığınız metni yazıp Enter tuşuna basınız. Unutmayın bir arama yapmak için kelimi yazmanız zorunlu değildir. Karakter veya sayıda yazabilirsiniz. Eğer mevcut konumda bir eşleşme bulunamazsa, Pattert not found hatası bildirir.
Bulunduğunuz konumunuzdan geri doğru bir aramaya yapmak içinde aynı şekilde eğik çizgi yerine ? tuşuna ve aranacak metni veya deseni yazıp enter tuşuna basmanız yeterlidir. Bir aramada birden fazla eşleşme bulunursa, sonraki eşleşmeye geçmek için n tuşunu kullanın.

more komutu da benzer şekildedir. Ancak less gibi kullanışlı değildir. less komutunu kullanıp eğer dağıtımda less komutu bulunmuyorsa more komutunu kullanınız. Ben more komutu için örnekleme yapmayacağım. Örnek yaptığınız zaman more komutun farkını rahatlıkla görebileceksiniz.

head ve tail komutları

head ve tail komutları bir dosyanın sadece ilk birkaç veya son satırları göstermek için kullanılır. head ve tail komutları herhangi bir seçenek belirtmezsek, varsayılan olarak dosyanın 10 satırını görüntüler.

Örneğin, aşağıdaki komut etc/passwd dosyanın ilk on satırını görüntüler.
head /etc/passwd

Komutların yanında bir seçenek olarak numara belirtirsek, dosyanın kaç satır görüntüleneceğini belirlemiş oluruz. Yukarıdaki örneğin son 2 satırını görmek istiyorum. head komutu ilk satırıları tail ise son olanları gösterdiği için bu sefer tail komutu kullanıyorum.
tail -2 /etc/passwd

Pipe karakteri

Dikey çizgi | karakteri, bir komutun çıktısını diğerine göndermek için kullanılabilir. Komutun çıktısı sonraki komut için girdi haline gelir. Bu komut, özellikle belirli verileri ararken güçlü olacağı kesindir.
NOT: Pipe, genellikle bir ilk komutun sonuçlarını iyileştirmek için kullanılır.

Biraz önce head ve tail komutlarına, üzerinde çalışacak argümanlar olarak dosyalar vermiştik. Ancak, dikey çizgi karakteri bu komutları yalnızca dosyalarda değil, diğer komutların çıktılarında da kullanmanızı sağlar. Bu, büyük bir dizini listelerken yararlı olabilir. Örneğin /etc dizini gibi.
ls /etc

Birden çok komutu birbirine bağlamak için arka arkaya birden çok pipe karakteri kullanılabilir. Üç komut birbirine bağlıysa, ilk komutun çıktısı ikinci komuta aktarılır. Daha sonra ikinci komutun çıktısı üçüncü komuta aktarılır. Üçüncü komutun çıktısı daha sonra ekrana yazdırılacaktır.
Her komut yalnızca önceki komuttan gelen girdiyi gördüğünden, komutların aktarılacağı sırayı dikkatlice seçmek önemlidir. nl komutu çıktıya satır numaraları ekleyen komutu kullanarak bunu göstermektedir. Bu örnekte cat komutu ile dosyanın içeriğini görüntüleyip, pipe ile ilk komutun çıktısını nl komutunu aktarıp çıktılara satır numarası ekletelim.
cat /etc/passwd | nl

Bir sonraki örnekte ise, 3 komutu bir birine bağlayalım. Yukarıdaki örneğe ek olarak sadece ilk 5 satırı görmek istiyorum.
cat /etc/passwd | nl | head -5

Bir dosyanın içeriğini görüntülemek için cat komutu ile örnek yaptım. ls komutu ile dizin içeriğinde de uygulayalım.
ls /etc | nl | tail -10

Son olarak komutların yerini değiştirerek farklı bir dizini listeledim. Ama satır numaraları farklı oldu.

Bunun sebebi ise, /etc/ssh dizininde 10 tane satır var. İkinci komutta ls çıktısını pipe ile tail komutuna yönlendirdikten sonra biz seçenek olarak son 5 satır eklediğimiz için pipe ile yönlendirme yaparken 5 satır olarak nl komutuna gitti. Umarım anlatabilmişimdir 🙂 Pipe güçlü olabilir, ancak istediğimiz çıktıyı almak için komutların nasıl aktarıldığını anlamamız gerekir.

Giriş / Çıkış Yönlendirme

Giriş/Çıkış komut satırı bilgilerinin farklı akışlara aktarılmasına izin verir. Yeniden yönlendirmeye geçmeden önce standart akışlara bi göz atalım.

  • Standart giriş veya STDIN , klavye aracılığıyla kullanıcı tarafından normal olarak girilen bilgidir. Bir komut kabuğa veri istediğinde, kabuk kullanıcıya komutları yazma yeteneği sağlar ve bu komutlar komuta STDIN olarak gönderilir.
  • Standart çıktı veya STDOUT , komutların normal çıktısıdır. Bir komut doğru şekilde (hatasız) çalıştığında, ürettiği çıktıya STDOUT denir. 
  • Standart hata veya STDERR , komutlar tarafından üretilen hata mesajlarıdır. Varsayılan olarak STDERR, komutun yürütüldüğü terminal penceresinde görüntülenir. 

 Yönlendirme,  < > karakterleri kullanılarak gerçekleştirilir .

STDOUT
STDOUT dosyalara yönlendirilebilir. (> karakteri, çıktıyı bir dosyaya yönlendirilebilir.) Hemen örnekler ile başlayalım. Bir olarak bulunduğum dizinde ne var ne yok diye bir ls komutu çalıştırdım.

Sonra echo ile ekrana bir çıktı yazdıralım.

Bu çıktıyı birde dosyaya yazdıralım.

Çok güzel şimdi hemen sağlamasını yapalım. İlk başta bir ls komutu çalıştırmıştım. Oraya bakarsanız bende bugünpazar diye bir dosya gözükmez. Zaten yoktu. Yukarıdaki komut ile yeni bir dosya oluşturdum ve içine çıktıyı yazdırdım. Bu dosyanın içine bakalım.

En önemli kısım ise > karakteri tek kullanıldığı zaman dosyanın üzerine yazar. Yani içinde ne var ne yok gidecektir. Aşağıdaki görselde echo ile bence bişi olmaz yazdırsam da. Eski dosya içeriğini sildi.

Şuan basit gelse de, bu çok önemlidir. Yetkili bir kullanıcıda herhangi bir hatanın bedeli ağır olabilir. Riskli durumlarda önce bir yedeğini almanız faydalı olacaktır. Bu durum aşmak için >> karakterden 2 tane kullanmamız yeterlidir.

NOT : Tek > karakterinin mevcut bir dosyanın tüm içeriğinin üzerine yazdığını unutmayın. Dosyanın orijinal içeriği kaybolur, yeni echo komutun çıktısı ile değiştirilir .

NOT: Mevcut bir dosyanın içeriğini ekleyerek korumak da mümkündür. Üzerine yazmak yerine bir dosyaya eklemek için iki >> karakteri kullanın.

STDERR

STDERR, STDOUT’a benzer şekilde yeniden yönlendirilebilir. STDERR yukarıda söylediğimiz gibi komutlar tarafından üretilen hata mesajıydı. Peki STDERR bu kısımda tam ne olarak yapıyor derseniz. Çok fazla satır olduğunu düşünün 50 tane buradaki hatalar gözden kaçabilir. Bunu önlemek için, standart çıktıyı ve hatayı bir dosyaya yazılacak şekilde ayarlayabiliriz. Yönlendirme için > karakterini kullanırken, başka bir akış belirtilmedikçe akış 1 (STDOUT) varsayılır. Bu nedenle, STDERR yeniden yönlendirilirken sayı 2>karakterinin önüne yerleştirilerek akış 2 belirtilmelidir .

STDERR’yi yeniden yönlendirmeyi göstermek için, bir dizinin mevcut olmadığından hata oluşturan komutu çalıştıralım. Kök dizinim altında güzgülleri diye bir şey olmadığı için hata mesajı verdi.

Yukarıdaki örnekte çıktı açıkça bir hata mesajıdır, ancak STDERR’a gönderildiğini nasıl anlarsınız? Bunu belirlemenin kolay bir yolu STDOUT’u yeniden yönlendirmektir.

Yukarıdaki örnekte, STDOUT çıktı.txt dosyaya yeniden yönlendirildi . Bu nedenle, görüntülenen çıktı STDOUT olamaz. Tüm komut çıktısı ya STDOUT ya da STDERR’a gittiğinden, yukarıda görüntülenen çıktı STDERR olmalıdır.

Bir komutun STDERR çıktısı bir dosyaya gönderilebilir.

Yukarıdaki örnekte, komut 2> kullanılarak tüm hata mesajlarının dosyaya gönderilmesi gerektiğini belirtmiş olduk.

NOT: Belli bir aşamaya geldiğimizi düşündüğüm için komutları tekrar yazmıyorum. Görseller üzerinden uygulamaları gerçekleştiriniz.

Redirecting Multiple Streams

Bir komutun hem STDOUT hem de STDERR’ını aynı anda yönlendirmek mümkündür. Bunu anlamamız için belirtilen dizinlerden biri var ancak diğerinin olmamasıdır. Hemen örnekleyelim. ls komutu ile olan ve olmayan dizinleri listeliyorum.

Yukarıdaki görselde güzgülleri adından bir şey olmadı için hata çıktısı verdi. Ancak /etc/ssh dizini olduğu için sonuçların çıktısı verdi.

Bir dosyaya yalnızca STDOUT gönderilirse, STDERR yine de ekrana yazdırılır. Ama dosyanın içeriğine hata mesajı yazdırılmaz.

Bir dosyaya yalnızca STDERR gönderilirse, STDOUT yine de ekrana yazdırılır. Bu seferde dosyanın içeriğine sadece hata mesajı yazdırılmış olur.

Hem STDOUT hem de STDERR &> karakterinin önündeki ve işareti karakteri kullanılarak bir dosyaya gönderilebilir . 

NOT: &> karakter seti 1> ve 2> anlamına gelir.

STDERR ve STDOUT’un her ikisinin de aynı dosyaya gitmesini istemiyorsanız, > (1>) ve 2> kullanarak farklı dosyalara yeniden yönlendirilebilirler. Aşağıdaki örnekte hata mesajını sonuc1.txt standart çıktıyı ise sonuc2.txt yazdırdım. Dosya isimleri ile çıktılardaki numaraları bile tersini yaptım. Kafamızın bazen karışması daha iyi anlamamızı sağlayabilir 🙂

NOT: Akışların belirtildiği sıra önemli değildir.

STDIN

STDIN’i yeniden yönlendirme kavramı zordur. Neyi yeniden yönlendirmek istediğinizi anlamak daha zordur 🙂  Standart çıktı ve hata mesajlarının amaçları basittir. Çıktıyı ileride kullanmak üzere bir dosyada saklamak kadar doğal bir şey yoktur. Çoğu Linux kullanıcısı STDOUT’u rutin olarak, ara sıra STDERR’yi ve çok nadiren STDIN’i yeniden yönlendirir.

Bazı komutlar için, bağımsız değişken olarak bir dosya adı belirtmezseniz, veri almak için STDIN kullanmaya geri dönerler. Örneğin, cat komutuna bakalım.

cat komutunu bağımsız değişkenler olmadan denediğimiz için işlemi  Ctrl + C ile sonlandırın ve  komut istemine geri dönün.

Yukarıdaki örnekte, cat komuta bağımsız değişken olarak bir dosya adı verilmemiştir. Bu nedenle, verilerin STDIN’den ekranda görüntülenmesini ister. Ne yazarsak yazalım cat komut ekranında aynısından tekrar gözükür.
Bununla birlikte, cat komutun çıktısını bir dosyaya yeniden yönlendirildiyse, bu yöntem ya mevcut bir dosyaya metin eklemek ya da yeni bir dosyaya metni yerleştirmek için kullanılabilir.

NOT: Standart girdilerde, üzerine yazma gibi bir durum söz konusu olmadığından, << gibi bir sembol tekrarına gerek kalmaz.

sort komutu

sort komut verileri sıralamak için kullanılan popüler komutlardan bir tanesidir. Bu kısımda ben 3 tane dosya oluşturup içlerini dolduracağım. İlerleye süreçte kendinizde örneklerini yapabilirsiniz.
isimler.txt, sayilar.txt, aylar.txt
oluşturduğum ilk dosyayı cat ve sort komutları ile çalıştırıp inceleyelim.

Yukarıda görseldeki gibi sort komutu dosyanın içindeki verileri alfabetik sıraya göre vermektedir. -r seçeneği ekleyerek alfabetik sıranın tam tersi bir çıktıda alabilirsiniz.

ikinci dosyayı sort komutu ile çalıştırıyorum. Sanki bu sefer tam istediğimiz sonucu alamadık. Sayıları küçükten büyüğe doğru sıralamadı.

Bunun içinde güzel bir seçenek mevcut komutun yanına -n eklememiz yeterli olacaktır.

Son dosyamızın içinde ise aylar var. Tekrar çalıştırıyorum ve ay olarak sıralamasını istiyorum. sort komutu yine seçenek olmadan istediğimiz sonucu vermeyecektir. Aşağıdaki görseldeki gibi bazen alfabetik olarak sıralanması yeterli olmayabilir.

Aslında bu kısımda komutu bilmeniz yeterlidir. Ek seçenekler için her zaman yardım komutlarından faydalanabilirsiniz.

wc komutu

wc komutu bir dosya için satır, kelime ve bayt numarası ve birden fazla dosya belirtilirse, toplam hat sayısı sağlar. Varsayılan olarak wc komutu, sağlanan her dosya için üç istatistiğin yazdırılmasına izin verir.
wc /etc/passwd

Yukarıdaki örneğin çıktısında dört sütun vardır:

  1. Satır sayısı (49)
  2. Kelime sayısı (117)
  3. Bayt sayısı (2760)
  4. Dosya adı (/etc/passwd)

Not: (1 byte = 1 karakter in a text file)

Eğer birden fazla dosyanın toplam istatistiklerini almak isterseniz birer boşluk bırakarak dosya isimlerini yazmanız yeterlidir.

-l satır sayısını gösterir.
-w kelime sayısını gösterir.
-c bayt sayısını gösterir.
Bu seçeneklerin herhangi bir kombinasyonunu kullanarak yalnızca belirli istatistikleri görüntülemek de mümkündür .

wc komutu, pipe aracılığıyla başka bir komut tarafından hatları çıkış sayısını saymak için yararlı olabilir. Örneğin, kök dizin altında toplam dosya/dizin sayısını bilmek istiyorsanız , ls komutunu wc komutuna yönlendirmemiz yeterlidir.
ls / | wc -w
Komutun doğruluğunu test etmek için nl komutu ile satır başlarına numara eklettirdim.

Diğer bir örnekte ise etc dizininde ne kadar dosya/dizin olduğunun sayısına bakalım. Dizinlerin içine baktığımız için -l ve -w seçenekleri pek değişiklik göstermeyecektir.
ls /etc | wc -l

cut komutu

cut komutu bir dosya veya standart girişten metin sütunları çıkarabilir. Sınırlandırılmış veritabanı dosyaları, sınırlandırılmış dosyalar ve bir sınırlayıcı ile ayrılmış sütun içeren dosyalar için kullanılır. Bu dosyalar Linux sistemlerinde çok yaygındır.
-d seçeneği iki nokta üst üste veya virgül gibi alternatif sınırlayıcılar belirtir.
-f seçenek tireli aralığı veya virgülle ayrılmış liste olarak ya ekrana hangi alanları belirleyebilirsiniz.

sort komutuna bakarken passwd veritabanı dosyasını son5.txt adında yeni bir dosyaya çıkartmıştık. Örnekte, 
son5.txt dosyasındaki birinci, beşinci, altıncı ve yedinci alanlar görüntüleyelim.

Aşağıdaki görseldeki gibi “:” iki nokta üst üste bir kolon ayırıcıdır. Yukarıdaki örneğin daha iyi anlaşılması için aşağıdaki görseli incelersek istediğimiz çıktıyı aldığımızı anlayabiliriz.


cut komutu metnin sütunları çıkarabildiğinden -c seçeneği ile kullanışlı bir veritabanı dosyaları veya komut çıktılarının karakter konumlarını belirler. Örnek son5.txt dosyasının içindeki 7-15 arasındaki karakterlerin çıktısını alalım.

Aşağıdaki görsel ile yukarıdaki görseli karşılaştırırsanız, bu sefer “:” kolon ayırıcıları da dahil olmak üzere 7-15 arasındaki karakter çıktılarını verdiğini görebiliriz.

Biraz daha anlaşılması için şöyle bir örnek yapalım. Elimizde bir dosya var. Bunun içinde isimler, tc numaraları, doğum yeri gibi bilgiler mevcut. Biz bu dosyadan sadece isim, soyisim ve doğum yerlerini almak istiyoruz. Bunun için örnek bir dosya oluşturdum. Hemen üstünde örnek yapalım. İlk olarak dosyamın içine bakıyorum.

Görmek istediğim alanları yazıyorum. Umarım daha iyi anlaşılmıştır.
cut -d: -f1-2,4 iller

Son bir örnek ile cut komutunu da bitiriyoruz. Ev dizinimde ls -l komutunu çalıştırıyorum.

ls -l komutunu çalıştırdığımda, sadece dosya türünü (karakter 1), 50. karakter ve sonrası ne varsa göstermesini istiyorum. Aşağıdaki görselde ek olarak 12 yazdım. Boşluklarında sayıldığını unutmayalım.
ls -l | cut -c1,12,50-

grep komutu

grep komutu, bir dosya yada belirli bir desen ile eşleşen bir komutun çıkış filtresi için kullanılabilir. Yani dosya içeriklerini filtreleme gibi düşünebilirsiniz.
Örneğin, bash kabuğu ile sisteme giriş yapabilen tüm kullanıcıları bulalım.
grep bash /etc/passwd

Yukarıda görselde bash yazan yerleri kırmızı renkle işaretlemiş oldu. Komut çok basit ve kullanışlıdır. Bazı durumlarda aradığımız desenin dosya içinde kaç tane olduğunu görmek isteyebiliriz. Bu kısımda -c opsiyonu isteklerimizi karşılayacaktır. Yukarıdaki görselde 4 kullanıcının bash kabuğunu kullanabildiğini görmüştük. Şimdi de doğrulamış olduk.
grep -c bash /etc/passwd

Yine farklı bir istek olarak aradığımız bilgiler ile eşleşen satırların numaralarını görmek isteyebiliriz. -n opsiyonu’da bize komutun orjinal satır numaralarını gösterecektir.
grep -n bash /etc/passwd

-v opsiyonu ise işlemi tam tersine çevirir. Yani dosyada bash bulunmayan tüm satırları görüntüler.
grep -v bash /etc/passwd

Linux dünyasında büyük/küçük harf duyarlılığı vardı. Grep komutunu kullanırken herhangi bir ayrım yapmamasını -i opsiyonu ile sağlayabiliriz.
grep -i bash /etc/passwd

Güzel bir opsiyondan daha bahsedelim. Grep komutu ile yalnızca tam kelimeyi oluşturacak şekilde arama yapabilirsiniz. Aşağıda ki çıktıyı karşılaştıralım. Varsayılan olarak kar geçen tüm satırları arıyor. -w opsiyonu ile sadece kar kelimesini aramaktadır.
grep -w bash /etc/passwd

Temel Normal İfadeler

Grep komutu sadece normal ifadeleri destekleyen birçok komutlardan birisidir. Kısaca bu karakterlerden bahsedip makaleyi tamamlayalım.

. Dönem Karakteri

Herhangi bir tek karakter. En kullanışlı ifadelerden bir tanesidir. Yeni satır karakteri dışında herhangi bir karakterlerle eşleşir. Örneklerle gitmek daha anlaşılır olacaktır. Bir kelime arıyoruz ama ilk ve son harfini hatırlıyoruz diyelim. Bu gibi durumlarda eksik olan harfleri . (nokta) ile kendisi otomatik tamamlayacaktır.

grep ‘r..t’ rain.txt

Diğer bir örnekte ise en az 5 karakter içerin tüm kelimeleri bu diyebiliriz.

[ ] Köşeli Ayraç Karakterleri

Köşeli parantezler, parantez içinde yer alan olası karakterler veya aralığından tek bir karakterle eşleşir. Aralık doğru sırada olduğu sürece olası her karakter ve ya bir aralık listelenebilir. Aşağıda bir çok örnek verdim.

Belirli karakterleri arayabilirsiniz.

Belirli karakterler ile istediğiniz karakterleri eşleyebilirsiniz.

Alfabetik olarak bir aralık verebilirsiniz a-d gibi ama d-a benzeri bir aralık olmadığı için çalışmayacaktır.

Aynı şekilde bir sayı bulunan tüm satırları veya bir kalıp 0-9 kullanabilirsiniz.

Bu makalemizde sizlerle dosya/dizin yönetme, arşivleme ve sıkıştırma gibi bir çok uygulama yaptık. Modül 2 gibi en basit şekliyle anlatmaya çalıştım. Makaleyi yazarken, Networking Academy ve Oracle Linux’ten faydalandım. Bol bol uygulama yapmaya devam. Anlamadığınız yerleri kesinlikle tekrar tekrar uygulayın, araştırın ve yorumlarda yazınız. Modül 4’de Temel Komut Dosyası, Bilgisayar Donanımı, Ağ Yapılandırma gibi konular ile devam edeceğim. Merak ettiklerinizi, eksikleri veya eklemek istediklerinizi yorumlarda belirtebilirsiniz. Umarım faydalı olmuştur. Başka bir makalede görüşmek üzere. Sağlıcakla kalın ?

İlgili Makaleler

2 Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu