Bu makale, Python kullanarak Linux terminallerini kontrol etme ve onlarla etkileşim kurma tekniklerini ele alıyor. Basit komut yürütmeden kalıcı terminal oturumlarını içeren daha gelişmiş senaryolara kadar çeşitli yöntemleri kapsayacağız.
İçerik Tablosu
- Yeni Terminal Açma ve Komutları Çalıştırma
- Python Sürümünü Kontrol Etme
- Terminalleri Açık Tutma
- Gelişmiş
subprocess
Teknikleri - Sonuç
Yeni Terminal Açma ve Komutları Çalıştırma
Yeni bir terminal açmanın ve komutları çalıştırmanın en basit yolu subprocess
modülünü kullanmaktır. Bu, yeni bir terminal emülatörü işlemi başlatmayı ve komutu bir bağımsız değişken olarak geçirmeyi içerir. Terminal başlatmak için özel komut, masaüstü ortamınıza bağlı olarak değişir (örneğin, gnome-terminal
, konsole
, xterm
).
import subprocess
def run_command_in_new_terminal(command, terminal_command="gnome-terminal"):
"""Yeni bir terminal açar ve belirtilen komutu çalıştırır.
Args:
command: Çalıştırılacak komut.
terminal_command: Terminal emülatörünü başlatacak komut. Varsayılan olarak 'gnome-terminal'.
"""
try:
subprocess.run([terminal_command, '--', 'bash', '-c', command + ' ; exec bash']) #Terminali açık tutar
print(f"'{command}' komutu yeni bir terminalde çalıştırıldı.")
except FileNotFoundError:
print(f"Hata: {terminal_command} bulunamadı. Lütfen kurulu olduğundan ve PATH'inizde olduğundan emin olun.")
except subprocess.CalledProcessError as e:
print(f"Komutu çalıştırırken hata: {e}")
run_command_in_new_terminal("ls -l")
run_command_in_new_terminal("top", terminal_command="xterm") # xterm ile örnek
Bu geliştirilmiş sürüm farklı terminal emülatörlerini işler ve komut tamamlandıktan sonra terminali açık tutmak için exec bash
kullanır.
Python Sürümünü Kontrol Etme
Python sürümünü belirlemek, sys
modülünü kullanarak oldukça basittir:
import sys
def get_python_version():
"""Geçerli Python sürümünü yazdırır."""
print(f"Python sürümü: {sys.version}")
get_python_version()
Terminalleri Açık Tutma
Bir komut tamamlandıktan sonra açık bir terminal sağlamak için, komutunuzun süresiz olarak çalışmasını veya kabuğu aktif tutmak için bir mekanizma kullanmasını sağlayın. Örneğin, ls -l
gibi tek seferlik bir komut yerine, sürekli veri çıkışı sağlayan bir komut (örneğin, tail -f /var/log/syslog
) kullanın veya kabuğu çalışır durumda tutan bir komut ekleyin (ilk örnekte gösterildiği gibi).
Gelişmiş subprocess
Teknikleri
Daha karmaşık etkileşimler için subprocess.Popen()
daha ince bir kontrol sağlar. Standart giriş, çıkış ve hata akışları aracılığıyla oluşturulan işlemle çift yönlü iletişim kurulmasına olanak tanır. Bununla birlikte, zaten açık olan bir terminali doğrudan manipüle etmek, muhtemelen yalancı terminalleri (pty’ler) içeren daha gelişmiş teknikler gerektirir.
Sonuç
Bu makale, basit komut yürütmeden daha karmaşık kontrole kadar, Python aracılığıyla Linux terminallerini yönetmenin çeşitli yöntemlerini sundu. subprocess
modülü bu görevlerin merkezinde yer almaktadır. Uygun terminal emülatörünü seçin ve komutları belirli ortamınıza göre uyarlayın. Son derece etkileşimli senaryolar veya karmaşık kontrol için, daha gelişmiş terminal manipülasyonu için pty
modülünü inceleyin.