Konsoldan, aradığımız dosyayı bulmak

Komut : find (yol tanımı) (seçenekler)

Seçenekler :

-name isim : aranılacak dosyanın ismi.
-perm izin : Izinleri oktal olarak belirlenmiş dosyaların aranılması.
-links n : linke sahip dosyalar.
-user kullanıcı : Belirli bir kullanıcıya ait dosyaların aranması.
-group isim : Belirli bir gruba dahil dosyaların aranması.
-atime n : n gün içinde erişilen dosyalar.
-mtime n : n gun içinde işlem gören dosyalar.
-ctime n : n gun içinde değiştirilen dosyalar.
-print : bulunan dosyaların ekranda görüntülenmesini sağlar.

Örnek :

Bulunduğum dizinden itibaren tüm alt-dizinlerdeki “mfyz” ile başlayan dosyaları bulmak için;

Not 1 : Burada arayacağım dosyada wildcard kullandığım icin * işaretini kullandım. Eğer dosyanın tam ismini biliyorsanız buna gerek yoktur.

Not 2 : Eğer bir aramayi root’tan ( / ) başlatirsaniz çok buyuk olasilikla bazı dosyaları okumaya izininiz olmadıgı için size bunu belirten bir uyarı mesajı verilecektir, ve bu mesajlar arasında aradığınız şey ekrana yazılsa bile bunu gözden kaçırabilirsiniz. Bu sebeple çıktıyı bir dosyaya yöneltip, daha sonra o dosyayı okumanızda fayda vardır.

Örnek :

Screen ile taşınabilir konsollar

Screen nedir ki?

Screen, linux üzerinde bir konsol aracıdır. Screen sayesinde sanal konsollar açabilir ve bunları yönetebiliriz. Mantık olarak pencere gibi düşünün, her pencerenin bir id’si var ve bu pencereleri masaüstlerinde gezdirebiliyorsunuz. Screen ise bu işin konsol versiyonu. Screen ile konsol üzerinde yeni konsollar açıp kapayıp açık olanların listesini görüp, onlara spesifik id’ler atayıp veya o id’lerdeki konsollara geri dönüş yapabilirsiniz.

Ne işime yarar?

Screen paketi ilk bakışta çok fonksiyona yarayacak bişey gibi görünmüyor. İş uygulamasına geldiğinde güzelleşiyor. Birkaç örnek ile açıklayayım. Diyelim ki tty1’de bir uygulama açtınız, içerisinde bir url çıktı, o siteye girmek için o url’i kağıt kalem ile kaydedebilir, bir dosyaya paste edip onu X üzerinde açıp işinizi görebilir veya programın o konumunu ezberleyip X’de bir konsolda açıp görebilirsiniz. Eğer scren programı üzerindeki bir konsolda iseniz, CTRL + A + D‘ye bastığınızda o konsoldan çıkmış olur, X’de bir konsolda screen ile o konsola dönebilir, konsolunuzun kaldığı yerinden devam edebilirsiniz.
Screen sayesinde konsollarınızı, çıktı, içerisindeki işlemler bozulmadan rahatlıkla taşıyabilirsiniz.
Başka ve daha güzel bir örnek vermek gerekirse, X’te bir konsol açıp wget ile 30 tane 100’er mb’lik dosya download açtınız. Yada bir iso çekmeye başladınız. Oldu ki X’i restart etmeniz gerekti, screen konsolu içerisinde iseniz ctrl+a+d ile çıkıp ttyX’lerden birinde bu konsolu geri çağırabilir hatta hiç çağırmayabilirsiniz bile. Başka bir uygulama konusu da, geliştirdiğiniz bash programlarında, diğer programları kullanırken bash’de screen ile açtırdığınız konsolları yönterek onların içindeki çıktıları kullanabilir, kullanıcıya bunu yansıtmadan işlem yaptırabilirsiniz.
En güzel uygulamalarından biri de, ssh ile tatildeyken bağlandığınız masaüstü bilgisayarınıza zibilyon görevi verdikten sonra detach edip acil çıkış bile yapabilmenizdir.

Screen programını kullanabilmek için screen paketi kurulu olması gerekmektedir. Bunun kurulması size kalmış artık 🙂

Basit olarak bir konsolda screen komutunu verdiğimizde karşımızda temiz yeni bir bash gelecektir. Burada istediğimiz her türlü maymunluğu yapabiliriz.

İstediğiniz an CTRL + A + D tuş kombinasyonu ile rahatlıkla dışarıdaki konsola düşebilir, açmış olduğunuz screen konsolunu askıya almış olursunuz.
Eğer askıda tek konsol var ise screen -r parametresi ile doğrudan dönüş yapabilirsiniz. Eğer birden fazla askıda konsol mevcut ise aynı komut size bir liste verecektir. Bu listedeki id’leri screen -r şeklinde uygularsak o konsola düşeriz. Konsoldaki oturum sona erdiğinde askıdan alınıp screen konsolu öldürülecektir.

Ayrıca -x parametresi ile daha önce açık olan oturumu birden fazla konsolda açabilirsiniz. Böylece screen oturumunuz, açılan her konsolda yeni bir girdi mekanizmasına sahip olmuş olacaktır.

Basit bir uygulama ile;

