Saturday, 22 October 2011

Bash ile Birçok Dosyanın İsmini Değiştirmek


Eğer bash kullanıyorsanız ve birçok dosyanın ismini bir komut ile değiştirmek istiyorsanız farklı farklı  ihtiyaçlarınız olabilir. Burada sadece bul/değiştir (find/replace) ile yapılabilecek tekniği göstermeye çalışacağım.

Bir kaç gün önce bir klasör altındaki bir çok dosyanın ismini değiştirmem gerekti. Gereklilik bul/değiştir (find/replace) gibi olsa çok hoş olurdu. Araştırmalarım sonucunda aşağıdaki gibi bir örneğe ulaştım.


for i in *; do j=`echo $i | sed 's/find/replace/g'`; mv "$i" "$j"; done

Kısım kısım ele alalım; 

for i in *;

Bu satır bulunduğunuz klasör altındaki tüm dosyalara işlemi yapacağınızı gösteriyor. Örneğin sadece txt uzantılı dosyalara işlem uygulayacaksanız

for i in *.txt; 

şeklinde olması gerekir. 

do j=`echo $i | sed 's/find/replace/g'`;

Aranacak ve yerine yapıştırılacak bilgiyi yukarıdaki satırda belirliyorsunuz. Satırdaki 'find' yazan yere aranacak yazıyı, 'replace' yazan yere de yerine yapıştırılacak yazıyı yazmanız gerekir. 

mv "$i" "$j"; done

Yukarıdaki satırda da kalsik 'mv' komutu kullanılarak eski dosya ismi ile yeni dosya ismi değiştirilmektedir. 

Sonuç olarak dikkat edilmesi gereken iki nokta var. Birincisi '*' karakterinin gerekiyorsa modifiye edilmesi, ikincisi ile aranacak ve yerine yapıştırılacak yazıların eklenmesi. 

Kendi örneğimden konuşacak olursam tüm dosyalarımın içindeki '_a' yazısını '_c' ile değiştirmem gerekiyordu. 

for i in *; do j=`echo $i | sed 's/_a/_c/g'`; mv "$i" "$j"; done

Yukarıdaki kullanım tam istediğim sonucu almama neden oldu. 

Değerli dosyalarınıza uygulamadan önce ya bir yedeğini alın ya da başka dosyalar üzerinde deneyerek gerçekten istediğiniz sonucu aldığınızdan emin olun ve sonra işlemi yapın. Sonra çok üzülmek olası ;) 

Volkan Özyılmaz

Sunday, 16 October 2011

GPG ile Vim'in Harika Birleşimi

Bir süre önce gpg isminde harika bir şifreleme sistemi kullanmaya başladım. Bu sistem verilerimizi bizim veya başkalarının bizim adımıza rahatça şifreleyebileceği fakat yalnızca bizim açabileceğimiz bir yapıya sahip.

Bir süredir bazı yazılarımı şifreleyip saklamayı düşünüyordum fakat bir sorun vardı, işin hammaliyesi büyüktü. Her seferinde dosyayı gpg ile açmam daha sonra istediğim değişiklikleri yaptıktan sonra tekrar şifrelemem gerekiyordu. Ardından şifresiz dosyayı silme işlemi de cabası (ki biliyorsunuz o dosyaya istenildiğinde silmiş olsanız dahi ulaşılabiliyor).

Yazılarının bazılarını vim editöründe yazan biri olarak harika bir çözüm buldum. Benim rahatsız olduğum bu hammaliye işlerini vim için ortadan kaldırmak mümkün. Tek yapmanız gereken

http://www.vim.org/scripts/script.php?script_id=3645

bu adrese gidip plugin'i indirmek ve kurmak. Adım adım kurulumu Mac OS X için yazıyorum.


  1. Spotlight'a Terminal yazarak bir adet terminal konsolu açın. 
  2. Eğer değilseniz

    cd ~/

    komutu ile ev (home) dizinine gidin. 
  3. Eğer daha önceden oluşturmadıysanız önce

    mkdir .vim

    komutu ile .vim klasörünü sonra

    mkdir .vim/plugin

    komutu ile plugin klasörünü oluşturun. 
  4. İndirdiğiniz gnupg.vim dosyasını (dosyanın Downloads klasöründe olduğunu varsayıyorum)

    cp ~/Downloads/gnupg.vim ~/.vim/plugin/

    komutu ile kopyalayın. 
  5. ~/.profile dosyanıza

    GPG_TTY=`tty`
    export GPG_TTY

    satırlarını ekleyin. 
Artık gpg ile vim kullanımınıza hazır. Aşağıdaki komutlar ile test edelim. 

touch test.txt.gpg
vim test.txt.gpg

İstediğiniz bilgileri dosyanın içine ekleyin. 

:wq

komutu ile vim'den çıkın. 

cat test.txt.gpg

komutu ile şifreli halini görebilirsiniz. 

Volkan Özyılmaz