logo

Bash Dosyaya Yazma

Bash kabuğunda herhangi bir komutu çalıştırdığımızda, genellikle o komutun çıktısını terminale yazdırır, böylece onu hemen okuyabiliriz. Ancak bash ayrıca herhangi bir bash komutunun çıktısını bir Günlük Dosyasına 'yönlendirme' seçeneği de sağlar. Çıktıyı bir metin dosyasına kaydedebilir, böylece daha sonra gerektiğinde inceleyebiliriz.

Yöntem 1: Çıktıyı Yalnızca Dosyaya Yazma

Bash komutlarının çıktısını bir dosyaya yazmak için dik açılı ayraç işaretini (>) veya çift dik açılı işaretini (>>) kullanabiliriz:

Sağ Köşeli Parantez İşareti (>)

Bash komutunun çıktısını bir disk dosyasına yazmak için kullanılır. Belirtilen isimde dosya yoksa aynı isimde yeni bir dosya oluşturur. Dosya belirtilen adla oradaysa, dosya içeriğinin üzerine yazılacaktır.

Çift Dik Açı İşareti (>>)

Bash komutlarının çıktısını bir dosyaya yazmak ve çıktıyı dosyanın mevcut içeriğine eklemek için kullanılır. Dosya mevcut değilse belirtilen adla yeni bir dosya oluşturur.

Teknik olarak, bu operatörlerin her ikisi de 'stdout'u (standart çıktı)' bir dosyaya yönlendirir.

Basitçe söylemek gerekirse, dosyayı ilk kez yazarken ve dosyada önceki verilerin bulunmasını istemediğimizde dik açılı ayraç işaretini (>) kullanmalıyız. Dosyada zaten mevcutsa içeriğin üzerine yazar. Ve sonraki komut dosyasında, verileri bir dosyaya eklemek için çift dik açı işaretini (>>) kullanabiliriz.

Örnek

'Ls' komutu, geçerli dizinde bulunan tüm dosya ve klasörleri yazdırmak için kullanılır. Fakat 'ls' komutunu dik açılı ayraç (>) işaretiyle çalıştırdığımızda dosya ve klasörlerin listesini ekrana yazdırmayacaktır. Çıktıyı kendisiyle birlikte belirlediğimiz dosyaya, yani aşağıda gösterildiği gibi kaydedecektir:

Bash Komut Dosyası

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Checking the content of the file gedit output_file.txt 

Çıktı

Bash Dosya Yazma

Burada gösterildiği gibi 'ls' komutunun çıktısı bir dosyaya yönlendirilir. Bir dosyanın içeriğini terminale yazdırmak için 'cat' komutunu aşağıdaki biçimde kullanabiliriz:

Bash Komut Dosyası

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Printing the content of the file cat $output 

Çıktı

Bash Dosya Yazma

Birden fazla komutun çıktısını mevcut verileri silmeden tek bir dosyaya yönlendirmek istiyorsak >> operatörünü kullanabiliriz. Sistem bilgisini belirtilen dosyaya eklemek istediğimizi varsayalım, bunu şu şekilde yapabiliriz:

Bash Komut Dosyası

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Appending the system information uname -a >> $output #Checking the content of the file gedit output_file.txt 

Çıktı

Bash Dosya Yazma

Burada ikinci komutun sonucu dosyanın sonuna eklenir.

strin'i int'ye dönüştür

Çıktıyı dosyanın sonuna eklemeye devam etmek için bu işlemi birkaç kez tekrarlayabiliriz.

Yöntem 2: Çıktıyı Normal Olarak Yazdırma ve Bir Dosyaya Yazma

Bazı kişiler > veya >> operatörlerini kullanarak bir dosyaya çıktı yazmayı sevmeyebilirler çünkü terminalde komutun çıktısı olmayacaktır. Bu nedenle 'tee' komutu kullanılır. 'Tee' komutu aldığı girdiyi ekrana yazdırmak için kullanılır. Çıktıyı aynı anda bir dosyaya kaydedebilir.

Bash Komut Dosyası

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls | tee $output 

Çıktı

Bash Dosya Yazma

Bu, tıpkı > operatörü gibi dosyanın içeriğini geçersiz kılacak, aynı zamanda çıktıyı ekrana yazdıracaktır.

Tee komutunu kullanarak dosyanın içeriğini kaldırmadan çıktıyı bir dosyaya yazmak istiyorsak, çıktıyı terminale de yazdıracak olan aşağıdaki formu kullanabiliriz:

Bash Komut Dosyası

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt echo '<<>>' | tee -a $output #Write data to a file ls | tee $output echo | tee -a $output #Append System Information to the file echo '<<>>' | tee -a $output uname | tee -a $output 

Çıktı

Bash Dosya Yazma

Bu, çıktıyı yalnızca dosyanın sonuna eklemekle kalmayacak, aynı zamanda çıktıyı ekrana da yazdıracaktır.