Linux konusunda deneyimsiz birisi konsolda yapılması gereken bir işte tıkanmıştır, size ssh girişlerini verir, arkadaşın bilgisayarına girer ve bir screen oturumu açarsınız. Arkadaşınıza da bir konsol açıp screen -x komutu vermesini istersiniz. Evreka, sizin oturumunuz onun konsolunda da açılır. Her iki taraftanda bilgi girişi yapılabilir. Konuşamk (chat) için bile bu yöntemi kullanabilirsiniz 🙂

Küçük bir uygulama ile kolaylıkla programı öğrenebilirsiniz. Screen komutunun man sayfasında veya help sayfasında ilgili ayrıntıları bulabilirsiniz.

Not: Bu döküman 2 Ocak 2008 tarihinde yeniden düzenlenmiştir.

Konsolda joker karakterlerin kullanımı

Konsolda çok dosya ile çalışırken joker karakterleri kullanarak daha spesifik tanımlar yapabiliriz. Mesela binlerce dosya olan bir klasörde ulaşmak istediğimiz dosya gurubunu joker karakterlerle daha rahat ifade edebiliriz. Ya da dosyaları guruplamak için kullanabiliriz.

Bu konuda kısa bir örnek uygulama söylemek gerekirse çok çeşitli dosyanın olduğu büyük bir klasörde dosyaları alfabetik ayıklama işlemi joker karakterler kullanmadan veya herhangi bir GUI program kullanarak halletmek oldukça zorlayıcı olacaktır.

Gelelim joker karakterlere ve kullanımlarına;

* Bir veya daha fazla karakteri ifade eder.
tty* -> tty ile başlayan tüm dosyalar
dosya0*.x* -> dosya0 ile başlayan, uzantısının ilk harfi x olan tüm dosyalar

? Tek bir karakteri ifade eder.
program.? -> program ile başlayan ve uzantısı tek karakter olan tüm dosyalar.

[ ] Parantezin içerisinde kalan karakterler veya aralığı ifade eder.
dosya[0-9] -> dosya0, dosya1, dosya2 … dosya9
sozluk_[a-z].txt -> sozluk_a.txt, sozluk_b.txt … sozluk_z.txt

Aşağıda bu konuda örnek kullanım bulacaksınız.

Linuxta dosya parçalamak

Neden Dosyaları Parçalayayım Ki?

İnternette hızlı bant genişlikleri kullansak da hala dosyaları taşırken ufaltmak zorunda kalabiliyoruz. Aşırı büyük bir dosyayı (CD-DVD boyutunda mesela) parçalayarak ufak zaman dilimleriyle yükleme işlemi yapıp yüklenmeme riskini azaltırız mesela. Ya da paylaşım siteleri, eposta hizmeti veren servisler limitler uygulayabiliyorlar.

En basitinden başka bir örnek de elinizdeki FAT türü dosya sisteme double layer dvd isosu kaydedemezsiniz. Çünkü 4.0GB’dan fazla boyutludur ve FAT dosya sistemleri 4.0GB üzeri dosya kaydedemez. Dosyanızı taşımak için parçalayabilir başka bir dosya sisteminde tekrar birleştirerek işinizi halletmiş olursunuz.

Bazen de disketlerden çok az büyük dosyalarla çalışıyor olabilirsiniz (Tabi hala disketle çalışmak zorunda iseniz). Mesela bir proje dosyası 10 mb tuttu, bunu sıkıştırarak 2 MB’a indirdiniz ancak bunun için bir cd yazmaya değmez. Disetlere sığacak kadar da küçük değil. İşte böyle zamanlarda dosyaları diketlerin alacağı boyutlara bölerek çalışabiliriz.

Örnekler çoğaltılabilir, bu gibi durumlarda dosyalarınızı parçalayabilirisiniz.

Linux’ta Dosyaları Parçalamak!

Dosyaları 2 biçimde parçalıyabiliyoruz. Birincisi dosyaları satır sayısına göre, diğeri de boyutuna göre. Dosyaları satır sayısına göre parçalarken -l parametresini, boyuta göre de -b parametresini kullanıyoruz.

İlk önce dizinimizdeki dosyaları listeledik. Burada çalışmak için bir binary (dosya.wav) var. Şimdi ilk olarak dosya.wav dosyasını satır sayısına göre parçalayacağız.split -b 140000 dosya.wav parca_ komutu ile parçaladık. Bu komutta 100 değeri parçalardaki satır sayısı yani dosya.wav’ın kaç byte’da bir parça oluşturacağını belirledik. dosya.wav parçalanacak dosyayı, parca_ da parçaların anahtar kelimesini belirtiyor. Komut uygulandığında oluşan parçalar anahtar kelime + aa,ab,ac,ad….ba,bb,bc… şeklinde isimler alır. Gördüğünüz gibi listeleme sonucunda başlangıçtaki dosya sayısında epey fazla dosya var.

Dosyaları Birleştirmek

Dosyaları birleştirirken cat komutu ile parçaları teker teker birbiri ardına ekliyoruz. Yukarıdaki örnekte dosya.txt’nin parçalarını birleştirirken sırayla cat dosya_parca_ag >> dosya_parca_af ardından, cat dosya_parca_af >> dosya_parca_ae… komutlarını aa parçasına kadar uygulayarak dosya.txt’yi dosya_parca_aa dosyasında oluşturmuş yani birleştirmiş olduk.

Bu uzun işlemi yapmak yerine şu pratik yolu tercih ediniz (Zira sadece mantığını anlamamız için üstteki detayı verdim 🙂 ).

(Bu güzel detayı belirttiği için Eren Turkay arkadaşıma teşekkür ederim.)