C'ye gerçekten güzel bir giriş kitabı ile programlamayı öğreniyorum ve sözdizimini ezberleyebilmek için her örneği ve görevi yazıyorum. Şimdiye kadar her dosyayı elle yaptım, ancak tıklama, adlandırma ve kaydetme yorucu oluyor.
Bspl0001.c,
bspl0002.c,
bspl0003.c` gibi birden fazla dosya oluşturmanın ve bunları "learning_c" dizinine kaydetmenin bir yoluna ihtiyacım var.
Ubuntu / Linux konusunda acemiyim ve açıkçası sadece VirtualBox üzerinden çalıştırıyorum çünkü IDE Geany'nin kurulumu kolaydı. Bu nedenle Terminal'in nasıl çalıştığını gerçekten bilmiyorum.
edit Az önce kendimi bu eski hesabımda buldum ve neden bir kod sözdizimini ezbere öğrenmek istediğim konusunda kafamı sallıyorum. Ne gariptir ki, CS / Matematik lisans eğitimimi neredeyse tamamladım. Geriye dönük yardımlarınız için çok teşekkürler!
Bunu şu komutlarla yapabilirsiniz:
mkdir learning_c
cd learning_c
touch bspl{0001..0003}.c
mkdir learning_c
learning_c
adında bir klasör oluşturacaktır~
olarak da adlandırılan ev klasörünüzdürcd
komutunu kullanarak değiştirebilirsiniz (örn. cd Desktop
)cd learning_c
touch bspl{0001..0003}.c
touch
boş dosyalar oluşturmak ve zaman damgalarını değiştirmek için kullanılan bir araçtır; biz boş dosyalar oluşturuyoruz.
touch myfile
myfile
adında boş bir dosya yaratacaktır.
Aşağıdaki çirkin koda (bspl{0001..0003}.c
) brace expansion denir. Bu, bash
kabuğunun keyfi dize kombinasyonlarından oluşan uzun listeler oluşturmanıza olanak tanıyan harika bir özelliğidir. Bu konuda daha fazla bilgiyi Bash Hackers Wiki'de bulabilirsiniz. Bu durumda touch
komutuna aktarılacak parametrelerin uzun bir listesini oluşturacaksınız. Uzun eşdeğerini de kullanabilirsiniz:
bspl0001.c bspl0002.c bspl0003.c dosyalarına dokunun
Dosya sayısını değiştirebilirsiniz: 12 dosya istiyorsanız bspl{0001..0012}.c
dosyasını çalıştırabilirsiniz.
Baştaki sıfırlar (12
yerine 0012
) çıktının sıfır dolgulu 4 hane kullanmasını sağlar.
Neden tüm dosyaları bir kerede oluşturalım? Dezavantajı, çok sayıda boş ve kullanılmayan dosyaya sahip olmanızdır. Aslında kullandığım şey: bir tuş kombinasyonuna basmak:
Hepsi tek bir tuşa basarak. Bu şekilde çok sayıda (hala) kullanılmayan dosyayı önlersiniz; Dosyalar yalnızca ihtiyacınız olduğunda oluşturulur.
Aşağıda basitleştirilmiş bir versiyon (3. adımı çalıştırmıyor). Her tuşa basıldığında, aşağıdaki gibi doğru numaralandırılmış bir dosya oluşturacaktır:
bspl0001.c, bspl0002.c, bspl0003.c etc
#!/usr/bin/env python3
import os
#--- set your code directory below
dr = "/path/to/your/coding_files"
#--- set the desired (base) name extension and shebang below (leave it ""if you don't want an automatically set shebang)
name_initial = "bspl"
extension = ".c"
shebang = ""
#---
existing = os.listdir(dr)
n = 1
while True:
file = dr+"/"+name_initial+str(n).zfill(4)+extension
if os.path.exists(file):
n = n+1
else:
with open(file, "wt") as out:
out.write(shebang)
break
Komut dosyasını boş bir dosyaya kopyalayın
Baş bölümünde, dizininizin yolunu ayarlayın (ve isteğe bağlı: temel adı ve/veya uzantıyı değiştirin, shebang).
Betiği create_empty.py olarak kaydedin
Betiği bir kısayoldan çalıştırın: Sistem Ayarları > Klavye > Özel Kısayollar. Komutu ekleyin:
python3 /path/to/create_empty.py
Aşağıdaki python kodunu kullanabilir, ihtiyaçlarınıza uyacak şekilde değiştirebilirsiniz.
Aşağıdaki kodu filecreator.py
dosya adıyla kaydedin
#!/usr/bin/env python
import os
import subprocess
work_path = os.path.abspath(os.path.dirname(__file__))
if not os.path.exists("learning_c"):
os.mkdir("learning_c")
os.chdir(os.path.expanduser(work_path+"/learning_c"))
n = 10 #put the number as you wish
for i in range(n):
subprocess.call(['touch', "bsdl"+str(i).zfill(4)+".c"])
Ve sonra bu komutla çalıştırın:
python filecreator.py