Neler yeni
MEGAForum - Teknoloji Forumu

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

Kurduğum GNU-Linux İşletim Sistemlerinde İstisnasız Kullandığım "Bash Shell" Betikleri

TRWE_2012

لِيَغْفِرَ لَكَ اللّٰهُ مَا تَقَدَّمَ مِنْ ذَنْبِك
Moderatör
Konum
BERTUNA
  • Üyelik Tarihi
    2 Haz 2020
  • Mesajlar
    5,275
  • MFC Puanı
    15,970
Merhabalar

NOTLAR:

1.Bu açılan konu sürekli dinamik genişletilecektir.
2.Bugüne kadar kurduğum Gnu/Linux dağıtımların'da sık kullandığım ve faydasını gördüğüm betikler burada gösterilecektir.
3.Bash Shell bir programlama dilidir.Bunu mutlaka temel ana hatlarıyla öğrenmenizi tavsiye ederim.
4.Bash Shell dosyası ki dosya uzantısı .sh 'dir, çalıştırmak için terminal komut satırında şunu yapın.

Kod:
chmod +x 'herhangi_bir_isim.sh'  (+x , sh dosyasına çalıştırma yetkisi vermek için kullanılır.)

Ya da daha kolay olan , ilgili betik dosyasına sağ tıklayıp "Erişim Hakları" kartında (bölümünde) en alttaki Çalıştır tilkini işaretleyin.Bundan sonra açılan terminal komut satırına ilgili betiği sürükleyip bırakın , bu Windows Drag-Drog Yönetimdir.Teknik olarak, betiğin bulunduğu dizinde bir terminal açın ve komut satırına;
Kod:
bash / 'herhangi_bir_isim.sh'
yazıp enter tuşuna basın.

5.Bash Shell betiklerini boş bir metin editör sayfasına kopyalayıp yapıştır ile aktarın sonra, Menü'den Kaydet komutu ile;

Kod:
Dosya Adı : herhangi_bir_isim.sh
Dosya Türü : Tüm Dosyalar
şekilde masaüstüne kayıt edin


1.BASH SHELL BETİĞİ (GÜNCELLEME KOMUTLARINI OTOMATİKLEŞTİRMEK)

Kod:
#!/bin/bash
DEBIAN_FRONTEND=noninteractive
printf "\n\n-----** UPDATE **-----\n\n"
apt-get update
printf "\n\n-----** UPGRADE **-----\n\n"
apt-get upgrade -y
printf "\n\n-----** DIST-UPGRADE **-----\n\n"
apt-get dist-upgrade -y
printf "\n\n-----** AUTOREMOVE **-----\n\n"
apt-get autoremove -y
printf "\n\n-----** AUTOCLEAN **-----\n\n"
apt-get autoclean
DEBIAN_FRONTEND=interactive

ÖRNEK ÇIKTI:

gnu1.png

Kod:
ayamutura@notebookpc:/$ sudo -s bash /'Sistem_Güncelleştirme.sh'


-----** UPDATE **-----

Aynı:  1 http://download.opensuse.org/repositories/home:/stevenpusser/xUbuntu_18.04  InRelease                              
Aynı:  2 http://archive.ubuntu.com/ubuntu bionic InRelease                                                                  
Yoksay:3 http://packages.linuxmint.com tricia InRelease                                                                    
Aynı:  4 http://archive.canonical.com/ubuntu bionic InRelease                                                              
Aynı:  5 http://archive.ubuntu.com/ubuntu bionic-updates InRelease                                                          
İndir: 6 http://security.ubuntu.com/ubuntu bionic-security InRelease [88,7 kB]                                              
Aynı:  7 http://packages.linuxmint.com tricia Release                                                          
İndir: 8 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74,6 kB]        
13 sn.'de 163 kB alındı (13,1 kB/s)                                                                                        
Paket listeleri okunuyor... Bitti


-----** UPGRADE **-----

Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor      
Durum bilgisi okunuyor... Bitti    
Yükseltme hesaplanıyor... Bitti
0 paket yükseltilecek, 0 yeni paket kurulacak, 0 paket kaldırılacak ve 0 paket yükseltilmeyecek.


-----** DIST-UPGRADE **-----

Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor      
Durum bilgisi okunuyor... Bitti    
Yükseltme hesaplanıyor... Bitti
0 paket yükseltilecek, 0 yeni paket kurulacak, 0 paket kaldırılacak ve 0 paket yükseltilmeyecek.


-----** AUTOREMOVE **-----

Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor      
Durum bilgisi okunuyor... Bitti    
0 paket yükseltilecek, 0 yeni paket kurulacak, 0 paket kaldırılacak ve 0 paket yükseltilmeyecek.


