8 Ocak 2015 Perşembe

Bash File Expansion

Giriş
bash kabuğu programlara parametre olarak verilen dosya isimlerin önce genişleterek bir liste haline getirir. Daha sonra programı bu liste ile çağırır. Liste haline getirme işlemine file expansion adı verilir.

Debug etmek
File expansion sonucunu görmek etmek için hem komut satırında hem de betiklerde set -x kullanılabilir. Şöyle bir betiğimiz olsun
$ cat script.sh
set -x
echo *
Çalıştırdığımızda echo komutunun hangi dosyalar ile çağrıldığını görebiliriz. Komutun başına + işareti konulur.
$ bash script.sh
+ echo file1 file2 file3 script.sh
file1 file2 file3 script.sh

Wildchard Expansion
* işareti ile olur. Örneğin ls * komutu çağırılınca bash dizindeki tüm dosyaları bulur ve ls komutunu
ls a b c şeklinde çağırır.

Globbing
bash expansion yaparken globbing işlemi için tanımlı kuralları uygular. Kurallar shopt komutu ile değiştirilebilir.

shopt
-s seçeneği
Bertilen özelliği etkinleştirir. Set anlamına gelir.

-u seçeneği
Bertilen özelliği kapatır. Unset anlamına gelir.

dotglob özelliği
Nokta ile başlayan dosyalar da file expansion listesine dahil edilir.
shopt -s dotglob
extglob özelliği
extended pattern mathing yapılarak expansion listesine dahil edilir. En çok işe yarayan "hariç" şeklinde kullanımıdır. Örnekte file.txt hariç tüm dosyalar silinir.
$ shopt -s extglob
$ rm !(file.txt)

Hiç yorum yok:

Yorum Gönder