Terminal'e Tek Kelime Girerek Programları Güncelleme ve Gereksiz Paketleri Silme

Öncelikle bu konuyu bana öğreten @yucelalkan 'a teşekkür ediyorum :slight_smile:

Terminali açıp guncelle yazdığınızda doğrudan sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoremove komutlarını çalıştıracağız.

Bunu yapabilmek için C programlama dilinden destek alıyoruz :slight_smile:

Bunu yaparken masaüstünde terminal çalıştırmak 19.5 için sıkıntı olduğundan, bir klasör açıp içinde çalışmanızı tavsiye ediyorum.

Bir tane metin belgesi açalım ve aşağıdaki komutları içine kopyalayalım:

#include <stdio.h>
#include <stdlib.h>	

int main()
{
	
    system("sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoremove");
    printf("Güncelleme Tamamlandı. \n");
    return 0;
}

Daha sonra guncelle.c adıyla kaydedelim.

Sonra aynı klasör içinde terminal açarak sırasıyla aşağıdaki komutları çalıştıralım:

gcc guncelle.c -o guncelle

(Bu komutla guncelle.c dosyasını derlemiş oluyoruz.)

sudo cp guncelle /usr/local/bin

(Bu komutla da terminalde komutu yazdığımızda arayıp bulabileceği bir klasöre kopyalamış oluyoruz.)

Artık terminale guncelle yazdığımızda sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoremove komutlarını otomatik olarak çalıştıracak.

Oluşturduğunuz dosyaları da silebilirsiniz.

Aynı şeyi benzer farklı komutlara da güncelleyerek, çok kullandığınız komutları pratikleştirebilirsiniz.

3 Beğeni

C dosyaları hazırlayıp derlemek yerine direk Bash yani terminalin kendisinde de böyle bir özellik var.

alias

alias ile bir kelimeye istediğiniz komutlar silsilesini atayabilirsiniz. Örneğin:

alias guncelle='sudo apt update && sudo apt upgrade -y'
alias eveGit='cd ~/`

gibi. Bunları sadece örnek olsun diye yazdım. Buraya çok daha kullanışlı ve kendinize özelleştirilmiş komutlar girebilirsiniz.

Bu şekilde tanımladıktan sonra tek yazmanız gereken:

guncelle

Örneğin her gün çalıştırdığınız bir komutlar topluluğu varsa onlara tek bir alias verip tek bir kelime ile çalıştırabilirsiniz.

Not: Terminal ekranında alias ile oluşturduğunuz kısayol o terminal ekranına hastır. Başka terminal ekranında çağrılamaz.

Bu yüzden alias komutunu .bashrc'ye eklemeniz gerek. .bashrc her terminal açtığınızda ilk çalıştırılan dosyadır.

Örneğin:
.bashrc: dosyasını açın ve en altına aliasınızı ekleyin.

...
...
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

# en sona kendi aliasımızı ekleyelim:
alias guncelle='sudo apt update && sudo apt upgrade -y'
4 Beğeni

alias guncelle=‘sudo apt update && sudo apt upgrade -y’

Bu komut şifre ister ama. Bunu en sona eklediğimizde, o zaman nasıl olur?

Bunu da öğrenmiş olduk. :slight_smile:

guncelle yazıp enter’a bastıktan sonra size şifre sorar normal komutun kendisini girdiğinizdeki gibi.

Attığınız C kodundan derlenmiş programı da sudo guncelle gibi root yetkileriyle çalıştırmanız gerekir.

1-

Sormak istediğim, bu komutla her gün otomatik yapacak şekilde güncellediğimizde, kendisi komutu başlangıçta otomatik çalıştıracak ama şifre de isteyecek. O nasıl olur diye anlayamadım.

2-

Bunun için de sudo istemedi. Doğrudan çalıştırdı, konuyu açmadan önce denedim onu.

3- C programlama ile oluşturduğumuzda, daha sonra dosyayı silersek komut da gider. alias ile oluşturduğumuz komutu daha sonra silmek veya değiştirmek istersek ne yapacağız?

