Linux Shell/Bash Script Eğitimi – En Çok Kullanılan Komutlar

Linux Shell/Bash Script Eğitimi

Linux dünyasında kullanılabilecek yüzlerce komut vardır. Fakat günlük hayatta bunların çoğunu kullanmayız, sadece özel ihtiyaç durumlarında kullanırız. Bu sebeple eğitim serisinde olabildiğince hızlıca linux shell/bash scripting konusuna girişi ve en çok kullanılan komutları sizlere öğretmeyi hedefledim. Konuları olabildiğince sade ve yeri geldikçe gündelik örneklerle açıklayarak anlatmaya çalıştım. Eğitimlerde kullandığım komutların notlarını da aşağıda paylaşmaya çalıştım.

Dosya ve Klasör Listeleme İşlemleri

# PARAMETRESİZ KULLANIM

ls                  # Salt olarak kullanıldığında aktif klasördeki dosya ve klasörleri listeler. 
ls Masaüstü         # Bu komutla aktif klasördeki Masaüstü klasörünün içeriği görüntülenir.
ls ..               # Bu komutla bir üst klasörün içeriği listelenir.
ls ../*.htm         # Bu komutla bir üst klasördeki uzantısı htm olan dosyalar listelenir.
ls ~                # Bu komutla home dizininizin içeriği görüntülenir.
ls ../../../bin/    # Masaüstü dizininden üc dizin üste çıkıp bin klasörünün içerisindekileri listeler.
ls deneme.htm       # Bu komutla aktif klasördeki deneme.htm dosyası listelenir.
ls a??b?.txt        # 5 Harfli olan ilk harfi a 4. harfi v olan ve uzantısı txt olanları listeler 

# PARAMETRELİ KULLANIM


ls -l Masaüstü      # Masaüstündeki tüm dosyaları ayrıntılarıyla listeler.
ls -a               # gizli dosya ve klasörleri de göstermesini sağlar. Linux'ta gizli dosya ve klasörler . (nokta) karakteriyle başlar. 
# NOT: Linux, her yeni klasör oluşturulduğunda ilgili klasöre otomatik olarak . ve .. gizli klasörlerini yerleştirir. Bu klasörler tahmin edebileceğiniz gibi geçerli klasör ve bir üst klasörü temsil ederler.
ls -R               # ilgili klasörü alt klasörleriyle beraber listelemesini sağlar.
ls -lh              # -h parametresi -l ile kullanılınca anlam kazanır ve dosyaların (byte, KB, MB veya GB) vb. şekilde boyutlarını gösterir. Varsayılanda byte gösterir.

#NOT: Parametre kullanırken birden fazla parametre kullanacaksanız parametreleri ard arda eklersiniz. Her parametre için farklı bir tire işareti kullanmazsınız ve parametrelerin sırası da önemli değildir.
ls -laRh Belgeler   # Bu komut aktif klasördeki Belgeler klasöründeki tüm dosya ve klasörleri, gizliler dahil olmak üzere, ayrıntılı olarak, alt klasörler de dahil olmak üzere ve dosya ve klasörlerin boyut bilgilerini kolay okunur şekilde vererek listeler.

Dizinler Arası Gezinme

cd klasör                    # cd, dizinler arasında geçiş yapmak istediğimizde kullanabileceğimiz bir komuttur. Yani aktif dizini değiştirir.
cd /home/bekir/Belgeler      # Eğer klasörün başına / işaretini koyarsak Linux ilgili klasörü en üst klasörde arayacaktır, aksi takdirde aktif klasörde arayacaktır.
cd Masaüstü/test             # Kullanıcı dizininde iken masaüstündeki test kalsörünü aktif dizin yapar.
cd Masaüstü/deneme/..        # Deneme klasörüne girer sonra bir üst dizine gelerek Masaüstünü aktif dizin yapar.
cd .                         # Bulunduğun kalsör de kalırsın

# Nokta işareti aktif klasörü belirtir.
# İki nokta bir üstü dizini ifade eder.
cd "Masaüstü/Deneme Dosyası"  # Linux'ta bütün komutlarda geçerli olmak üzere bir komuta bir kelimeden fazla (yani boşluk içeren) bir argüman vermemiz gerekiyorsa ilgili metni çift tırnak arasına alırız.

Dizin Oluşturma ve Silme İşlemleri

mkdir "Yeni Klasör"                   # Yeni Klaösr isminde dizin oluşturur.
mkdir -p "Ana Klaösör/Alt Klasör"     # Alt Klasörlü Dosya Oluşturma


rmdir "Yeni Klasör"                    # Belirtilen dizini siler.
rmdir -p "Ana Klaösör/Alt Klasör"      # -p paramtertesi belirtilen yolu sondan başa doğru siler.
rmdir *                                # Boş olan bu dizindeki tüm klasörleri sil.
rmdir e?*                              # e ile başlayan ikinci harfi önemli olmayan tüm dosyaları sil. 

#NOT: Bu komut klasörleri çöp kutusuna taşımadan, direkt olarak siler. Ayrıca silinecek dizinlerin boş olması gerekir.

Dosya Oluşturma ve Silme İşlemleri

# YENİ DOSYA OLUŞTURMA
touch dosya_adi                                 # Birleşik yazılırsa kullanılır.
touch "Dosya Adı"                               # Kelimeler arası boşluk varsa kullanılır.
touch "Dosya Adı 1" "Dosya Adı 2" "Dosya Adı 3" # Tek seferde birden fazla dosya oluşturulabilir.

# DOSYA SİLME
# rm silinecek_dosya_adı
rm "Dosya Adı 2"                # Dosya Adı 2 Silindi.
rm "Dosya Adı 2" "Dosya Adı 3"  # Dosya Adı 2 ve Dosya Adı 3 silindi
rm -d "Dizin Adı"               # Belirtilen boş dizinleri siler.
rm -r "Yeni Klasör"             # Alt dosyalar ile birlikte içi dolu olsun olmasın nekadar dosya varsa siler.

Dosya/Dizin Kopyalama, Taşıma ve İsim Değiştirme İşlemleri


# DOSYA KOPYALAMA
cp kaynak hedef
cp "Masaüstü/ornek_script.sh" /home/erdem/      # Masaüstündeki ornek_script.sh dosyasını erdem dizinine kopyaladı.

# DOSYA TAŞIMA VE İSİM DEĞİŞTİRME
# mv kaynak hedef
mv "Masaüstü/ornek_script.sh" /home/erdem/      # Masaüstündeki ornek_script.sh dosyasını erdem dizinine taşıdı.

# mv mevcut_dosya_adi yeni_dosya_adi 
mv ornek_script.sh "Yeni Script Dosyam.sh"      # ornek_script.sh ismini Yeni Script Dosyam.sh olarak değiştirdi.

Dosya/Dizinlerin Sahiplik ve Grup Bilgilerini Değiştirmek


# DOSYA KULLANICI SAHİPLİĞİNİN DEĞİŞTİRLMESİ
#chown yeni_kullanıcı dosya_veya_klasör_adı
sudo chown osman deneme.txt         # deneme dosyasının kullanısısı artık osman oldu.

# DOSYA GRUP SAHİPLİĞİNİN DEĞİŞTİRLMESİ
sudo chgrp ali deneme.txt           # deneme dosyasınıngurup sahipliğini aliye verdik.


sudo chown -R ali klasr_adi           # Belirtilen klasör ve içindekilerin kullanısını ali yapıyor.
sudo chgrp -R ali klasr_adi           # Belirtilen klasör ve içindekilerin gurup kullanıcısını ali yapıyor.

Komut Yönlendirme

#Bu komutlar bir komutun sonucunu ekran yerine bir dosyaya yazma ve bir komuta argüman olarak bir metin dosyası vermektense başka bir komutun çıktısını vermeyi sağlar

# > işareti (> işareti bir komutun sonucunu yeni oluşturulacak bir dosyaya yazmaya yarar.)
ls > dosya.txt      # listeleme sonucu dosya.txt ye yazıldı. (Böyle bir dosya varsa içerisindeki sıfırlayıp sadece çıktının sonucunu girer.)
ls -l >> dosya.txt  # Listeleme sonucunu dosya.txt nin sonuna ekledi.

#HATALARI YAZDIRMA
ls -z 2> dosya.txt      # z parametresi ls komutunda yok, çıkan hata mesajını dosya.txt içerisindekileri silip yazdık.
ls -lz 2>> dosya.txt    # z parametresi ls komutunda yok, çıkan hata mesajını dosya.txt dosyanın sonuna yazdık.

# | (pipe) işareti
# | işaretiyle bir komutun çıkışını başka bir komuta argüman olarak verebiliriz. Bu sayede dosya oluşturma işleminden kurtulmuş oluruz. 
# Çünkü | işareti bir komutun sonucunun sanki bir metin dosyasının içeriğiymiş algılanmasını sağlar. 
ls Klasör | grep dosya

#Bu komut "ls Klasör" komutunun çıktısında "dosya" kelimesini arayacak ve bulduğu satırları listeleyecektir. (ls komutunun çıktısındaki her dosya/klasör ismi bir satır olarak algılanır.)

Metin Dosyaları İle İşlem Yapmak


cat > dosyaadı                 # Yazmak istediğimiz mesajı yazarız ve ctrl + d kombinasyonu ile kaydedip çıkarız.
cat şiir şiir2                 # İki dosyayı ekrana basmak.
cat şiir şiir2 > tamşiir       # iki dosyanın sonucunu tek dosyada birleştirmek.
cat şiir şiir2 | grep 'seni'   # seni kelimesini cat soncunda arıyor ve listeliyoruz.

more /var/log/syslog            # more komutu cat ile aynı ile vazifelidir. Ancak more komutunun bir avantajı tek sayfada gösterilemeyecek olan dosyalar okunurken boşluk tuşu ile kaydırma olanağı sağlamasıdır.


head /var/log/syslog             # Varsayılanda baştan ilk 10 satırı getirir.
head -n 3 /var/log/syslog        # İlk üç satırı getirir.


tail # head'ın tam tersidir. Dosyanın sonundan belirli satırları gööstermeyi başlar.
tail /var/log/syslog             # Varsayılanda son 10 satırı getirir.
tail -n 3 /var/log/syslog        # son üç satırı getirir.

grep # metin dosyalarında arama yapar.
grep 'ile' şiir şiir2         # şiir ve şiir iki dosyalarında ile kelimesini arar.

Kullanıcı İşlemleri


sudo adduser KullanıcıAdı   # Yeni kullanıcı oluşturma
sudo useradd -G GurupAdı KullanıcıAdı   # Kullanıcıyı eklerken gurubunu belirle. Guruplar arasına , koyarak daha fazla gurubade eklenebilir.
sudo deluser KullanıcıAdı   # Kullanıcı silme
sudo less /etc/passwd # Sistemdeki tüm kullanıcıları görmek.

sudo passwd -l KullanıcıAdı # Kilitle (Oturum açamaz)
sudo passwd -u KullanıcıAdı # Kilidi aç

Kullanıcı Grubu İşlemleri


sudo addgroup GurupAdı  # Gurup ekleme
sudo delgroup GurupAdı  # Gurup silme
sudo getent group   #Gurupları listeleme
sudo usermod -a -G GurupAdı KullanıcıAdı # Kullancıyı guruba ekleme
sudo deluser KullanıcıAdı GurupAdı

sudo groups KullanıcıAdı    # Kullanıcı hangi gurupta
sudo id username             # Kullanıcı hangi gurupta (Id gösterimli)
sudo passwd KullanıcıAdı    # Kullanıcının şifresini değiştir.

Servis Yönetimi

service --status-all  # Tüm servisleri listele

# YÖNTEM 1 
sudo systemctl stop ServisAdı	# Servisi durdur
sudo systemctl start ServisAdı # Servisi başlat
sudo systemctl restart ServisAdı # Servisi yeniden başlat
sudo systemctl status ServisAdı # Servisi durumunu kontrol et

# YÖNTEM 2 
sudo service ServisAdı stop # Servisi durdur
sudo service ServisAdı start # Servisi başlat
sudo service ServisAdı restart # Servisi yeniden başlat
sudo service ServisAdı status # Servisi durumunu kontrol et

Zamanlanmış Görevler

https://crontab.guru/

/etc/crontab 		# Dosyanın yeri
/etc/cron.daily/	# Günlük çalışacaklar klasörü
/etc/cron.hourly/	# Saatlik çalışacaklar klasörü
etc/cron.monthly/	# Aylık çalışacaklar klasörü
etc/cron.weekly/	# Haftalık çalışacaklar klasörü

Sistem Değişkenleri

https://www.cyberciti.biz/faq/linux-list-all-environment-variables-env-command/

1- System Variables (sistem değişkenleri)

echo "$BASH"            # Kullanılan shell'in yolunu verir.
echo "$SHELL"           # Kullanılan shell'in yolunu verir. Yukarıdaki ile aynı görevi görür.
echo "$BASH_VERSION"    # Kullanılan bash'ın versiyonunu verir.
echo "$HOSTNAME"        # Bilgisayar adını verir.
echo "$HOME"            # Acik olan kullanıcının home dizninin yolunu verir.
echo "$PWD"             # Bulunduğu dizinin tam yolunu verir.
echo "$USER"            # Açık olan oturumun kullanıcı adını verir.
echo "$LANG"            # Bilgisayarın o anki dilini verir.
echo "$TERM"            # Mevcut terminal tipini verir (örnek, xterm)
echo "$OSTYPE"          # İşletim sistemi türünü verir (örnek, linux-gnu)

Kullanıcı Değişkenleri

2- User Variables (Kullanıcı Değişkenleri)

# Değişkenler büyük küçük harf kombinasyonu, alfabetik veya nümerik karakterlerden oluşabilirler fakat bir değişken sayısal bir değer ile başlayamaz. 
# İki kelimeyi ayırmak için _ (alt tire) kullanılmalıdır. (boşluk, nokta vb. kullanılmamalıdır.)
# İsimlendirmede Türkçe karekter kullanılmamalıdır.

MevcutDosyaYolu=$PWD        # Sistem değişkenlerinden birtanesinin sonucunun değişkene girdi olarak verilmesi
Kulllanici_Ismi='Erdem'     # String tanımlama formatı
yas=26                      # İnt tanımlama formatı

# Yukarıdaki değişkenlerin kullanımı.
echo $MevcutDosyaYolu
echo $Kulllanici_Ismi
echo $yas

Argümanlar

# Terminal Kullanımı: ./ornek_script.sh parametre1 parametre2 ...

echo $1 $2 $3 # istediğimiz argümanları yazıdırıyoruz.
echo [email protected] # Alınan tüm parametre verilerini yazdırır.

girilen_degerler=("[email protected]")          # Dizi olarak parametreleri alıp kullanmak.
echo ${girilen_degerler[1]}     # dizinin 1 numaralı elemanını getirmesini istedim.

[email protected] Dizi olarak içerisindeki elemanları kullanma imkanı verir
$* Dizi olarak kullanma imkanı vermeden değerleri olduğu gibi yazar.
$# Alınan parametrelerin sayısını verir.
Paramtereleri $1, $2 şeklinde tanımlarsak index numarası birden başlar. Eğer [email protected] ile parametre alırsak index numarası sıfırdan başlar.

Değişkenlere Dışarıdan Veri Almak

# BİR DEĞİŞKENE VERİ ALMAK
read  isim
echo "Girilen İsim: " $isim
 
# BİRDEN FAZLA DEĞİŞKENE VERİ ALMAK
read isim1 isim2 isim3
echo "Girilen İsimler :" $isim1, $isim2, $isim3
 
# DİZİ ŞEKLİNDE VERİ ALMAK
read -a isimler
echo  ${isimler[0]}, ${isimler[1]}, ${isimler[2]}
 
# TEK SATIR DA MESAJ GÖSTEREREK VERİ ALMAK
read -p "İsim Giriniz :" isim
read -sp "Şifre Giriniz :" sifre
echo "Girilen İsim:" $isim, $sifre
# Veri alırken görünürlüğü kapatmak için read komutuna -s parametresi eklenebilir. (Genelde şifre yazma alanlarında kullanılır)

# GİRİLEN TÜM VERİLERİ ALMA
read
echo $REPLY
# Girilen değerler tek çıktı olarak yazılır. 

Kontrol Yapıları (İf)

Tek Koşul
-----------------------------------------------------  
if koşul
then
    #koşul olması durumunda gerçekleşecek işlemler
else 
    # Koşul gerçekleşmediğinde çalışacak kodlar
fi


Birden Fazla Koşul
-----------------------------------------------------  
if koşul_1
then
    #koşul_1 olması durumunda gerçekleşecek işlemler
elif koşul_2
then
    # Koşul_2 olması durmunda çalışacak kodlar.  
else 
    # Koşullar gerçekleşmediğinde çalışacak kodlar
fi

Koşul Kuralları

1) INTEGER Karşılaştırma

-eq  if [ "$a" -eq "$b" ]   # Eşit ise (is equal to )
-ne  if [ "$a" -ne "$b" ]   # Eşit değil ise (is not equal to)
-gt  if [ "$a" -gt "$b" ]   # Büyük ise (is greater than )
-ge  if [ "$a" -ge "$b" ]   # Büyük veya eşit ise (is greater than or equal to)
-lt  if [ "$a" -lt "$b" ]   # Küçük ise (is less than)
-le  if [ "$a" -le "$b" ]   # Küçük veya eşit ise (is less than or equal to)

<    if (("$a" < "$b"))     # Küçük (is less than)
<=   if (("$a" <= "$b"))    # Küçük eşit (is less than or equal to)
>    if (("$a" > "$b"))     # Büyük (is greater than)
>=   if (("$a" >= "$b"))    # Büyük eşit (is greater than or equal to)

2) STRING KARŞILAŞTIRMA

=   if [ "$a" = "$b" ]      # Eşit ise (is equal to)
==  if [ "$a" == "$b" ]     # Eşit ise (is equal to)
!=  if [ "$a" != "$b" ]     # Eşit değil ise (is not equal to)
<   if [[ "$a" < "$b" ]]    # Küçükse - Alfabatik olarak (is less than, in ASCII alphabetical order)
>   if [[ "$a" > "$b" ]]    # Büyükse - Alfabatik olarak (is greater than, in ASCII alphabetical order)
-z  if [ -z "$String" ]     # Değer boş ise (string is null, that is, has zero length)
-n  if [ -n "$String" ]     # Değer boş değil ise (string is not null.)

&& (AND) ve || (OR) Operatörleri İle Birden Fazla Şartın Kontrolü

3) Birden Fazla Şartın Durumunu Karşılaştırma (Oparatörler)

-a if [ "$kodblogu1" -a "$kodblogu2" ] # Ve - Her iki kod bloğunun true döndürmesi gerekir.
&& if [[ "$kodblogu1" && "$kodblogu2" ]] # Ve - Her iki kod bloğunun true döndürmesi gerekir.
&& if [ "$kodblogu1" ] && [ "$kodblogu2" ] # Ve - Her iki kod bloğunun true döndürmesi gerekir.


-o if [ "$kodblogu1" -o "$kodblogu2" ] # Veya - Her iki kod bloğunun birinin true olması yeterlidir.
|| if [[ "$kodblogu1" || "$kodblogu2" ]] # Veya - Her iki kod bloğunun birinin true olması yeterlidir.
|| if [ "$kodblogu1" ] || [ "$kodblogu2" ] # Veya - Her iki kod bloğunun birinin true olması yeterlidir.

Case Kullanımı

# case yapısı birkaç alternatif arasından seçim yapmak için kullanılır.

#ARGÜMAN KULLANARAK VERİ ALMAK
alinan_deger=$1  

case $alinan_deger in 

"araba" ) 
echo "araba şartına uyan olan komut çalıştı";;

"tır" )
echo "tır şartına uyan olan komut çalıştı";;

"telefon" )
echo "telefon şartına uyan olan komut çalıştı";;

* ) # Yukarıdaki şartların dışındakiler
echo "seçiminiz sistemimizde yoktur."

esac

# Büyük küçük harf dikkat edilmelidir. Girilen arguman veya değer kontroldeki yazılan ile eşleşmelidir.
# Regular ifadelerde kontrol edilebilir. Örnek; [a-Z] (harf karakteri) , [0-9] (sayı karakteri) , ? (Özel Karakterler)

# ÖRNEK 2

echo "1. Bilgisayar adını göster"
echo "2. Home dizinini göster"
echo "3. Açık bulunduğum dizindeki dosyaları listele"

read secim

case $secim in 

    1 )
    echo $HOSTNAME ;;
    2 ) 
    echo $HOME ;;
    3 )
    ls -l ;;
    * ) 
    echo "Geçersiz giriş"
 esac

Select Döngüsü

# Genelde case ile birlikte kullanılır.

# ÖRNEK 1

select secilen_islem in "Dosya Oluştur" "Dosya Sil" "Dosya Kopyala"
do
 echo $secilen_islem
 done


# ÖRNEK 2

select secilen_islem in "Dosya Oluştur" "Dosya Sil" "Dosya Kopyala"
do
    case $secilen_islem in
     "Dosya Oluştur" )
        read -p "Oluşturulacak dosya adı yazınız: " dosyaadi
        touch $dosyaadi;;
     "Dosya Sil" )
        read -p "Silinecek dosya adını yazınız: " dosyaadi
        rm $dosyaadi;;
     "Dosya Kopyala" )
        read -p "Kopyalanacak dosya adı yazınız: " dosyaadi
        read -p "Yeni oluşacak dosyanın adını yazınız: " yenidosyaadi
        cp $dosyaadi $yenidosyaadi;;
    * )
        echo "Geçersiz seçim yapıldı";;
    esac
 done

Diziler

isimler=( 'Erdem' 'Osman' 'Ahmet')

echo "${isimler[@]}"     # Tüm dizi elemnlarını gösterir.
echo "${!isimler[@]}"    # Tüm dizinin index sırasını gösterir.
echo "${#isimler[@]}"    # Tüm dizi elemanlarının toplam sayısını gösterir.
echo "${isimler[1]}"     # İndex numarası 1 olan elemanı gösterir.
isimler[3]='Ali'         # Üç numaralı index'e Aliyi ekledi.
isimler[0]='Can'         # 0 numaralı index'e Sahip Erdem ismini Can ile değiştirdi.
unset isimler[1]         # Bir numaralı indexe sahip veriyi ve index numarasını sildi.

While Döngüsü

sayi=0
while (( $sayi <= 10 ))
do
    echo $sayi
    (( sayi++ ))
    sleep 1
done

For Döngüsü

# 1. KULLANIM (STANDART KULLANIM)
for (( i=0;i<=10;i++ ))
do
echo $i
done

# 2. KULLANIM (KOMUTLU KULLANIM)

for i in "ls -l" "pwd"
do
    echo "Komut : $i"
    $i
done 

# 3. KULLANIM (BASH VERSİYONU 3'DEN FAZLA OLANLAR İÇİN KULLANIM)

for i in {1..20..3}
do
echo $i
done

For Döngüsü (Break, Continue)

for (( i=0;i<=10;i++ ))
do
    if [ $i -gt 5]
    then
    break # Döngüyü sonlandırır.
    fi 
    echo $i
done


for (( i=0;i<=10;i++ ))
do
    if [ $i -eq 2 -o $i -eq 6 ]
    then
    continue # Döngünün başına döner
    fi
    echo $i
done

Until Kullanımı

i=1
until (( $i >= 9 ))
do
    echo $i
    ((i++))
done

Fonksiyon Kullanımı

read -p "Sayı giriniz: " sayi

function YarisiniAl(){
 echo "Sonuç: $((sayi/2))"
 sleep 1 # Bir saniye bekletme yapıyor.
}

YarisiniAl

Aritmetik İşlemler

a=20;
b=5;
x=10;

#YÖNTEM 1 
echo $(( a + b ))  # Toplama
echo $(( a - b ))  # Çıkarma
echo $(( a * b ))  # Çarpma 
echo $(( a / b ))  # Bölme  
echo $(( a % b ))  # Mod Alma

echo $(( x++ ))     # Sayıyı bir attır.
echo $(( x-- ))     # Sayıyı bir azalt.

# YÖNTEM 2
echo $( expr $a + $b ) 
echo $( expr $a - $b )
echo $( expr $a \* $b )
echo $( expr $a / $b )
echo $( expr $a + $b )
echo $( expr $a % $b )

# FLOAT (VİRGÜLLÜ DEĞERLERLE ÇALIŞMAK)
echo " $a + $b " | bc
echo " $a - $b " | bc
echo " $a * $b " | bc
echo " $a / $b " | bc
echo " $a % $b " | bc

# Virgülden sonra gösterilecekleri scale=noktasayisi; ekleyerek buluruz.
echo "scale=2; $a % $b " | bc

Dosya İşlemleri

# -f dosya var 
# -s dosya boş değil 
# -r dosya okunabilir 
# -w dosyaya yazılabilir 
# -x çalıştırılabilir dosya 
# -d dizin

dosyaadi=$1

if [ -d $dosyaadi ]
then
echo "Dosya var"
else
echo "Dosya yok"
fi


Örnek

echo -e "Bir dosya ismi giriniz: \c"
read dosyaismi

if [ -f $dosyaismi ]
then
    echo  "Dosya mevcut"
else
    echo "İstediğiniz dosya bulunamadı yeni oluşturulacak. Mesajı yazıp çıkmak için ctrl + d kombinasyonunu kullanınız."
    cat >> $dosyaismi
fi

Servis Yönetimi

service --status-all  # Tüm servisleri listele

# YÖNTEM 1 
sudo systemctl stop ServisAdı	# Servisi durdur
sudo systemctl start ServisAdı # Servisi başlat
sudo systemctl restart ServisAdı # Servisi yeniden başlat
sudo systemctl status ServisAdı # Servisi durumunu kontrol et

# YÖNTEM 2 
sudo service ServisAdı stop # Servisi durdur
sudo service ServisAdı start # Servisi başlat
sudo service ServisAdı restart # Servisi yeniden başlat
sudo service ServisAdı status # Servisi durumunu kontrol et

You may also like...