[Çözüldü] bash betiği ile bir dosya açma ve dosyanın en altına yazı ekleme

Başlatan edge35, 09 Mayıs 2017 - 13:58:35

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

edge35

Bash betiği ile istenilen dosyanın en altına ve ya istenilen yerine bir mein eklemek istiyorum. Bunu nasıl yapabilirim. Örneğin:

https://wiki.ubuntu-tr.net/index.php?title=Num_Lock%27un_a%C3%A7%C4%B1l%C4%B1%C5%9Fta_otomatik_a%C3%A7%C4%B1lmas%C4%B1n%C4%B1_sa%C4%9Flamak
Alıntı YapÖncelikle numlockx paketini kurunuz. Bu paketi Synaptic Paket Yöneticisi arayüzü üzerinden kurabileceğiniz gibi Uçbirim komut satırı ekranında alttaki komut yardımıyla da yükleyebilirsiniz.
    sudo apt-get install numlockx
    Ardından Uçbirim komut satırı ekranında alttaki komutu giriniz. Bu komutu girdiğinizde "lightdm.conf" isimli bir dosya, resimdeki gibi bir metin editöründe açılacaktır.
    gksudo gedit /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
    Açılan bu dosyada içeriğin altına alttaki kodu ekleyin.
    greeter-setup-script=/usr/bin/numlockx on
    Dosyayı kaydedip kapatın.
bu işlemi bir betik halinde nasıl yaparız.


Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)

mhmtkrktr

Ekleme yapılacak dosya için sudo gereksinimi varsa;
sudo bash -c 'echo "greeter-setup-script=/usr/bin/numlockx on" >>/usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf'
# veya
echo 'greeter-setup-script=/usr/bin/numlockx on' |sudo tee -a /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf

Normal kullanıcı izinleri yeterli olan bir dosya için;
echo 'greeter-setup-script=/usr/bin/numlockx on' >>$HOME/deneme1
# veya
echo 'greeter-setup-script=/usr/bin/numlockx on' | tee -a $HOME/deneme2


Warning : >> yerine > veya tee komutuna -a argümanı verilmezse dosya içeriği silinir ve yeni içerik eskinin üzerine yazılır.

Araya ekleme için, sed -i "ön_satır/a eklenecek kelime" /ekleme_yapılacak_dosya şeklinde kullanılabilir. Asıl soru bu değil sanırım, bunu örneklemiyorum.

edge35

Anladığım kadarıyla >> dosyanın sonunu mu belirtiyor yani? Başka bir şeye gereksinim duymadan?


Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)

mhmtkrktr

Hayır. >> ifasesi içeriğin yazılmak istendiği alana yönlendirileceği anlamına geliyor.
"Dosyanın sonuna" bu tarz işlemlerin zaten varsayılanı. Yani sed örneğinde olduğu gibi farklı bir ifade ile belirtilmedikçe dosyanın son kısmına eklenir.
İlave olarak, eklenecek kelimenin altında veya üstünde boş satır isteniyorsa \n veya \v (vertical) ifadesi kullanılabilir.
Örn: dosya sonuna 3 satır boşluk bırak, kelimeyi ekle, sonra iki satır daha boşluk bırak.
echo -e '\n\n\ngreeter-setup-script=/usr/bin/numlockx on\n\n' >>$HOME/deneme1
echo 'greeter-setup-script=/usr/bin/numlockx offff' >>$HOME/deneme1
xdg-open $HOME/deneme1

Sonuç daha açıklayıcı olacaktır.

Düzeltme: xdg-open kullanımdan kaldırılmış. Onun yerine gio open getirilmiş. Fakat iki defa üst üste komut vermeden çalışmıyor. Onun yerine kullandığın metin editörü ile açarsın. Örn: gedit $HOME/deneme1

edge35



Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)