1 Beğeni
  1. Her gün otomatik olarak bir komutun çalışmasını bu iki yöntem de sağlamaz. Bu yaptığımız uzun komutları tek bir kelime ile çalıştırmak için bir kısayol atamak sadece.
  2. Öncesinde sudo ile bir komut çalıştırdığınız için istememiş. Terminalinizi kapatıp yeni bir terminal açın ve o zaman programı çalıştırın isteyecektir. Root yetkilerini siz vermeden program kendi kendine sahip olamaz. Öyle olsa root yetkisi diye bir şey olmasının bir manası kalmayacak. sudo komutu kısa bir sürede ikinci üçüncü defa çağırıldığında şifre istemiyor.
  3. alias ile atadığınız kelimeyi artık kullanmak istemiyorsanız ~/.bashrc den silmeniz yeterli. Bir sonraki terminal ekranında tanımlı olmayacaktır.
2 Beğeni

Az önce denerken alias guncelle='sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoremove' komutuyla tanımladım. Terminali kapatıp açtıktan sonra tekrar çalışmadı.
Nerede hata yaptım?

pardus@pardus:~$ guncelle
bash: guncelle: komut yok

1 Beğeni

@yusufsunetci

terminalin içinde alias ile tanımladığınız kısayol o pencere açıkken kalır sadece. Her terminalde kullanmak için .bashrc’nin sonuna eklemelisiniz diye yazmıştım.

2 Beğeni

Ben o ifadeyi her terminali açınca değil de, her bilgisayarı açınca diye anlamışım, kusura bakmayın. Ondan yukarıdaki soruları da sormuştum. Tamam, şimdi oturdu kafamda… :sweat_smile:

1 Beğeni
pardus@pardus:~$ ~/.bashrc
bash: /home/pardus/.bashrc: Erişim engellendi

Bununla karşılaştım. Klasörden açıp girdiğimde dosyayı açtı. Oradan kaydettim, oldu.

1 Beğeni

~/.bashrc dosyanın yolu, içini düzenlemek için bir metin editörüyle açmalısınız:

#XFCE:
mousepad ~/.bashrc
# veya
nano ~/.bashrc

#GNOME:
gedit ~/.bashrc
# veya
nano ~/.bashrc
2 Beğeni

root crontab ı ile guncelle dosyanı hergün çalıştırabilirsin.

2 Beğeni

.bashrc dosyasına aşağıdaki komutla terminal üzerinden doğrudan ekleme yapabilir miyiz?

echo -e "\n\nalias guncelle='sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove' " >>/home/pardus/.bashrc

veya az daha kısası:

echo -e "\n\nalias guncelle='sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove' " >>~/.bashrc

Eğer böyle yazabilirsek böylece dosyayı açıp yanlış bir şeyler yazma ihtimalimiz de olmaz. Daha pratik olur.

1 Beğeni

Üstteki gönderiyi böyle de yapabiliriz diye koymadım. Böyle de oluyor mu diye sormak için yazdım. Yanlış anlaşılıp arada kaynamasın. sistem dosyası olunca, böyle yazdırabiliyor muyuz diye merak ettim?

Oluyor mu?

Evet yapabilirsiniz fakat baştaki yeni satır için koyduğunuz \n’ler gereksiz galiba. Deneyip kontrol edebilirsiniz.

1 Beğeni

Onu üstteki satırlarla birbirine girmesin bir iki satır aşağıda dursun diye bilerek koydum. :slight_smile:

Denedim kontrol ettim. kod içine -e de ekledim yoksa alt satıra geçmeyip kodun başına \n olarak ekliyordu.
Üstteki kodu da düzelttim. Mevcut hali son hali. :slight_smile:

Yani şu:

1 Beğeni

yukarıdaki kodu yazdırdım guncelle yazınca terminal de çalışıyor harika

1 Beğeni

Ekran görüntüsü 2021-08-10 04-20-34

1 Beğeni