-----** AUTOCLEAN **-----

Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor      
Durum bilgisi okunuyor... Bitti    
ayamutura@notebookpc:/$
 

TRWE_2012

لِيَغْفِرَ لَكَ اللّٰهُ مَا تَقَدَّمَ مِنْ ذَنْبِك
Moderatör
Konum
BERTUNA
  • Üyelik Tarihi
    2 Haz 2020
  • Mesajlar
    5,275
  • MFC Puanı
    15,970
2.BASH SHELL BETİĞİ (SİSTEMİN YÜKSEK RAM KULLANIMINI AŞAĞIYA ÇEKMEK)

Not:


Bu betiğin yararı , kullanılmayan ram bloklarını sisteme tekrar geri verir.Böylece ram slotları aşırı ısınmaz ve aşınmaz.Bunu Windowslar için yazılan ram temizleme araçlarına benzetebilirsiniz.

Kod:
#!/bin/bash
## Bash Script to clear cached memory on (Ubuntu/Debian) Linux
## By Philipp Klaus
## see <http://blog.philippklaus.de/2011/02/clear-cached-memory-on-ubuntu/>

if [ "$(whoami)" != "root" ]
then
  echo "You have to run this script as Superuser!"
  exit 1
fi

# Get Memory Information
freemem_before=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_before=$(echo "$freemem_before/1024.0" | bc)
cachedmem_before=$(cat /proc/meminfo | grep "^Cached" | tr -s ' ' | cut -d ' ' -f2) && cachedmem_before=$(echo "$cachedmem_before/1024.0" | bc)

# Output Information
echo -e "This script will clear cached memory and free up your ram.\n\nAt the moment you have $cachedmem_before MiB cached and $freemem_before MiB free memory."

# Test sync
if [ "$?" != "0" ]
then
  echo "Something went wrong, It's impossible to sync the filesystem."
  exit 1
fi

# Clear Filesystem Buffer using "sync" and Clear Caches
sync && echo 3 > /proc/sys/vm/drop_caches

freemem_after=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_after=$(echo "$freemem_after/1024.0" | bc)

# Output Summary
echo -e "This freed $(echo "$freemem_after - $freemem_before" | bc) MiB, so now you have $freemem_after MiB of free RAM."

exit 0

ÖRNEK EKRAN GÖRÜNTÜSÜ VE KOD ÇIKTISI

ram temizleme.png

ÇIKTI :

Kod:
ayamutura@notebookpc:/$ sudo -s bash /'Ram Temizleme.sh'
This script will clear cached memory and free up your ram.

At the moment you have 712 MiB cached and 743 MiB free memory.
This freed 363 MiB, so now you have 1106 MiB of free RAM.
ayamutura@notebookpc:/$ sudo -s bash /'Ram Temizleme.sh'
This script will clear cached memory and free up your ram.

At the moment you have 387 MiB cached and 1103 MiB free memory.
This freed 3 MiB, so now you have 1106 MiB of free RAM.
ayamutura@notebookpc:/$ sudo -s bash /'Ram Temizleme.sh'
This script will clear cached memory and free up your ram.

At the moment you have 387 MiB cached and 1105 MiB free memory.
This freed 1 MiB, so now you have 1106 MiB of free RAM.
ayamutura@notebookpc:/$ sudo -s bash /'Ram Temizleme.sh'
This script will clear cached memory and free up your ram.

At the moment you have 401 MiB cached and 1079 MiB free memory.
This freed 13 MiB, so now you have 1092 MiB of free RAM.
ayamutura@notebookpc:/$ sudo -s bash /'Ram Temizleme.sh'
This script will clear cached memory and free up your ram.

At the moment you have 396 MiB cached and 1091 MiB free memory.
This freed 2 MiB, so now you have 1093 MiB of free RAM.
ayamutura@notebookpc:/$
Kod:

Bu çıktı da ;

At the moment you have 396 MiB cached and 1091 MiB free memory.
This freed 2 MiB, so now you have 1093 MiB of free RAM.

ifadesinin Türkçe Tercümesi ;

Şu anda önbelleğe alınmış 396 MiB ve 1091 MiB boş belleğiniz var.
Bu işlem 2 MiB'yi serbest bıraktı, yani şimdi 1093 MiB boş RAM'e sahipsiniz. demektir.

 

TRWE_2012

لِيَغْفِرَ لَكَ اللّٰهُ مَا تَقَدَّمَ مِنْ ذَنْبِك
Moderatör
Konum
BERTUNA
  • Üyelik Tarihi
    2 Haz 2020
  • Mesajlar
    5,275
  • MFC Puanı
    15,970
