10
Konuya ait anahtar kelimeler : Unix/Linux değişken tanımlama, unset, cat, >, >> Unix/Linux sistemlerde değişken tanımlama aşağıdaki gibi olmaktadır. degisken1="kırmızı" degisken2="1337" Tanımlanan değişkenenlerin değerlerine değişken adının önüne dolar işareti "$" koyarak ulaşabiliriz. $degisken1, $degisken2. Örnek :
[alax@alax ~]$ degisken1="kırmızı" [alax@alax ~]$ echo $degisken1 kırmızı [alax@alax ~]$ degisken2="1337" [alax@alax ~]$ echo $degisken2 1337 [alax@alax ~]$
Gördüğünüz gibi durum bundan ibaret. Tabi bazı kurallar dahilinde olması gerekiyor.
  • Değişken adları alfanumeric karakterler([aA..zZ]) ile yada alt çizgi (_) başlamalıdır. Örn: degisken, for2,abs,adc35, _DEG1, _VAR1 vb..
  • Değişken adları alfanumeric karakter yada alt çizgi yada rakam içerebilir. Başka karakter içeremezler.
  • Değişken tanımlandığı zaman eşittir simgesinin sağında ve solunda boşluk olmamalıdır.
  • Değişken adları küçük-büyük harfe duyarlıdır. ahmet ile AHMET yada Ahmet vb.. birbirinden farklıdır.
