Bash: Deney ortamı – Regex deney ortamı

Ney?
sed, awk, grep gibi komutlar ile denemeler yapabilmek için bir ortam oluşturur. “Ortam” deney dosyaları ve kısıtlı çalışan bir bash kabuğundan oluşuyor.

Şu konuya da göz atabilirsiniz: 5.000.000 işlem 1 Satır

Amaç?

  • Gösteren ve uygulayan kişinin aynı dosyalar ile çalışmasını sağlamak.
  • Uygulayan kişinin kısıtlı bir ortamda çalışması.

Kısıtlı Ortam?
bash kabuğunun özel bir modu – rbash veya bash --restricted ile girilir. Bu modda, özellikler ve komutlar kısıtlanmıştır. Çalışma ortamının özelliklerini kontrol etmek ve mesela yeni başlayan kullanıcıların hata yapma olasılığını minimize etmek için kullanılıyor.

Deney Dosyaları?
Isimler, Atasözleri, Türkçe-Ingilizce kelimeler ve birkaç (tek-renk) Resim den oluşan bazı deney dosyaları.


Kur:

0parse-all.txt'nin içeriğini işlettiğinizde, gerekli betikler ve klasörler oluşturulur.

Işletmek için iki seçeneğiniz var:

  1. dosya: 0parse-all.txt dosyasını indirdikten sonra, bir terminal-penceresi'nde çalıştırarak.

    bash 0parse-all.txt
    
    Göster

    10-kur-indir

  2. kod-kutusu: Aşağıdaki “Kod-Kusunda” ki tüm satırları kopyalayıp bir terminal-penceresi'ne yapıştırarak.

    Göster

    10-kur-kopyala

    Kod-Kutusu
    #!/usr/bin/env bash
    ## -- vi:ft=sh:
    
    ## -- evvel
    desk=$(xdg-user-dir DESKTOP)
    baz=$desk/dene-regex
    mkdir $baz 2> /dev/null
    cd $baz
    dr_bashrc=$baz/bashrc dr_denebash=$baz/dene.bash dr_deneayar=$baz/dene.ayar dr_dosyabash=$baz/dosya.bash dr_dosyaayar=$baz/dosya.ayar
    
    ## -- bashrc
    cat <<-"EOF0" > bashrc
    #!/usr/bin/env bash
    
    # temiz ayar:
    unalias -a
    
    # dene ayar:
    . "${BASH_SOURCE%/*}"/dene.ayar
    export PS1="\[\033[00;30;43m\]Pardus \[\033[00m\] "
    export PATH=$d_komut:$HOME/bin/dene-regex
    
    # ev:
    cd $baz
    
    # komut:
    lakap(){
        # YAP: Girdi denetimi
        [[ -d $d_komut ]] && /bin/rm -r $d_komut/
        /bin/mkdir $d_komut
    
        for k in ${izinli_komutlar[@]} ; do
            if [[ ! -L $k ]] ; then
                if type -P /bin/$k &> /dev/null ; then
                    /bin/ln -s /bin/$k $d_komut/$k
                elif type -P /usr/bin/$k &> /dev/null ; then
                    /bin/ln -s /usr/bin/$k $d_komut/$k
                else
                    echo "HATA: $k komutunun yeri doğru belirtilmeli"
                fi
            fi
        done
    
        /bin/ln -s /bin/rm $d_komut/.bunu_kullanma_rm
    
        alias grep="grep --color=always"
    }
    lakap
    
    # denetle:
    # kısıtlı mod
    shopt -q restricted_shell && dar=1 && printf '\033[1;33;40m\n%s\n\033[0m\n' 'Kısıtlı "regex deneme" modundasınız.'
    
    # toparla:
    trap ".bunu_kullanma_rm -r $d_komut ; printf '\033[1;33;40m\n%s\n\033[0m\n' 'Regex deneme modundan çıktınız.' " 0
    EOF0
    ## -- dene.bash
    cat <<-"EOF0" > dene.bash
    #!/usr/bin/env bash
    
    desk=$(xdg-user-dir DESKTOP)
    deneayar=$desk/dene-regex/dene.ayar
    # deneayar="${BASH_SOURCE%/*}/dene.ayar"
    . "$deneayar"
    
    # yardımcılar:
    yardim() {
        echo "
        Opsiyonlar:
            -y | -? | --yardım  Yardım.
            -t | --temizle      Denek dosyalarını yenile.
            -k | --kalıcı       Başlatıcı ve ayar dosyalarını kalıcı olarak yerleştir ve bitir.
    
        Örnekler:
            $bet
            $bet --temizle
            $bet --yardım
            $bet --kalıcı
        "
    }
    
    # DOSYA:
    # deney klasörü ve içeriğini yenile
    temizle() {
        # if [ "$1" -eq "$1" ] 2> /dev/null ; then
        if [[ "$1" == 1 ]] ; then
            c=e
        else
            local c
            printf '%s\n%s' "$1" "$2"
            read c
        fi
    
        if [ $c = e ] ;  then
            printf '%s\n%s\n' '"Evet" dediniz.' "Deney dosyaları yenilendi!"
            "$baz/./dosya.bash"
        else
            printf '%s\n%s\n' '"Hayır" dediniz.' "Deney dosyaları yenilanmedi!"
            exit 0
        fi
    }
    
    # KALICI
    kalici(){
        # uçbirimden veya menüden çalıştırabilmek için
    
        # dizinler
        denebinkal="$HOME/.local/bin/dene-regex/${denebin##*/}"
        local dd="${denebinkal%/*}"
        local dm="${denemasa%/*}"
        [ ! -d "$dd" ] && mkdir -p "$dd"
        [ ! -d "$dm" ] && mkdir -p "$dm"
    
        # patika
        # if echo $PATH | grep -q "$dd" ; then
        if grep -q "$dd" "$kabukayar" ; then
            :
        else
            echo -e "\n# dene-regex program patikasını ekle\nexport PATH=\$PATH:$dd" >> "$kabukayar"
        fi
    
        # uçbirim çalıştırıcı
        # YAP: - uninstall-temizliğinde sil.
        denebinkal="${denebinkal%.*}"
        [ ! -e "$denebinkal" ] && ln -s "$denebin" "${denebinkal}"    # local-dene -> baz-dene.bash
        # chmod ug+x "$denebin"
    
        # masaüstü çalıştırıcı
        [ -e "$denemasa" ] && rm "$denemasa"
        cat -- > "$denemasa" <<EOF
    [Desktop Entry]
    Name=dene-regex
    Comment=Regex deney ortamı ve dosyaları oluşturur
    Exec=xfce4-terminal --command='bash "$denebin"'
    Icon=utilities-terminal
    Terminal=false
    Type=Application
    Categories=Application;
    EOF
    }
    
    # ARGÜMAN:
    # (( $# <= 0 )) && printf '%s %s\n' "Ipucu: Yardım için '-y' opsiyonunu kullanın:" "$bet -y"
    
    # argümanları işle
    while : ; do
        case $1 in
            -y|-\?|--yardım)
                yardim
                exit 0
                ;;
            -t|--temizle)
                temizle "Deney dosyalar yenileniyor." "Devam edilsinmi? (e/h)"
                shift
                ;;
            -k|--kalıcı)
                kalici
                exit 0
                shift
                ;;
            -?*)
                printf 'IPTAL: Opsiyon "%s" tanımlanamadı!\n' "$1" >&2
                ;;
            *)               # Opsiyon kalmadı
                break
        esac
    
        shift
    done
    
    # DENETIM
    
    # dosya: deney dosyaları yenile
    [ ! -d "$d_denek" ] && temizle 1 && echo "$d_denek"
    
    # KISITLI:
    
    # kısıtlı kabuk ortamı
    /bin/rbash --rcfile "$baz/bashrc"
    EOF0
    ## -- dene.ayar
    cat <<-"EOF0" > dene.ayar
    #!/usr/bin/env bash
    
    # Desktop | Masaüstü | ...
    desk=$(xdg-user-dir DESKTOP)
    # temel
    export baz=$desk/dene-regex
    # kullanıma açık/izinli komutlar
    d_komut="$baz/komut"
    # deney dosyalar
    d_denek="$baz/denek"
    
    # ayarlar
    export deneayar="$baz/dene.ayar"
    kabukayar=$HOME/.bashrc
    
    # çalıştırıcılar
    denebin="$baz/dene.bash"    # '--kalıcı' opsiyonunda değişir!
    denemasa="$HOME/.local/share/applications/dene-regex.desktop"
    
    # betik ismi
    bet=$(basename "$BASH_SOURCE")
    
    # KOMUT:
    # izinli komutlar:
    # kullanmak istediğiniz komut'un ismini bu listeye ekleyin
    izinli_komutlar=(
    clear
    ls
    cat
    grep
    sed
    awk
    find
    locate
    less
    more
    mkdir
    )
    EOF0
    ## -- dosya.bash
    cat <<-"EOF0" > dosya.bash
    #!/usr/bin/env bash
    
    . $deneayar
    
    # vars:
    dosbaz="$baz/denek"
    ctf="$baz/dosya.ayar"     # isim
    lmark=4
    
    # generate files/dirs from yaml-like list
    genden () {
        # YAP:
        # - dosya kaynaklı içerik yerleştirme
        # - patika bağlamında içerik belirleme: '2018/ali' ve '2017/ali' dosyalarına farklı içerik
    
        local dm=(
            "-vberkant=Berkant'ın dosyası"
            "-vdeniz=Deniz'ın dosyası"
            "-vyakup=Yakup'un dosyası"
            "-vkarmaisimler=Aybüke\nAytuğ\nAli\nAyşe\nBerkant\nDeniz\nMuhammed\nMert\nMertcan"
            "-visimlera=Abid       | 4 | Erkek\nAbidin     | 6 | Erkek\nAbir       | 4 | Erkek\nAbır       | 4 | Erkek\nAbıru      | 5 | Kız\nAbit       | 4 | Erkek\nAbiye      | 5 | Kız\nAcabay     | 6 | Erkek\nAcabey     | 6 | Erkek\nAça        | 3 | Kız\nAçalya     | 6 | Kız\nAçangül    | 7 | Kız\nAcarbey    | 7 | Erkek\nAcarbike   | 8 | Kız\nAdam       | 4 | Erkek\nAdamış     | 6 | Erkek\nAdni       | 4 | Erkek\nAdniye     | 6 | Kız\nAfife      | 5 | Kız\nAfif       | 4 | Erkek\nAğanbegim  | 9 | Kız\nAğanbegüm  | 9 | Kız\nAğanbike   | 8 | Kız\nAkal       | 4 | Erkek\nAkalın     | 6 | Erkek Kız\nAkanay     | 6 | Erkek Kız\nAkaner     | 6 | Erkek\nAkarsel    | 7 | Erkek\nAkarsu     | 6 | Erkek Kız\nAkbaşak    | 7 | Erkek Kız\nAkbaş      | 5 | Erkek\nAkhan      | 5 | Erkek\nAkhanım    | 7 | Kız\nAlakurt    | 7 | Erkek\nAlakuş     | 6 | Erkek Kız\nAlçın      | 5 | Erkek\nAlçin      | 5 | Kız\nAlime      | 5 | Kız\nAlim       | 4 | Erkek\nAlım       | 4 | Kız\nAlp        | 3 | Erkek\nAlpermiş   | 8 | Erkek\nAlpertunga | 10 | Erkek\nAlpgiray   | 8 | Erkek\nAlphan     | 6 | Erkek\nAlsoy      | 5 | Erkek Kız\nAlsu       | 4 | Kız\nAltınnur   | 8 | Kız\nAltınok    | 7 | Erkek\nAmber      | 5 | Kız\nAmile      | 5 | Kız\nAmil       | 4 | Erkek\nAngıl      | 5 | Erkek\nAngın      | 5 | Erkek Kız\nAngış      | 5 | Erkek\nArife      | 5 | Kız\nArif       | 4 | Erkek\nArkan      | 5 | Erkek\nArkay      | 5 | Kız\nArukan     | 6 | Erkek\nArukız     | 6 | Kız\nAsalbegim  | 9 | Kız\nAsalbegüm  | 9 | Kız\nAsan       | 4 | Erkek\nAşan       | 4 | ErkekÂsan | Kız\nAsile      | 5 | Kız\nAsil       | 4 | Erkek\nAsılgül    | 7 | Kız\nAsıma      | 5 | Kız\nAşkınay    | 7 | Erkek\nAşkıner    | 7 | Erkek\nAşkın      | 5 | Erkek Kız\nAslı       | 4 | Kız\nAslım      | 5 | Kız\nAslınur    | 7 | Kız\nAsliye     | 6 | Kız\nAtaan      | 5 | Erkek\nAtabay     | 6 | Erkek\nAtabek     | 6 | Erkek\nAtabey     | 6 | Erkek\nAtabörü    | 7 | Erkek\nAtacan     | 6 | Erkek\nAtaç       | 4 | Erkek\nAtagül     | 6 | Kız\nAtagün     | 6 | Erkek\nAtasagun   | 8 | Erkek\nAtasan     | 6 | Erkek\nAtasay     | 6 | Erkek\nAtik       | 4 | ErkekÂtik | Kız\nAtila      | 5 | Erkek\nAtlıhan    | 7 | Erkek\nAtmaca     | 6 | Erkek\nAtom       | 4 | Erkek\nAvar       | 4 | Erkek\nAvcı       | 4 | Erkek\nAvhan      | 5 | Erkek\nAvkan      | 5 | Erkek\nAvni       | 4 | Erkek\nAvniye     | 6 | Kız\nAya        | 3 | Kız\nAyal       | 4 | Kız\nAyalp      | 5 | Erkek\nAyaltın    | 7 | Erkek Kız\nAyana      | 5 | Kız\nAyanç      | 5 | Erkek\nAyanfer    | 7 | Kız\nAyaşan     | 6 | Kız\nAyas       | 4 | Erkek Kız\nAybala     | 6 | Kız\nAybanu     | 6 | Kız\nAybar      | 5 | Erkek\nAybars     | 6 | Erkek\nAybaş      | 5 | Erkek\nAybay      | 5 | Erkek\nAybet      | 5 | Kız\nAybey      | 5 | Erkek\nAybige     | 6 | Kız\nAybike     | 6 | Kız\nAybirgen   | 8 | Kız\nAybir      | 5 | Kız\nAybüge     | 6 | Kız\nAybüke     | 6 | Kız\nAydanur    | 7 | Kız\nAydar      | 5 | Erkek Kız\nAydemir    | 7 | Erkek\nAydınyol   | 8 | Erkek\nAydoğan    | 7 | Erkek Kız\nAydoğdu    | 7 | Erkek\nAyferi     | 6 | Kız\nAyferim    | 7 | Kız\nAyfer      | 5 | Kız\nAygen      | 5 | Kız\nAygerim    | 7 | Kız\nAygök      | 5 | Kız\nAygöl      | 5 | Kız\nAygüner    | 7 | Erkek\nAygün      | 5 | Erkek Kız\nAygünkız   | 8 | Kız\nAyhanım    | 7 | Kız\nAyhatun    | 7 | Kız\nAyık       | 4 | Erkek\nAyilkin    | 7 | Kız\nAyla       | 4 | Kız\nAylan      | 5 | Erkek Kız\nAylanur    | 7 | Kız\nAylin      | 5 | Kız\nAyman      | 5 | Erkek\nAymaral    | 7 | Kız\nAymelek    | 7 | Kız\nAyselen    | 7 | Kız\nAysel      | 5 | Kız\nAysema     | 6 | Kız\nAysen      | 5 | Kız\nAyşen      | 5 | Kız\nAyşenur    | 7 | Kız\nAysere     | 6 | Kız\nAyseren    | 7 | Kız\nAyser      | 5 | Kız\nAyseven    | 7 | Kız\nAysever    | 7 | Erkek\nAysev      | 5 | Erkek Kız\nAytek      | 5 | Erkek Kız\nAytekin    | 7 | Erkek\nAytemiz    | 7 | Erkek Kız\nAytemur    | 7 | Erkek\nAzize      | 5 | Kız\nAziz       | 4 | Erkek\nAzrak      | 5 | Erkek\nAzra       | 4 | Kız\nAzze       | 4 | Kız"
            "-visimlerb=Babürşah  | 8 | Erkek\nBacı      | 4 | Kız\nBadegül   | 7 | Kız\nBade      | 4 | Kız\nBağdaç    | 6 | Erkek\nBağdagül  | 8 | Kız\nBağdaş    | 6 | Erkek\nBağlan    | 6 | Kız\nBâhire    | 6 | Kız\nBahir     | 5 | Erkek\nBâhir     | 5 | Erkek\nBahise    | 6 | Kız\nBahri     | 5 | Erkek\nBahriye   | 7 | Kız\nBahtiyar  | 8 | Erkek Kız\nBakanay   | 7 | Erkek Kız\nBalbal    | 6 | Erkek\nBalbay    | 6 | Erkek\nBalbey    | 6 | Erkek\nBalca     | 5 | Kız\nBalcan    | 6 | Erkek\nBaldan    | 6 | Kız\nBaldemir  | 8 | Erkek\nBaler     | 5 | Erkek\nBalhan    | 6 | Erkek\nBalıbaş   | 7 | Erkek\nBalibey   | 7 | Erkek\nBalıbey   | 7 | Erkek\nBalı      | 4 | Erkek\nBalım     | 5 | Erkek Kız\nBalın     | 5 | Kız\nBalkan    | 6 | Erkek\nBalk      | 4 | Erkek\nBalkı     | 5 | Erkek Kız\nBalkın    | 6 | Kız\nBalkır    | 6 | Erkek Kız\nBalkış    | 6 | Erkek\nBalkız    | 6 | Kız\nBalkoç    | 6 | Erkek\nBasak     | 5 | Erkek\nBaşak     | 5 | Kız\nBaşal     | 5 | Erkek\nBasri     | 5 | Erkek\nBasriye   | 7 | Kız\nBatı      | 4 | Erkek Kız\nBatıhan   | 7 | Erkek\nBatıray   | 7 | Erkek\nBatır     | 5 | Erkek\nBatırhan  | 8 | Erkek\nBattal    | 6 | Erkek\nBatucem   | 7 | Erkek\nBatu      | 4 | Erkek\nBatuhan   | 7 | Erkek\nBaturalp  | 8 | Erkek\nBaturay   | 7 | Erkek\nBatur     | 5 | Erkek\nBaturhan  | 8 | Erkek\nBeder     | 5 | Kız\nBedia     | 5 | Kız\nBedi      | 4 | Erkek\nBedihe    | 6 | Kız\nBedih     | 5 | Erkek\nBedir     | 5 | Erkek\nBedirhan  | 8 | Erkek\nBedirnisa | 9 | Kız\nBedis     | 5 | Kız\nBediz     | 5 | Erkek Kız\nBedreka   | 7 | Kız\nBedrettin | 9 | Erkek\nBedri     | 5 | Erkek\nBedriye   | 7 | Kız\nBedük     | 5 | Erkek\nBeğenç    | 6 | Erkek\nBegim     | 5 | Kız\nBegüm     | 5 | Kız\nBehçet    | 6 | Erkek\nBehice    | 6 | Kız\nBehiç     | 5 | Erkek\nBehin     | 5 | Kız\nBehire    | 6 | Kız\nBehiye    | 6 | Kız\nBehlül    | 6 | Erkek\nBehmen    | 6 | Erkek\nBehnane   | 7 | Kız\nBehnan    | 6 | Erkek\nBelma     | 5 | Kız\nBelmen    | 6 | Kız\nBenal     | 5 | Erkek\nBenam     | 5 | Erkek\nBenan     | 5 | Erkek Kız\nBenay     | 5 | Kız\nBenazir   | 7 | Erkek\nBender    | 6 | Erkek\nBendeş    | 6 | Erkek\nBenek     | 5 | Kız\nBener     | 5 | Erkek\nBenevşe   | 7 | Kız\nBengialp  | 8 | Erkek\nBengibay  | 8 | Erkek\nBengi     | 5 | Erkek Kız\nBengigül  | 8 | Kız\nBengisan  | 8 | Erkek Kız\nBengisoy  | 8 | Erkek\nBengisu   | 7 | Erkek Kız\nBerceste  | 8 | Kız\nBercis    | 6 | Kız\nBereket   | 7 | Erkek Kız\nBeren     | 5 | Erkek Kız\nBerfin    | 6 | Erkek Kız\nBerfu     | 5 | Kız\nBerge     | 5 | Erkek\nBergin    | 6 | Erkek\nBergüzar  | 8 | Kız\nBeria     | 5 | Kız\nBeri      | 4 | Erkek\nBerin     | 5 | Erkek Kız\nBeriye    | 6 | Kız\nBerkal    | 6 | Erkek\nBerkan    | 6 | Erkek\nBerkant   | 7 | Erkek\nBerkay    | 6 | Erkek\nBerke     | 5 | Erkek Kız\nBerkel    | 6 | Erkek\nBerker    | 6 | Erkek\nBeşer     | 5 | Erkek\nBeşgül    | 6 | Kız\nBesime    | 6 | Kız\nBesim     | 5 | Erkek\nBetik     | 5 | Erkek Kız\nBetil     | 5 | Kız\nBetim     | 5 | Erkek\nBetülay   | 7 | Kız\nBetül     | 5 | Kız\nBeyazıt   | 7 | Erkek\nBeyzade   | 7 | Erkek\nBeyza     | 5 | Kız\nBeyzat    | 6 | Erkek\nBezek     | 5 | Kız\nBezen     | 5 | Kız\nBezmiâlem | 9 | Kız\nBican     | 5 | Erkek\nBidar     | 5 | Kız\nBidayet   | 7 | Kız\nBige      | 4 | Kız\nBigüm     | 5 | Kız\nBihan     | 5 | Kız\nBihan     | 5 | Kız\nBihine    | 6 | Kız\nBihterin  | 8 | Kız\nBihter    | 6 | Kız\nBike      | 4 | Kız\nBilâl     | 5 | Erkek\nBilan     | 5 | Erkek\nBilay     | 5 | Erkek Kız\nBilbaşar  | 8 | Erkek\nBilbay    | 6 | Erkek\nBileda    | 6 | Erkek\nBilek     | 5 | Erkek\nBilender  | 8 | Erkek\nBilen     | 5 | Erkek Kız\nBilnur    | 6 | Erkek\nBilsay    | 6 | Erkek\nBilsen    | 6 | Erkek Kız\nBilsev    | 6 | Kız\nBilsin    | 6 | Kız\nBiltaş    | 6 | Erkek\nBiltay    | 6 | Erkek\nBilyap    | 6 | Erkek\nBirce     | 5 | Erkek Kız\nBirçek    | 6 | Kız\nBirdal    | 6 | Erkek Kız\nBirge     | 5 | Erkek Kız\nBirgen    | 6 | Kız\nBirgi     | 5 | Erkek\nBirgit    | 6 | Erkek\nBirgül    | 6 | Kız\nBirgün    | 6 | Kız\nBirhan    | 6 | Erkek Kız\nBiricik   | 7 | Kız\nBirim     | 5 | Kız\nBiriz     | 5 | Erkek Kız\nBirkan    | 6 | Erkek\nBirke     | 5 | Kız\nBirkök    | 6 | Erkek\nBirmen    | 6 | Erkek\nBirnaz    | 6 | Kız\nBirnur    | 6 | Kız\nBoyer     | 5 | Erkek\nBoy       | 3 | Erkek\nBoylan    | 6 | Erkek\nBoylu     | 5 | Erkek\nBoynak    | 6 | Erkek\nBoyraz    | 6 | Erkek\nBoysal    | 6 | Erkek\nBoysan    | 6 | Erkek\nBozan     | 5 | Erkek\nBozat     | 5 | Erkek\nBozay     | 5 | Erkek\nBozbağ    | 6 | Erkek\nBozbala   | 7 | Erkek\nBozbaş    | 6 | Erkek\nBozbay    | 6 | Erkek\nBozbey    | 6 | Erkek\nBozbora   | 7 | Erkek\nBucak     | 5 | Erkek\nBudak     | 5 | Erkek\nBudunal   | 7 | Erkek\nBudunalp  | 8 | Erkek\nBudun     | 5 | Erkek\nBuğday    | 6 | Kız\nBüğdüz    | 6 | Erkek\nBüge      | 4 | Erkek Kız\nBüget     | 5 | Erkek\nBuğra     | 5 | Erkek\nBüte      | 4 | Kız\nBütün     | 5 | Erkek Kız\nBuyan     | 5 | Erkek\nBuyrukalp | 9 | Erkek\nBuyrukata | 9 | Erkek\nBuyrukbay | 9 | Erkek"
            "-vtureng=acımak           | 6  | » ache 4 » bepainful 9 » hurt 4\nacındırmak       | 10 | » excitepity 10\nacıtmak          | 7  | » hurt 4\nalkışlamak       | 10 | » acclaim 7 » applaud 7 » clap 4\nalmak            | 5  | » get 3 » layholdof 9 » pickup 6 » take 4 » have 4 » receive 7\nalmanak          | 7  | » almanac 7\nbalkon           | 6  | » balcony 7\nbalon            | 5  | » balloon 7\nbüyük elçi       | 9  | » ambassador 10\nbüyük kilise     | 11 | » cathedral 9\nbüyük zil        | 8  | » cymbal 6\ndomuz eti        | 8  | » pork 4\ndomuz pastarması | 15 | » bacon 5\ndüşmek           | 6  | » drop 4 » fall 4\ndüşünmek         | 8  | » think 5\nerkek domuz      | 10 | » boar 4\nerkek kardeş     | 11 | » brother 7\ngöbek            | 5  | » abdomen 7 » belly 5 » tummy 5\ngöndermek        | 9  | » send 4 » transmit 8\ngörmek           | 6  | » see 3\ngüzel koku       | 9  | » aroma 5 » flavour 7\ngüzel sanat      | 10 | » art 3\nhiçbir yerde     | 11 | » nowhere 7\nhiçbir şey       | 9  | » nothing 7\nkabul edilebilir | 15 | » acceptable 10\nkabul etmek      | 10 | » accept 6 » receive 7 » take 4 » takein 6\nkaplan           | 6  | » tiger 5\nkaptan           | 6  | » captain 7\nkartal           | 6  | » eagle 5\nkartpostal       | 10 | » postcard 8\nkesin            | 5  | » accurate 8 » ontime 6 » prompt 6 » punctual 8\nkeskin           | 6  | » acerbic 7 » bitter 6\nkulak            | 5  | » ear 3\nkullanmak        | 9  | » employ 6 » use 3 » makeuseof 9\nkılıç            | 5  | » sword 5\nkırlangıç        | 9  | » swallow 7\nnefes alma       | 9  | » breath 6\nnefes almak      | 10 | » breathe 7\nsevmek           | 6  | » love 4\nseçmek           | 6  | » choose 6 » elect 5 » pickout 7\ntarak            | 5  | » comb 4\ntaramak          | 7  | » comb 4\ntavan            | 5  | » ceiling 7\ntavşan           | 6  | » rabbit 6 » hare 4\ntoplamak         | 8  | » collect 7 » gather 6 » pickup 6\ntoprak           | 6  | » earth 5 » land 4 » soil 4\nyazmak           | 6  | » write 5\nyaşamak          | 7  | » bealive 7 » live 4\nyürümek          | 7  | » march 5 » walk 4\nyüzmek           | 6  | » float 5 » swim 4"
            )
    
        mapfile -t comm < <( awk "${dm[@]}" -v dosbaz=$dosbaz '
    
        BEGIN{
            FS="[[:space:]:]*$"
        }
    
        # transliterate `ş` -> `s`, ` ` -> ``, ...
        function translit(){
            r=""
            split(gensub(/^(.*)\.[^\.]*$/, "\\1", "g", $0), ascii, /[şŞıçÇğĞ[:blank:]]|[^[:alnum:]]/, seps)
            for (as in ascii){
                if(seps[as]!~/[şŞıçÇğĞ]/){
                    seps[as]=""
                }
                r = r ascii[as] seps[as]
            }
            c="echo "gensub(/\"/, "", "g", r)" | iconv -f utf-8 -t ascii//translit"; while ( c | getline r ){print r }
            return r
        }
    
        {
            # girinti
            gkh=4
            bos=(match($1, /\S/)-1)
            g=int( (bos + (gkh-1)) / gkh )
            # sil: ön-boşlar
            sub(/^[[:space:]]+/, "", $0)
            # dize
            d=$1
            # im: (im k)lasör
            if ($0~/^.*:\s*$/){
                imk=1; dm=0
            } else {
                imk=0; dm=0
    
                ddm=translit()
    
                if(length(SYMTAB[ddm])!=0){
                    dm=1
                    dmic=SYMTAB[ddm]
                }
            }
        }
    
        {
            # anahtar: (g)irinti
            if (g==0){
                hamal=dosbaz"/"d
            } else if (g==sg){
                sub(/[^\\\/]+[\\\/]*$/, d, hamal)
            } else if (g>sg){
                hamal=hamal"/"d
            } else if (g<sg){
                ks=(sg-g)+1
                hamal=gensub("(/[^/]+){"ks"}$", "", "g", hamal)"/"d
            }
        }
    
        {
            if (imk==0){
                if (dm==1){
                    dosic=dosic" echo \""dmic"\" > \""hamal"\";"
                } else {
                    dos=dos" \""hamal"\""
                }
            } else {
                diz=diz" \""hamal"\""
            }
            sg=g
        }
    
        END {
            if(hata!=1){
                system("mkdir -pv " diz)
                system("touch " dos)
                system(dosic)
            }
    
        }
        ' < <(sed '/^#\|^$/d' $ctf)
        )
    }
    genden
    
    # base64 resim:
    res64 () {
        # base64 vars:
        local res__yellow_50__png='iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAQMAAAAk8RryAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEX//wD///+LefOdAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+ICEQsSH/yU4XQAAAAOSURBVBjTY2AYBYMJAAABkAABxZvbSQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wMi0xN1QwODoxODozMSswMzowMH/Go+gAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTgtMDItMTdUMDg6MTg6MzErMDM6MDAOmxtUAAAAAElFTkSuQmCC' res__turquoise3_50__png='iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAQMAAAAk8RryAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEUAxc3///8AC86tAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+ICEQsSH/yU4XQAAAAOSURBVBjTY2AYBYMJAAABkAABxZvbSQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wMi0xN1QwODoxODozMSswMzowMH/Go+gAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTgtMDItMTdUMDg6MTg6MzErMDM6MDAOmxtUAAAAAElFTkSuQmCC' res__yellow_100__png='iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAQMAAABKLAcXAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEX//wD///+LefOdAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+ICEQsSH/yU4XQAAAAUSURBVDjLY2AYBaNgFIyCUUBPAAAFeAABKXG5/AAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wMi0xN1QwODoxODozMSswMzowMH/Go+gAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTgtMDItMTdUMDg6MTg6MzErMDM6MDAOmxtUAAAAAElFTkSuQmCC' res__turquoise3_100__png='iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAQMAAABKLAcXAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEUAxc3///8AC86tAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+ICEQsSH/yU4XQAAAAUSURBVDjLY2AYBaNgFIyCUUBPAAAFeAABKXG5/AAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wMi0xN1QwODoxODozMSswMzowMH/Go+gAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTgtMDItMTdUMDg6MTg6MzErMDM6MDAOmxtUAAAAAElFTkSuQmCC' res__yellow_50__jpg='/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAyADIDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAn/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAYJ/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AoKyqXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//2Q==' res__turquoise3_50__jpg='/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAyADIDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAX/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAcJ/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AurGz3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/Z' res__yellow_100__jpg='/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCABkAGQDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAn/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAYJ/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AoKyqXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//2Q==' res__turquoise3_100__jpg='/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCABkAGQDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAX/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAcJ/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AurGz3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/Z'
    
        # değişken ismi, değişken içeriği, resim ismi
        local dis=""  dic="" ris="" rout="$dosbaz/resim"
        [ ! -d "$rout" ] && mkdir $rout
        for v in ${!res__*} ; do
            dic="${!v}" ; dis=(${v//__/ }) ; ris="${dis[1]}.${dis[2]}" ;
            echo "$dic" | base64 -d --ignore-garbage  > "$rout/$ris"
        done
    }
    res64
    EOF0
    ## -- dosya.ayar
    cat <<-"EOF0" > dosya.ayar
    # Syntax:
    # girinti-sayısı == dosya-katmanı:
    #        ➊   ➋   ➌
    #       1-4|5-8|9-12| ...
    # kabul edilen harfler:
    #       tüm harfler
    
    kişiler (senelere göre):
        2018:
            berkant
            deniz
            yakup
        2017:
            berkant
            deniz
            yakup
    
    türkçe ingilizce:
        tur-eng.txt
    
    isimler:
        karma isimler.txt
        isimler a.txt
        isimler b.txt
        boş dosya 2.txt
    EOF0
    ## -- ahir
    chmod ug+x $dr_bashrc $dr_denebash $dr_deneayar $dr_dosyabash $dr_dosyaayar
    ./dene.bash
    # clear
    
    

Kullan:

  • Kısıtlı moddan çık:

    Ctrl-D (Control ve d tuşları) kullanarak çikabilirsiniz

  • Opsiyonlar:

    dene.bash --yardim  # yardım mesajı gösterir
    dene.bash --temizle # deney-dosyaları yeniden oluşturulur
    dene.bash --kalıcı  # kalıcı şekilde kur: `dene-regex.desktop` ve `dene` oluşturulur
    
    Göster: Opsiyonlar

    20-kullan-opsiyonlar

  • --kalıcı

    Kalıcı olarak kurduğunuzda, terminal-penceresinden dene komut’unu kullanarak ve whisker-menu'yu kullanarak çalıştırabilirsiniz.

    Göster: Kalıcı şekilde kur

    21-kullan-kalici

    Göster: Desktop panel-kısayolu oluştur

    21-kullan-kalici-desktop


Ayarla:

“Anahtar Teslim” bir program değil bu! Yani, “kullanıcı deneyiminden” ziyade “işlevsellik” odaklı bir altyapı hakim. Bu sebepten dolayı “Kullanım” açıklamaları fakir.

Ayar yapabileceğiniz üç yer

  • Betik Argümanları: Betiği çalıştırken eklenen opsiyonlar.

    Göster

    20-kullan-opsiyonlar

  • dene.ayar dosyasında bazı ayarlar yapmanız mümkün (mesela kısıtlı modda kullanabileceğiniz komutları).

    Göster

    ayar

  • dosya.ayar dosyasında. Bu (şimdilik) biraz karmaşık. özetle: dosya.ayar'da klasör veya dosyanı ekle, dosya.bash'de A-Za-z0-9 ve dosya-uzantısı hariç her karakteri silerek değişken oluştur.

    Göster

    ayar


Devamı?

Sırada

  • Deney-Satırları oluşturmak
  • Betik-Eklemeleri yapmak

Şimdilik bitti

5 Beğeni