3.BASH SHELL BETİĞİ (TÜM GNU-LINUX'LARDA "find" KOMUTUNUN ARAYÜZ PYTHON BETİĞİ OLARAK KULLANMA)

Not:

Bunu Windowslar'daki Arama Kutucuğuna benzetebilirsiniz.

Önce mini Python modül paketini depolardan yüklüyoruz sistemimize....

ÖRNEK EKRAN GÖRÜNTÜSÜ VE KOD ÇIKTISI:

find1.png

Kod:
ayamutura@notebookpc:~/Masaüstü$ su -
Parola:
root@notebookpc:~# apt-get install the python3-tk
Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor       
Durum bilgisi okunuyor... Bitti     
the zaten en yeni sürümde (3.3~rc1-3).
python3-tk zaten en yeni sürümde (3.6.9-1~18.04).
0 paket yükseltilecek, 0 yeni paket kurulacak, 0 paket kaldırılacak ve 0 paket yükseltilmeyecek.
root@notebookpc:~# logout
ayamutura@notebookpc:~/Masaüstü$

Not:

Eğer bu paketi kurmadan betiği çalıştırmaya kalkarsanız bu aşağıdaki hata çıktısını alırsınız

Kod:
'/find Komutunu GUI Olarak Kullanın.sh'
Traceback (most recent call last):
  File "/usr/lib/python3.4/tkinter/__init__.py", line 39, in <module>
    import _tkinter
ImportError: No module named '_tkinter'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/find Komutunu GUI Olarak Kullanın.sh", line 3, in <module>
    import os , subprocess , tkinter
  File "/usr/lib/python3.4/tkinter/__init__.py", line 41, in <module>
    raise ImportError(str(msg) + ', please install the python3-tk package')
ImportError: No module named '_tkinter', please install the python3-tk package

Bu hata çıktısında 39.satırda pyhton'un bir modüle çağrısının olumsuz olarak (ImportError: No module named '_tkinter') geri döndüğünden bahsedilmiş ve hatanın önlenmesi için pyhton paket modül dosyasının yüklenmesi önerilmiş (ImportError: No module named '_tkinter', please install the python3-tk package) pc kullanıcısına....

Sonra bu aşağıda verilen betiği boş bir metin editörüne kopyala-yapıştır ile aktarın ve dosyanın ismini kendinize göre belirleyin.Mesela find Komutunu GUI Olarak Kullanın.sh olacak şekilde dosya uzantısı .sh olarak kayıt edip bunu root olarak açılmış dosya yöneticisinde /(root) dizinin içine kes-yapıştır ile taşıyın.Sonra terminalden dosyanın izinlerini birinci mesaj'da anlatıldığı gibi yapın (NOTLAR bölümünde)

Kod:
#!/usr/bin/python3

import os , subprocess , tkinter
from tkinter import *

from  tkinter.filedialog   import   askdirectory
from  tkinter   import   scrolledtext

def klasorSec():

    folder = askdirectory(initialdir="/home/aspa", title='Klasor Secin')

    isim=str(folder)
    print(isim)

    klasorAl.insert(0,isim)

def ara():
    klasor=klasorAl.get()
    dosyaAdi=isimAL.get()

    yol2='find '+klasor+ ' -name' + " '"+dosyaAdi+"'"

    a=subprocess.check_output([yol2],shell=True)

    metin.insert(END, a.decode())

    #print(a.decode())

pencere = Tk()
pencere.title("DOSYA  ARA")
pencere.geometry("570x450")
pencere.resizable(False, False)

etiket = Label(text="Konum Sec ", fg="magenta", bg="light green")
etiket.place(x=5, y=5, width=80, height=30)

klasorAl = Entry(pencere)
klasorAl.place(x=100, y=5, width=350, height=30)

btn = Button(text="Dizin Sec ", bg="orange", fg="navy", command=klasorSec)
btn.place(x=470, y=5 ,width=90, height=30)

etiket2 = Label(text="Dosya İsmi Gir ", fg="magenta", bg="light green")
etiket2.place(x=5, y=50, width=80, height=30)

isimAL = Entry(pencere)
isimAL.place(x=100, y=50, width=350, height=30)

btn2 = Button(text="ARA", bg="orange", fg="navy", command=ara)
btn2.place(x=470, y=50 ,width=90, height=30)

metin= Text()
metin.place(x=5, y=100, width=560, height=345)
metin.focus_set()

scroller = Scrollbar(pencere)
scroller.place(x=550, y=415)

Masaüstünde bir başlatıcı dosyası oluşturun (boş bir metin editörü açın)

Kod:
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=mate-panel-launcher
Icon[tr]=mate-panel-launcher
Exec=/'find Komutunu GUI Olarak Kullanın.sh'
Name[tr]=Dosya Arama
Name=Dosya Arama
olarak dosya uzantısı .desktop olacak şekilde masaüstüne kayıt edin ve özelliklerden Çalıştır olarak işaretleyin.


Icon=mate-panel-launcher
Icon[tr]=mate-panel-launcher ifadesinde kendiniz bir ikon adı girin.

SONUÇ:

find2.png



 

TRWE_2012

لِيَغْفِرَ لَكَ اللّٰهُ مَا تَقَدَّمَ مِنْ ذَنْبِك
Moderatör
Konum
BERTUNA
  • Üyelik Tarihi
    2 Haz 2020
  • Mesajlar
    5,275
  • MFC Puanı
    15,970
4.BASH SHELL BETİĞİ (HERHANGİ BİR KONUMDAKİ DOSYALARIN TOPLAM BOYUTUNU , DOSYA TÜRÜNE GÖRE HESAPLAYAN BETİK)

Kod :


Kod:
#!/bin/bash
find -type f -name \*\.\* -printf '%f\0%s\n' | gawk '
BEGIN {
  FS = "\0";
}
{
  split($1, a, ".");
  ext = tolower(a[length(a)]);
  files[ext] += 1;
  size[ext] += $2;
}
END {
  PROCINFO["sorted_in"] = "@ind_str_asc";
  for (ext in files) {
    cmd = "numfmt --grouping " files[ext]
    cmd | getline neatfiles
    close(cmd)
    cmd = "numfmt --to=iec-i --suffix=B --format='%.1f' " size[ext]
    cmd | getline neatsize
    close(cmd)
    print "*." ext " " neatfiles " (" files[ext] ") files, " neatsize " (" size[ext]")";
  }
}'

EKRAN GÖRÜNTÜSÜ :

TDB.png

Ekran görüntüsündeki birinci parantez içindeki sayısal değer o dosya türündeki dosya sayısını, ikinci parantez içindeki değer ise MB (MİB) 'ın Bayt karşılığıdır.
 

Ekli dosyalar

  • TDB.png
    TDB.png
    158.1 KB · Görüntüleme: 0

TRWE_2012

لِيَغْفِرَ لَكَ اللّٰهُ مَا تَقَدَّمَ مِنْ ذَنْبِك
Moderatör
Konum
BERTUNA
  • Üyelik Tarihi
    2 Haz 2020
  • Mesajlar
    5,275
  • MFC Puanı
    15,970
: ))

