Python ile linux bin dosyası yazmak

Python kullanarak linux bin dosyası nasıl yazılır yani şu şekilde:


Bilgisi olan yazabilir mi?

with open("/usr/bin/aaa", 'wb') as f:
    f.write(b'icerik')

veya

with open("/usr/bin/aaa", 'w') as f:
    f.write('icerik')

Ubuntu üzerinde, usr altında bin klasöründe dosyalar görüyorum.

Binary dosyası derken?

Binary dosya ikili dosya demektir.

Ama gösterdiğin klasördeki dosyaların niteliklerini bilemesem de tahmin edebilirim.

Genelde bin klasörü altına yürütülebilir dosyalar görürüz.

Sorun burada eksik;

İkili dosya nasıl yazılırı mı soruyorsun?

Yoksa

Bin klasörü altında çalıştırılan executable/yürütülebilir dosya mı nasıl oluşturuluyor onu mu soruyorsun?

Python dili altında sormuşsun.

Linux etiketlemişsin.

Gel de çık işin içinden.

Binary yani ikili dosya mı oluşturmak istiyorsun yoksa yürütülebilir bir dosya mı oluşturmak istiyorsun?

Yani gösterdiğin klasördeki dosyalar rastgele binary dosyalar değildir.

Bunlar windows’taki exe dosyaları gibi yürütülebilir dosyalardır.

Eğer bunu sormaya çalıştıysan ufak bir kaç satır karalayayım:

Windows ile Linux yürütülebilir dosyalara farklı gözle bakar.

Windows dosyaların yürütülebilir bir dosya olup olmadığına uzantısı ile karar verir/ ayırır.

Uzantısı, com, exe, cpl, bat vs olan dosyaları yürütülebilir dosya olarak görür.

Ama linux olaya farklı bakar.

Linux dosyaları uzantısına bakmaz, havada karada uzantısı ne olursa olsun (istisnalar hariç) eğer nitelikleri (attributes) çalıştırılabilir ise o dosyayı çat diye çalıştırır.

Aslında nitelik demiyelim, permissions (izinler) diyelim. Yürütülebilir izni olmayan dosya çalıştırılmaz bu nedenle dosya niteliği yürütülebilir olmak zorundadır ve uzantısı da dert edilmez.

$ ls -l /path/to/directory

Gibi bir komutla bir klasördeki dosyaların izinlerini/niteliklerini görebilirsin.

ls: listeleme komutu. (Windows’ta cmd benzeri)
-I : ls komutunun izinlerini göstermesi talimatını veren parametre.

Path ile devam eden yer de hangi klasörün içindeki izinleri görmek istiyorsanız o klasörün yolu.

Sonuçta dosyalar alt alta listelenir.

drwxr-xr-x

ve yukarıdaki gibi bir harf dizilimi ile gösterilir.

Burada, tüm harfler izinleri temsil eder.

Detayına girmeyeceğim.

Eğer izinleri arasında x varsa bu dosya yürütülebilir bir dosya iznine sahip demektir.

Yani her ikili dosya yürütülebilir bir dosya değildir.

Ama x iznine sahip bir dosya yürütülebilir bir ikili dosya yani bir programdır.

Peki canımızın istediğini ikili dosya olarak yazdırsak. Sonra x izni versek çalışır mı?

Hayır çalışmaz.

Çünkü yürütülebilir dosyanın bir derleyici ile oluşturulması gerekir.

Yani bir dilde kodlanır. Sonra o dilin derleyicisi ile yürütülebilir bir ikili dosyaya dönüştürülür ve sonuçta o dosya genelde usr yani kullanıcı klasörünün altında, bin klasörünün altına atılır ve oradan çalıştırılır.

Gelelim senin soruna.

Python kullanarak linux bin dosyaları nasıl yazılır.

Ne tür bir binary dosyası?

İkili bir dosya kaydı yapmak python dilinde nasılsa o şekilde yazılır ki örneği verilmiş.

Python. Binary files. Examples of working with binary files | BestProg

Çeşit olsun bir tane de ben örnek vereyim.

Lakin, bir usr/bin klasörü gösteriyorsan tam olarak ne sorduğun anlaşılmıyor.

İstediğin yukarıda uzunca anlattığım yürütülebilir bir binary dosyası ise bu bambaşka bir konu.

Ne sormaya çalıştığını biraz daha açarsan daha sağlıklı bilgi ve kaynak verme şansımız olur.

1 Beğeni

Yanıtınız için teşekkürler @semtex ancak bin dosyası derken hani exe veya bat dosyalarını windowsda ortam değişkenlerinden path a ekleriz ya onun gibi ama linux için fazla bilgi sahibi değilim öğrenmeye çalışıyorum.

Anlatmak istediğiniz şeyden bir şey anladığımı söyleyemeyeceğim ve muhtemelen siz de anlamadınız beni şuada daha iyi açıkladım:

Ortam degiskenleri ve hatta PATH degiskeni Linux’ta da var; tek farki ; yerine : ile ayrilmasi ve basinda (sonunda?) gizli bir . olmamasi.

Ortam degiskenlerini Windows’ta “advanced bilmemne” arayuzunden degistirmekten bahsediyorsaniz onun da karsiligi /etc/environment veya ~/.bashrc dosyalarini editlemek.

1 Beğeni

Soru bin dosyası nasıl yazılır.

İkinci soru linuxta path nasıl ekleriz.

İki farklı soru.

Şimdi ikinci soru da yanlış anlaşılmaya müsait.

Python içinden yazdığın kodla ortam değilkenlerine path mi eklemek istiyorsun, terminal üzerinden mi eklemek istiyorsun?

1.:

:grinning:
2.
Ben sadece açıklamak için öyle dedim.

Tipografik hatalardan sorumlu değilim. Vakit ayırıp yazıyorum, harf hatalarına takılabilirsin lakin her zaman bu konuda dikkat edeceğimi söyleyemem.

Doğru açıklamış olsaydın aldığın ilk cevap ile ikinci cevap farklı olmazdı.

Benim yazım hatalarına dikkat etmek yerine soracağın soruları doğru sorarsan doğru cevabı kısa sürede alırsın.

1 Beğeni