Terminal ile birden fazla dosya nasıl oluşturulur?

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!

Çözüm

Bunu şu komutlarla yapabilirsiniz:

mkdir learning_c
cd learning_c
touch bspl{0001..0003}.c

Açıklama:


  • mkdir learning_c

    • Bu, geçerli klasörde learning_c adında bir klasör oluşturacaktır
    • Geçerli klasör genellikle ~ olarak da adlandırılan ev klasörünüzdür
    • Geçerli dizini cd komutunu kullanarak değiştirebilirsiniz (örn. cd Desktop)
  • cd learning_c

    • Evet, tahmin edebilirsiniz, yeni oluşturulan klasöre giriyorsunuz
  • 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.

Yorumlar (7)

Kısayol tuş kombinasyonu ile doğru numaralandırılmış (sonraki) dosya oluşturun

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:

  1. Kod dizinimde "next" dosyasının ne olması gerektiğini gören bir betik var,
  2. Doğru adlandırılmış dosyayı oluşturun (shebang dahil) ve
  3. Yeni dosyayı editörümde açın (benim durumumda Idle).

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

Nasıl kullanılır

  1. Komut dosyasını boş bir dosyaya kopyalayın

  2. Baş bölümünde, dizininizin yolunu ayarlayın (ve isteğe bağlı: temel adı ve/veya uzantıyı değiştirin, shebang).

  3. Betiği create_empty.py olarak kaydedin

  4. Betiği bir kısayoldan çalıştırın: Sistem Ayarları > Klavye > Özel Kısayollar. Komutu ekleyin:

     python3 /path/to/create_empty.py
Yorumlar (0)

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
Yorumlar (0)