basim döndü ya ; ))

kod kod kod linux diye @Ayamutura

ellerine saglik , cok basarili anlatimlar : )
GNU/Linux İşletim Sisteminin gücü buradan geliyor.Terminali az buçuk (öyle uzman filan değil) dans ettiren, sistemindeki sorunların üstesinden çok rahat gelir.Zaten linux işletim sisteminin sevilmemesinin altında bu terminal ve kod zorunluluğu vardır.

Oysa Windows İşletim Sisteminde kodlar arka planda kalmıştır.Kullanıcı bir dosya silerken/oluştururken bunlara ait işlemler arka plan da gizli süper kullanıcı Trusted Installer tarafından yürütülür.Siz bunu Windows Görev Yöneticisinde İşlemler sekmesindeki SYSTEM Kullanıcısından anlarsınız.

Eskiden Windows 95-98 çıktığı yıllarda sistem kurmak lüsks idi.Elimizde 20'den fazla disket ile (şimdi ki nesil disketin ne olduğunu bilmez) birinci disket sürücüye yerleştir, ms-dos ekranından tek tek komutları elle gir (öyle kopyala-yapıştır 'da yok) komutun sonuna gelince diğer disketi tak, tekrar komut gir, böyle böyle sabah saat 09.00 başlayan sistem kurma öğleden sonra 13.00'de biterdi.(eğer disketleri karıştırıp hata yapmadığı isen) Sonra işin çançanlı bölümüne gelirdik, ekran kartı için ayrı sürücü disketi, ses için Sound Blaster sürücü disketi.... derken akşam'a doğru saat 17.00'da sistem hazır olurdu.

Şimdi ki nesil gerçekten çok şanslı .....
 

DarkWoman

MFC Üyesi
Konum
Germany
  • Üyelik Tarihi
    27 Kas 2019
  • Mesajlar
    13,326
  • MFC Puanı
    58,692
