Etiket Arşivi bash scripting

bash script rm no such file or directory

Normalde rm ile komut istemcisinden silebildiğim dosyaları bash script ile silmeye çalıştığımda bu hata ile karşılaştım. Aşağıdaki şekilde script’te değişiklik yaptıktan sonra sorun halloldu.

#!/bin/bash

file_dir=$1
rm -rf $file_dir"subject"*

Burada dikkat edilmesi gereken husus subject’in yanında bulunan ‘*’ karakteri. Öncesinde bu karakter tırnağın içerisindeyken bunu dışarı çıkardığımda sorun kalmadı. Bu komutu ise aşağıdaki şekilde çalıştırıyorum.

bash clean.sh /home/nuh/temp/
(30.04.2019 tarihinden itibaren toplam 9 kez, bugün 1 kez ziyaret edildi. )

bash scripting: Argument list too long error for rm

Bir dizindeki tüm alt klasörler içinde bulunan ve adı align_ ile başlamayan bütün dosyaları silmek istiyordum. Bu işlemi rm */!(align_*) kodu ile yapabiliyorum fakat klasör ve dosya sayısı çok fazla olduğundan dolayı Argument list too long hatası aldım. Bunu çözmek için de aşağıdaki bash scripti hazırladım. Buna benzer bir sorunla karşılaşmışsanız aşağıdaki kodu kendinize göre düzenleyerek kullanabilirsiniz.

#!/bin/bash

for filename in */*; do
	if [[ $filename != *align_* ]]
	then
		rm $filename
	fi
done

 

 

(30.04.2019 tarihinden itibaren toplam 7 kez, bugün 1 kez ziyaret edildi. )

Linux: cp komutu omitting directory hatası

Bilindiği gibi cp komutu klasör yada dosya kopyalamak için kullanılıyor. Klasör kopyalarken bu hatayı alıyorsanız recursive anlamındaki -r komutunu eklemelisiniz. Böylece klasörü içindeki tüm dosyalarla birlikte kopyalayacaktır.

Gel gelelim bu hatayı çoklu dosya kopyalarken de alabilirsiniz. Örnek olarak

cp sample.txt /home/user/Desktop/*0/

komutunu çalıştırmaya çalıştığınızda birden fazla klasöre dosya kopyalaması gerekiyor ama cp komutu bu işlemi gerçekleştirmeye izin vermiyor. Peki buna çözüm olarak ne yapacağız. Ben küçük bir bash scriptiyle sorunu halletim. Aşağıdaki scriptte döngü ve cp komutunun bulunduğu satırda ilgili değişiklikleri yaparak bu sorunu halledebilirsiniz.

#!/bin/bash

for i in {20..100..10}
 do
 cp sample.txt /home/user/Desktop/$i/ 
 done
(30.04.2019 tarihinden itibaren toplam 65 kez, bugün 1 kez ziyaret edildi. )