Aşağıdaki örnekler yanlış kullanıma aittir.
[alax@alax ~]$ 3abcd= "değer 1" [alax@alax ~]$ -deigsken="değer 2" [alax@alax ~]$ $degisken="değer 3" [alax@alax ~]$ #degisken = "değer4" [alax@alax ~]$
Yukarıdaki örnekler yanlıştır. Bu şekilde herhangi bir değişken tanımlayamazsınız. Doğru değişken tanımlama.
[alax@alax ~]$ abcd3="değer 1" [alax@alax ~]$ echo $abcd3 değer 1 [alax@alax ~]$ _DEGISKEN="değer 2" [alax@alax ~]$ echo $_DEGISKEN değer 2 [alax@alax ~]$
Not : Unix/Linux sistemlerinin kendilerine özgü değişkenleri bulunmaktadır(HOME, USER,PATH vb..). Kesinlikle değişken tanımlarken bu isimleri kullanmayınız. unset : Tanımlanmış olan değişkenlerin değerlerinin sıfırlanması, tanımsız hale getirilmesi için kullanılır. Herhangi bir değişken tanımsızlandırılacağı zaman değişken adı kullanılır. Mesela, tanımlanmış olan _VAR adlı değişken, tanımsız yapılacağı zaman _VAR değişken adı kullanılır. $_VAR kullanılmaz.
[alax@alax ~]$ degisken=beyaz [alax@alax ~]$ echo $degisken beyaz [alax@alax ~]$ unset degisken [alax@alax ~]$ echo $degisken [alax@alax ~]$
Çift tırnaklar arasında yazılan değişken adları($degisken vb..), değişken olarak algılanıp değişkenin değeri işleme tabi tutulur. Tek tırnak arasında yazılan değişken adları($degişken vb..) değişken olarak ALGILANMaZ. Şimdi bu örnekleri uygulayalım.
[alax@alax ~]$ _degisken1="Merhaba Dünya" [alax@alax ~]$ echo "$_degisken1" Merhaba Dünya [alax@alax ~]$ echo '$_degisken1' $_degisken1 [alax@alax ~]$
Yukarıda tek tırnaklar arasına yazılan ifadelerin hepsi oldukları gibi yazılır. Bazı yazım yolları:
[alax@alax ~]$ echo " "Merhaba Dünya" " Merhaba Dünya [alax@alax ~]$ echo ' "Merhaba Dünya" ' "Merhaba Dünya" [alax@alax ~]$ echo ' 'Merhaba Dünya' ' Merhaba Dünya [alax@alax ~]$ echo " 'Merhaba Dünya' " 'Merhaba Dünya' [alax@alax ~]$
Gördüğünüz üzere, çift tırnak arasında çift tırnak, tek tırnak arasında tek tırnak yazamıyoruz. Tek tırnak yazabilmek için ifadeyi çift tırnak arasına yada çift tırnak yazabilmek için ifadeyi tek tırnak arasına almamız gerekiyor. Fakat tek tırnak arasında değişken kullanmış olsaydık, bu sefer değişkenin değerini değilde adını yazmış olacaktık. Bu gibi durumların çözümü ise "\" ters eğik çizgidir. Bu çizgiyi yazılmasını istediğimiz tek tırnak yada çift tırnaktan önce kullanıyoruz. Şimdi çift tırnaklar arasında çift tırnak olan bir kelime yazalım. Önce eğik çizgi kullanmadan yapalım. Sonra eğik çizgi ile deneyelim.
[alax@alax ~]$ echo " "penguen" " penguen [alax@alax ~]$ echo " \"penguen\" " "penguen" [alax@alax ~]$
Yukarıdaki örneğin geçerlilik durumu tek tırnak içinde olacaktır. cat : Dosya içeriğini okuma ve çıktı olarak verme komutu. Mesela siz Shell ekranında bir text dosyasını okumak isterseniz o zaman; cat dosya_adi şeklinde yazdığınız zaman , Terminal ekranınıza, dosya içeriği okunup çıktı olarak yazılacaktır. > : Tek büyüktür işareti. Eğer bir dosyaya veri eklemek için kullanıyorsak, eklenecek olan dosyanın içeriğini sıfırlayarak, eklemek istediğimiz veriyi ekler. Bu yüzden ne zaman kullanacağınıza iyi karar vermelisiniz. Şimdi tux klasörü içerisinde bir adet "alias" adında dosya oluşturalım ve içerisine veri ekleyelim. Daha sonra "cat" komutu ile dosya içeriğini okuyalım.
[alax@alax tux]$ ls Merhaba Dünya penguen.txt script [alax@alax tux]$ echo "Malcolm X" > alias [alax@alax tux]$ ls alias Merhaba Dünya penguen.txt script [alax@alax tux]$ cat alias Malcolm X [alax@alax tux]$
Şimdi aynı dosyaya "El-Hacı Malik El-Şahbaz" de ismini ekleyelim ve dosya içeriğini yazdıralım.
[alax@alax tux]$ echo "El-Hacı Malik El-Şahbaz" > alias [alax@alax tux]$ cat alias El-Hacı Malik El-Şahbaz [alax@alax tux]$
Gördüğünüz gibi dosyaya eklediğimiz ilk isim(Malcolm X) ismi yok oldu ve sadece en son eklediğimiz isim kaldı. Tek büyüktür ile veri ekleme işlemi böyle olmaktadır. Eğer dosya var ise, önce dosya içeriği silinir ardından veri eklenir eğer dosya yok ise oluşturulur. >> : Çift büyüktür işareti. Veri eklenmek istenilen dosya yok ise, tek büyük işareti gibi dosyayı oluşturup içerisine veriyi ekler, eğer dosya mevcut ise içeriğini silmeden en son satırına veriyi ekler. Şimdi dosyamıza tekrardan "Malcolm X" adını ekleyelim.
[alax@alax tux]$ echo "Malcolm X" >> alias [alax@alax tux]$ cat alias El-Hacı Malik El-Şahbaz Malcolm X [alax@alax tux]$
Gördüğünüz gibi iki isimde dosyada mevcut. Şimdi dosya içeriğini değiştirmeden içerisine birde kullanıcı adımızı ekleyelim.
[alax@alax tux]$ echo "$USER" >> alias [alax@alax tux]$ cat alias El-Hacı Malik El-Şahbaz Malcolm X alax [alax@alax tux]$
Değişken kullanımını ileriki derslerimizde daha derinlemesine işleyeceğiz. Bu arada "touch" komutunun daha kısa bir kullanımını öğrenmiş olduk.
[alax@alax tux]$ touch dosya
Komutu ile
[alax@alax tux]$ > dosya
komutu aynı işlemi yapacaktır.