GNU/Linux İşletim Sisteminin gücü buradan geliyor.Terminali az buçuk (öyle uzman filan değil) dans ettiren, sistemindeki sorunların üstesinden çok rahat gelir.Zaten linux işletim sisteminin sevilmemesinin altında bu terminal ve kod zorunluluğu vardır.

Oysa Windows İşletim Sisteminde kodlar arka planda kalmıştır.Kullanıcı bir dosya silerken/oluştururken bunlara ait işlemler arka plan da gizli süper kullanıcı Trusted Installer tarafından yürütülür.Siz bunu Windows Görev Yöneticisinde İşlemler sekmesindeki SYSTEM Kullanıcısından anlarsınız.

Eskiden Windows 95-98 çıktığı yıllarda sistem kurmak lüsks idi.Elimizde 20'den fazla disket ile (şimdi ki nesil disketin ne olduğunu bilmez) birinci disket sürücüye yerleştir, ms-dos ekranından tek tek komutları elle gir (öyle kopyala-yapıştır 'da yok) komutun sonuna gelince diğer disketi tak, tekrar komut gir, böyle böyle sabah saat 09.00 başlayan sistem kurma öğleden sonra 13.00'de biterdi.(eğer disketleri karıştırıp hata yapmadığı isen) Sonra işin çançanlı bölümüne gelirdik, ekran kartı için ayrı sürücü disketi, ses için Sound Blaster sürücü disketi.... derken akşam'a doğru saat 17.00'da sistem hazır olurdu.

Şimdi ki nesil gerçekten çok şanslı .....

Windows kullanmiyorum ben , uzun zamandir MacOs : ))
 

DarkWoman

MFC Üyesi
Konum
Germany
  • Üyelik Tarihi
    27 Kas 2019
  • Mesajlar
    13,326
  • MFC Puanı
    58,692
Hatta 5 sene sonra ( hata ama ) clean my mac çalıltırdım ( malware) yüzünden.
Bing çıkıyor diye : )

7 dakika sürmedi komple mac’i temizledi.

Wimdows da : ) çalışmıyor du bi başladımı hatırlıorumda ..

Günümüzde halen windows lap topu duvara fırlatanlar var , format yese bile düzelmiyor die..
 

TRWE_2012

لِيَغْفِرَ لَكَ اللّٰهُ مَا تَقَدَّمَ مِنْ ذَنْبِك
Moderatör
Konum
BERTUNA
  • Üyelik Tarihi
    2 Haz 2020
  • Mesajlar
    5,275
  • MFC Puanı
    15,970
Linux'da bir uygulamayı başlangıçta çalıştırmak için aşağıdaki bash shell betiğini kullanın.Arayüz türkçeleştirmesi tarafımdan yapılmıştır.

Kod:
#! /bin/bash

config_dir=${XDG_CONFIG_HOME:-$HOME/.lightdm}
results=$(mktemp --tmpdir lightdm.XXXXXXXXXX)

for f in $HOME/.lightdm; do
    grep -m 1 -e '^[[:blank:]]*Exec' $f | cut -d = -f 2
    grep -m 1 -e '^[[:blank:]]*Name' $f | cut -d = -f 2
    grep -m 1 -e '^[[:blank:]]*Comment' $f | cut -d = -f 2
done | yad --entry --image=mate-run --window-icon=mate-run --width=500 --title="Başlangıçta çalıştır" --center --text="Başlangıçta çalıştırmak istediğiniz komutu girin ve Tamam'a tıklayın." > $results
if [[ ${PIPESTATUS[1]} -eq 0 ]]; then
cat $results | while read line; do
eval $(echo $line | awk -F'|' '{printf "export NAME=\"%s\" COMMENT=\"%s\" COMMAND=\"%s\"", $2, $3, $1}')
echo "$COMMAND &" >> $HOME/.lightdm/script/start.sh
    $((i++))
    done
    unset NAME COMMENT COMMAND
fi

exit 0

Notlar:

1.Kullandığınız masaüstüne göre kullanıcı dizininde başı nokta ile başlayan bir dizin oluşturun.Mesela .lightdm gibi....
2..lightdm ile başlayan ifadeleri kullandığınız pencere yöneticisinin komutsal adı ile değiştirin.Mesela .lxdm gibi....
3.
Kod:
done | yad --entry --image=mate-run --window-icon=mate-run --width=500 --title="Başlangıçta çalıştır" --center --text="Başlangıçta çalıştırmak istediğiniz komutu girin ve Tamam'a tıklayın." > $results
satırınındaki mate ifadelerini kullandığınız masaüstü ortamının komutsal adı ile değiştirin.Yukarıdaki örnek mate 'ye kurgulanmıştır.

SONUÇ:

7UTd53.png
 
Son düzenleme:
Üst Alt