folder Tahribat.com Forumları
linefolder Linux ve Diğer İşletim Sistemleri
linefolder Terminalde For Döngüsü Ve Sublime Text İ Script Olarak Çalıştırma[Linux]



Terminalde For Döngüsü Ve Sublime Text İ Script Olarak Çalıştırma[Linux]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    erebos
    erebos's avatar
    Kayıt Tarihi: 13/Ocak/2010
    Erkek

    Bu terminalde for döngüsü yapamıyorum zaten ne yazsam çat diye işliyo arkasını bulamıyorum şimdi ilk sorum şu, sublime text te kodlarımı düzgünce yazıyorum, ben bu dosyanın tamamını terminalde nasıl run edebilirim, bu sublime ı masaüstüne kaydedip terminalde bu text dosyasını çalıştırmayı denedim ancak yine de yapamadım(call, run, open gibi şeyler denedim) hangi komutu kullanayım?

    Diğer sorumsa şu, şimdi ben kodlarımı yazdım, masaüstündeki sample klasörün içine ben örneğimi mesela sampleR1 diye koyuyorum ve kodları çalıştırdığım an çok güzel bir şekilde bana sonuçlarını verip hemen yanına finalresult dosyası atıyor, ancak ben bunu durmadan yapmasını istiyorum, yani mesela sample klasörünün içindeki bütün dosyaları tek tek çalıştırmasını ve her biri için ayrı ayrı sonuç vermesini istiyorum. R da felan for döngüsü yaratmak kolay oluyodu ama burda her bişeyini benim belirlemem gerektiği için beceremedim.

    en azından ubuntuda for döngüleri için bir link verebilirmisiniz


    Zira Kalemler kaldırılmış,sayfalar kurumuştur.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Blackfire
    Blackfire's avatar
    Kayıt Tarihi: 06/Temmuz/2008
    Erkek

    Hocam istersen kodalrını paylaş müsait olursam bi bakayım

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AlpBTN
    AlpBTN's avatar
    Banlanmış Üye
    Kayıt Tarihi: 06/Ağustos/2017
    Erkek

    Hocam o komutların olduğu dosyayı. .sh uzxantılı olarak kaydet ve aynı şekilde editlemeye devam et.

    dosyaya:

    #!/bin/bash
    STRING="Hello World"
    echo $STRING

    yaz ve kaydet. daha sonra terminalde o dosyanın klasörüne git cd ile. bash filename.sh veya sh filename.sh Tşeklinde çalıştır.
    Ekranda hello world gördüysen, dosyanın içeriğini şununla değiştir:

    #!/bin/bash 

    for VARIABLE in 1 2 3 4 5

    do

    echo "Hello World"

    sleep 9

    done

    ve dosyayı kaydet ve sh filename.sh veya bash filename.sh Tşeklinde çalıştır. Konsola 5 kez hello world yazar bu loop. ayrıca her yazı işleminden sonra 9 saniye bekler.
    işte sen echo yerine ne yaptırmak istiyorsan yazarsın. istersen sleep 9u silersin her şeyi birden yapar 

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Bektas
    x-files
    x-files's avatar
    Kayıt Tarihi: 06/Eylül/2005
    Erkek

    Cron job

    https://www.zulfumehmet.com/linux-sistemlerde-cron/

    Bu makaleyi incele. Görev oluştur 1 dakkada bir istediğin dosyayı çalıştırsın yada daha ez bir sürede.


    //Hayat Bazen Tatlıdır//--//Aşıksan vur saza şoförsen bas gaza// https://zulfumehmet.com/ Kişisel bir olay
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AlpBTN
    AlpBTN's avatar
    Banlanmış Üye
    Kayıt Tarihi: 06/Ağustos/2017
    Erkek

    İkinci soruna gelirsek: Şimdi diyelim ki senin linux (ownerı: k) masaustunde "ornek" adında bir klasörün var. İçinde de "c.txt" ve "k.txt" adında iki text dosyası var. Bu dosyaların içinde de komutlar var
    (alt alta dizili ve son line boş bırakılacak*)
    Şunun gibi:
    --------------------------------
    /home/k/Desktop/ornek/c.txt
    --------------------------------
    echo Hello
    sleep 9
    echo World
    sleep 9
    ls /home/k/Desktop
    sleep 9

    --------------------------------
    /home/k/Desktop/ornek/k.txt
    --------------------------------
    echo 0
    sleep 9
    echo 9
    sleep 9

    --------------------------------

    Şimdi senin amacın bir .sh dosyası kullanarak bu klasordeki bu dosyaların içindeki komutları çalıştırmak.
    Sen bir tane .sh dosyası oluştur. içine şu kodu yaz:

    #!/bin/bash 
    for file in /home/k/Desktop/ornek/*
    do
            filename="$file"
            while read c; do 
                     echo $c ":"
                     eval $c
             done < $filename
    done
    ---------------------------------------
    Bu kodu o .sh dosyana yazdıktan sonra dosyayı masaüstüne deneme.sh olarak kaydet. Daha sonra bir terminal açıp
    sh /home/k/Desktop/deneme.sh veya bash /home/k/Desktop/deneme.sh Tolarak çalıştır.
    Ben bunu yazdım ve test ettim zaten sana da test edilmiş şekliyle gönderiyorum sen gerekli yerleri kendine göre değiştir.

    sen o komutu verdiğinde önce örnek klasöründeki tüm dosyalar için bir loop başlıyor. klasördeki her bir dosyanın sırayla her bir lineı okunuyor, line ekrana yazılıyor ve çalıştırılıyor. eval olduğu için sonucu da direk ekranda görürsün zaten.
    c.txt ve k.txt içindeki komutlara sleep ekledim çünkü çok hızlı olmasın sonucu gör istedim.

    Kolay gelsin 

     

     

     

     

     

     

     

    AlpBTN tarafından 09/Ağu/17 16:23 tarihinde düzenlenmiştir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AlpBTN
    AlpBTN's avatar
    Banlanmış Üye
    Kayıt Tarihi: 06/Ağustos/2017
    Erkek

    Buna ek olarak, klasördeki her bir dosya hangi sırayla açılacak onu bilemem, ls -v ile falan çözebilirsin istersen onu da ekleriz

    * ile belirttiğim açıklama:
    C standardına göre: text dosyaları boş bir satırla bitmeli, aksi halde son satırın doğru okunup okunmayacağı muamma

    The C standard says that text files must end with a newline or the data after the last newline may not be read properly.

    ISO/IEC 9899:2011 §7.21.2 Streams

    A text stream is an ordered sequence of characters composed into lines, each line consisting of zero or more characters plus a terminating new-line character. Whether the last line requires a terminating new-line character is implementation-defined. Characters may have to be added, altered, or deleted on input and output to conform to differing conventions for representing text in the host environment. Thus, there need not be a one-to- one correspondence between the characters in a stream and those in the external representation. Data read in from a text stream will necessarily compare equal to the data that were earlier written out to that stream only if: the data consist only of printing characters and the control characters horizontal tab and new-line; no new-line character is immediately preceded by space characters; and the last character is a new-line character. Whether space characters that are written out immediately before a new-line character appear when read in is implementation-defined.

     

    AlpBTN tarafından 09/Ağu/17 16:24 tarihinde düzenlenmiştir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AlpBTN
    AlpBTN's avatar
    Banlanmış Üye
    Kayıt Tarihi: 06/Ağustos/2017
    Erkek

    Hocam bir de bunu elle çalıştırdık ya eğer belli zamanda çalışsın istersen sudo crontab -e ile crontabi açarsın. INSERT moduna geçersin. yeni bir satır oluşturup oraya alttakini eklersin sonra kaydedip çıkarsın

    15 16 * * * /usr/bin/sh /home/k/Desktop/deneme.sh

    her gün 16:15'te masaüstündeki dosyanın çalışması laızm outputunu da istersen alttaki kodla değiştir

    15 16 * * * /usr/bin/sh /home/k/Desktop/deneme.sh >> /home/k/Desktop/cronLogForDenemeSH.txt 2>&1

     

    AlpBTN tarafından 09/Ağu/17 16:43 tarihinde düzenlenmiştir
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek

    "sublime text te kodlarımı düzgünce yazıyorum" hocam simdi benim anlamadigim, sen kodlarini hangi dilde yaziyorsun?

    Derleniyor mu yoksa yorumlaniyor mu?


    0x0480 takilin madem ﷽﷽﷽
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    erebos
    erebos's avatar
    Kayıt Tarihi: 13/Ocak/2010
    Erkek

    cok teşekkür ederim herkese süpermen dolu forum :D sublime text tamamdır

    for döngüsü için biraz daha çalışmam gerek sanırım çünkü bir türlü yapamıyorum kodları soran arkadaşlar için örnek olarak iki komutu göstereyim bundan birsürü var ve her yeni komut bir önceki dosyanın çıktısını alıp işleyip yeni bir dosya veriyor böyle 5 6 kadar daha komut var ve eklenecek.

    samtools sort -0 (işlemden çıkmış dosya-x)  (işlemegirecek dosya-x)
    samtools mpileup -f (işlemden çıkmışdosya-x) (işlemden çıkmışdosya-y)

    daha anlaşılır şekliyle şöyle 

     

    samtools sort -0 (/home/erebos/desktop/sample/y.bam)  (/home/erebos/desktop/sample/x.bam)
    samtools mpileup -f (/home/erebos/desktop/sample/y.bam) (/home/erebos/desktop/sample/z.bcf)

     

    istediğim for döngüsü ise bu işleme girecek dosya x masaüstünde bir klasördeki bir dosya, ama ben bunu masaüstündeki o klasörün içindeki bütün dosyalara tek tek yapmasını istiyorum, sıkıntımsa şu, ortaya çıkacak dosyanın adını da ben belirliyorum def olarak belirlenmiyor, o yüzden komutu tekrar ettiğinde bir önceki sample ın çıktısını alıp tekrar işliyor. 

     


    Zira Kalemler kaldırılmış,sayfalar kurumuştur.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    erebos
    erebos's avatar
    Kayıt Tarihi: 13/Ocak/2010
    Erkek

    şuan daha büyük bir sıkımtım var, youtube da videoyu tam ekran yapıyorum ve geri çıkarken alt-tab ya da direk sağ alttan tıklayarak fark etmiyor, kitlenip kalıyo bilgisayar, tweak tool vardı ayarlarıyla oynamıştım kaldırdım fayda etmedi


    Zira Kalemler kaldırılmış,sayfalar kurumuştur.
Toplam Hit: 3172 Toplam Mesaj: 12
linux for döngüsü terminar