| |||||||
![]() |
| | LinkBack | Thread Tools | Display Modes |
|
#1
| ||||
| ||||
| Linux'de aradiginiz dosyayi bulma yollari.
Hepimizin basina mutlaka gelmistir. Sabit diskimizde bir dosya oldugunu biliriz fakat nerede oldugunu bir turlu hatirlayamayiz. En basit olarak yapabilecegimiz sey tek tek dizinleri dolasip 'ls' komutuyla dosya ve dizinleri listeleyerek aradigimiz dosyanin diskte var olup olmadigini arastirmaktir. Eger dosyanin nerede olduguna dair cok iyi bir tahmin yapabileceksek bu yontem ise yarayabilir. Ancak bu makalemizin asil konusu diskin kiyisinda kosesinde her yerinde olabilecek bir dosyanin bulunmasidir. which komutu: 'which' komutu bir "program" (executable) dosyasinin PATH degiskeni ile belirtilen dizinlerden birinde olup olmadigini ve var ise hangi dizinde oldugunu bulmaya yarar. Oncelikle PATH degiskeninden biraz bahsedelim. Bu degisken genellikle /etc/profile veya benzeri bir konfigurasyon dosyasinda belirlenir. Genellikle yeni kurulmus bir Linux sisteminde /usr/bin/ , /usr/sbin, /usr/local/bin gibi program dosyalarinin cokca bulundugu dizinlere isaret eden bu cevre degiskeni bu programlarin butun dizin adlari verilmeden sadece adlarini yazarak calistirabilmeyi saglar. root@danzka:~# echo $PATH /usr/local/sbin:/usr/sbin:/sbin: /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games root@danzka:~# Yukaridaki ciktida benim makinemdeki PATH degiskeninin icerigini goruyoruz. Gordugunuz gibi eklenecek her dizin birbirinden ' : ' (iki nokta ust uste) ile ayriliyor. Bu sekilde istediginiz kadar dizini PATH'e eklemeniz mumkun. (/etc/profile veya benzer dosya icinde) Mesela yukaridaki ornekte /usr/local/sbin dizini PATH dahilindeki dizinlerden biri olarak gorunuyor. Bu sayede o dizin altindaki butun programlar sadece adi yazilarak calistirilabilir. PATH'in bir baska kullanisli yani da BASH shell'inde (ve bazi baska shell'lerde) bulunan <TAB> tusu ile program adi tamamlama ozelliginde kullanilacak dizinleri belirlemesidir. Simdi benim /usr/local/sbin dizinime bir goz atalim. root@danzka:/usr/local/sbin# cd /usr/local/sbin/ root@danzka:/usr/local/sbin# ls dnssec-keygen* dnssec-signkey* lwresd* named-checkconf* parted* dnssec-makekeyset* dnssec-signzone* named* named-checkzone* rndc* root@danzka:/usr/local/sbin# Bu dizindeki programlardan 'parted' (GNU'nun disk partisyon programi) i calistirmak icin. root@danzka:~# /usr/local/sbin/parted diyebilecegimiz gibi bu dizin PATH'de yer aldigi icin yanlizca root@danzka:~# parted diyerek de kullanabilirsiniz. PATH kavramini uzun uzun acikladiktan sonra asil konumuz olan 'which' komutuna geri donelim. root@danzka:~# which parted /usr/local/sbin/parted root@danzka:~# Yukaridaki ornekte gordugumuz gibi eger yanlizca 'parted' yazarak bu programi calistirabiliyorsak, her hangi bir sekilde bu programin nerede yer aldigini bulmak istedigimizde which komutunu kullanabiliriz. Eger aradigimiz program PATH icinde degilse asagidaki ornekteki gibi bir hata mesajiyla karsilasacagiz. root@danzka:~# which boyle_program_olmaz which: no boyle_program_olmaz in (/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin: /usr/bin:/bin) root@danzka:~# 'which' komutu kisaca bize butun PATH'e baktigi halde boyle bir program bulamadigini soyluyor. Bu komutun baska can alici bir kullanisi daha var. Diyelim ki sisteminizde calisan 'bind' adli programin yeni bir versiyonunu yuklediniz. Fakat eski versiyonu ortadan kaldirmayi unuttunuz. Bu tarz bir sistemde root@danzka:~# bind yazdiginizda bu programin hangi versiyonun calistigini bulmak zor olacaktir. 'which' komutuyla bu sekilde hangi dizindeki 'bind' in calistirildigini bulup, yanlis olmasi halinde yeni versiyon ile yer degistirebilirsiniz. Gordugunuz gibi kisitli bir komut olan 'which' in bile ise yaradigi bir cok durum var. locate komutu: Simdi daha genis kapsamli olan 'locate' komutundan bahsedelim. Turkce tam karsiligi 'konuslandirmak' olan bu komut aynen bunu gerceklestirir. Kullanim sekli root@danzka:~# locate aranan_kelime olan bu komut dizin veya dosya adinda 'aranan_kelime' gecen her dizin ve dosyayi ekrana basar. Bu yuzden ekran ciktisi buyuk ihtimalle cok uzun olacak olan bu komut 'more' komutuyla birlikte kullanildiginda dikkatli bir inceleme ile bize aradigimiz bir dosyayi bulmakta cok yardimci olabilecek bir komuttur. root@danzka:~# locate aranan_kelime | more Bu sekilde ekran ciktisi bir ekrani doldurup size <enter> (satir satir ilerleme) veya <bosluk> (sayfa sayfa ilerleme) tuslarina basana kadar ekranda kalacaktir. Tabi ki 'diskde_sadece_bir_tane_var.doc' gibi az rastlanacak bir dosya ararken sayfanin hizla akip gitmesi gibi bir sey soz konusu degildir. Bu komut ile * (asteriks) ve ? (soru isareti) gibi meta karakterleri kullanarak da dosya aramak mumkundur. Locate komutunun aradiginiz dosyayi hizla buldugunu farkedeceksiniz. Bu sabit diskinizin birden bire daha hizli calismaya baslamasindan kaynaklanmiyor. Bu hizin arkasinda cok basit bir veritabani prensibi yatar. 'locate' komutu ilk calistirildiginda sizden dosya isimlerini saklamak icin kullanacagi veritabanini olusturmanizi isteyecektir. Veritabani olusturulma islemi sirasinda sisteminizde o anda bulunan butun dosyalar indexlenip veritabani formatinda bir dosyaya yazilacaktir. Bundan sonra yapacaginiz 'locate' sorgularinin hepsi diskten gercek zamanli bir arama yaparak degil, bu indexlenmis veritabanindan yapilacaktir. Boylece olaganustu hizli bir sekilde aradiginiz dosyaya ulasabileceksiniz. Yanliz bu calisma prensibinde sizin de tahmin edebileceginiz bir acik bulunmaktadir. 'locate' komutunun veritabaninda , bu veritabani ilk olusturulduktan sonra yaratilan dosyalar indexlenmemis olacaktir. Ayni sekilde veritabani yaratildiktan sonra sistem'den silinen veya yeri degisen dosyalar da halen sistemdeymis gibi gorunecektir. Bu yuzden yanlis sonuclar almamak icin 'locate' veritabani periyodik olarak 'updatedb' komutu ile guncellenmelidir. Bu cok zaman alan ve diski yavaslatan bir islem oldugundan 'cron' yardimi ile sistemin az kullanildigi bir zamanda otomatik olarak yapilmalidir. 'find' komutu: Bu komut 'locate' komutuna benzer olarak calisir. Fakat bir veritabanindan yararlanmak yerine genelde gercek zamanli olarak diskin belirtilen kismini tarayarak sonuca ulasir. Bu ozelligi acisindan verdigi sonuclar her zaman guvenilirdir. Bunun yaninda ayni sebepten son derece yavas calisan ve sistem kaynaklarini uzun sure mesgul eden bir programdir. Ozellikle ard arda birden fazla sorgu yapacaginiz hallerde 'find' komutunu kullanmak yerine once 'updatedb' ile 'locate' veritabanini guncelleyip sonra 'locate' komutu ile sonuca hizla ulasmak daha verimli olabilir. Bu komutun kullanisi ise asagidaki gibidir. root@danzka:~# find /etc | grep fastboot /etc/fastboot root@danzka:~# Yukaridaki kullanista 'find' a /etc dizini altindaki butun dosya ve dizinleri arayip , grep sayesinde icinde 'fastboot' kelimesi gecen butun dosya ve dizin adlarini ekrana goruntulemesini soyluyoruz. Bu ornegimizde (kasitli olarak) sadece bir sonuc geri dondu. Komutun ciktisi gordugunuz gibi icinde aradigimiz kelime gecen dosya veya dizinin mutlak dizin yolu. 'find' komutu direk olarak kullanildiginda 'ls' ye benzer olarak aradigimiz kelime gecen butun dosya ve dizinleri listeleyecegi icin pratikte 'grep' komutunu kullanarak sadece ilgilendigimiz kelimenin gosterilmesini saglamak daha kullanislidir. Butun sabit diskiniz icinde gercek zamanli olarak icinde 'php' kelimesi gecen dosya ve dizinlerin mutlak dizin yollarini ekrana goruntulemek icin kullanacagimiz komutu sizlere sunarak bu makalemize son veriyoruz. root@danzka:~# find / | grep php
__________________ 1.)Lütfen destek talebinde bulunmak için msn messenger üzerinden iletişime geçmeyiniz. 2.)Ücretsiz destek almak için forum sayfalarımızı kullanmanız aynı sorunu yaşayan diğer üyelerin cevaplara en kısa sürede ulaşabilmesi ve sizlere yardımcı olmak isteyen bizlerin ve diğer üyelerimizin zaman kazanmaları açısından çok önemlidir. 3.)Forumlarımızda sorunlarınızı anlatırken mümkün olduğunca çok detay vermeniz en kısa sürede sorununuza çözüm bulmanız açısından mühimdir. Daha çok öğrenmek ve öğretmek dileğiyle.. Sevgiler.. The Platform. |
|
#2
| |||
| |||
| Quote:
|
|
#3
| ||||
| ||||
|
tabiki.yazının sonunda da bu belirtilmiş.aramadan önce güncellerseniz daha doğru sonuçlara ulaşırsınız.
__________________ 1.)Lütfen destek talebinde bulunmak için msn messenger üzerinden iletişime geçmeyiniz. 2.)Ücretsiz destek almak için forum sayfalarımızı kullanmanız aynı sorunu yaşayan diğer üyelerin cevaplara en kısa sürede ulaşabilmesi ve sizlere yardımcı olmak isteyen bizlerin ve diğer üyelerimizin zaman kazanmaları açısından çok önemlidir. 3.)Forumlarımızda sorunlarınızı anlatırken mümkün olduğunca çok detay vermeniz en kısa sürede sorununuza çözüm bulmanız açısından mühimdir. Daha çok öğrenmek ve öğretmek dileğiyle.. Sevgiler.. The Platform. |
|
#4
| ||||
| ||||
|
Bu komutlardan size tavsiye edebileceğim en kullanışlı olanları söyleyeyim, locate isim whereis isim whereis bana göre daha kullanışlı. |
|
#5
| |||
| |||
|
find hocam şaşmaz ![]() örnekğin bit shell tarayıcısının bulmadıgı bir shell i ben find le buluyorum ![]() Code: find /home/ -name "*".php -type f -print0 | xargs -0 grep http://sniper-sa.com |
|
#6
| |||
| |||
|
peki bulduklarını sildirmek istiyorum. Find and destroy ![]() Boyle bir komut mümkün mü? Yani home/ altında tüm müşterileirmin public_html kulasorlerinde istemediğim bir virus dosyası var adı sanı belli. Bunları buluyorum ama tek tek silmek zor oluyor. bunları topluca silebilirmiyiz Şimdiden teşekkürler |
|
#7
| |||
| |||
|
Buldum find / -name dosya.html -type f -ls -exec rm -f {} \; komutu ile bulunan dosyaları silebiliyormuşuz. Henuz -trpe f -ls -exec komutlaırnın işlevini tam anlamasam da komut işe yarıyor. Şimdi merak ettiğim şey şu html uzantılı dosyaları aramak istiyorum ama kaynak kodunda geçen bir komutu olanları buldurmak mümkün müdür. Yani içinde, kaynak kodunda XXX geçen tüm html dosyalarını aratabilirmiyim? Yoksa şansımı çok mu zorluyorum |
|
#8
| ||||
| ||||
|
type = tip ls = listele exec = çalıştır şeklinde gidiyor..
__________________ ----------------------------------------------------------------------------------------- >> LÜTFEN ÜCRETSİZ DESTEK TALEP ETMEK İÇİN MSN ADRESLERİMİZİ EKLEMEYİNİZ. HER TÜRLÜ ÜCRETSİZ DESTEK İÇİN FORUMLARIMIZI KULLANINIZ. TEŞEKKÜRLER << |
|
#9
| |||
| |||
| find / -name dosyaadı şeklinde aradığımızda zaten listeliyor ben sadece ekstradan -type f -ls komutları ne işe yarıyor onu merak ediyorum. |
![]() |
| Thread Tools | |
| Display Modes | |
| |




