Szkriptek: Python, Perl, Bash, ...

cython malloc-olt memória felszabadítása python-ból

Sziasztok!

Használnék egy python könyvtárat ami mögött cython alapú malloc alapú memóriaallokációt végző kód van:

https://gitlab.com/radish/PyV4L2Camera/-/blob/master/PyV4L2Camera/camer…

Az így lefoglalt memóriát átadja a "sima" python kódomnak:

https://gitlab.com/radish/PyV4L2Camera/-/blob/master/PyV4L2Camera/camer…

A visszaadott referenciát (fixme?) próbáltam 'del'-el felszabadítani, de ettől eltekintve elleakel a picsába a memóriát.

Telepítettem pip-el a cython-t (a legújabbat 3.0.0.a10-et) amiben _elvileg_ van mód a stdlib free wrappelésére:

https://cython.readthedocs.io/en/latest/src/tutorial/memory_allocation…

Viszont ez nem működik

ModuleNotFoundError: No module named 'cython.cimports.libc.stdlib'

elhal.

Ez vajon miért lehet?

Ez alapján létezik/het ilyen include van is benne wrapper a free-re:
https://github.com/cython/cython/blob/3.0.0a10/Cython/Includes/libc/std…

Lehet nem így kell behúzni?

Esetleg ha valaki tud más megoldást a felszabadításra az is jó lehet.
Most kb. annyi ötletem van,  mocskolok cythonban egy deallokáló rutint...

gimphez írt script írása oly módon, hogy a grafikus gimp el se induljon

Sziasztok.

Van sok-sok képem, amiken egy 8 lépcsős effektsorozatot akarok végrehajtani oly módon, hogy még a rétegeket is kezelem.
A kimenet egy gimp fájl lenne, amin manuálisan hajtanék végre egy CURVE görbemódosítást. (Ezután menteném el a végleges fájlt)

Célom az, hogy az első 8 lécsős feladat után kelljen egerészéssel és gyorsgombokkal szórakoznom.

Kérdés: hogyan írok gimp-scriptet, ami lefut parancssorban?

[megoldva] Adott terminál indítása gombkombinációval

Ubuntun kérdezem a teendőt. Normál módon Ctrl+Alt+T intítja a gnome-terminált.

Szeretnék egy olyan indítást, ami nem az alapértelmezett változtatot indítja, hanem egy (általam már korábban beállított) másikat (ami másik színű, mondjuk bordó – "prod"). Az is jó volna, ha ilyenkor egy megadott könyvtárban állna. Tehát valami olyasmire vágyom, hogy Ctrl+Alt+P ne az "alap"-ot indítsa, hanem a "prod"-ot.

comment sor figyelmen kívül hagyása

Egy fájlban ott figyel mondjuk a valami="blabla". Amíg ez van, addig jó. De ha kikommentelik: (Ez a jó szó?)  #valami="blabla" vagy # valami="blabla" akkor figyelmen kívül kéne hagyni. Eddig többek között azt próbáltam hogy grep -E '^#valami' file Ez jó akkor, ha a # jel után közvetlenül ott a szöveg. Viszont az hogy hány darab # jel van, illetve hogy mennyi szóköz van utána, az változhat. A lényeg hogy ebben az esetben a valami értéke a nagy semmi. Azt kell tudni hogyha az első karakter # akkor a valami="blabla" érvénytelen. Nem lehet feldolgozni. Ezt hogy tudnám megoldani? Egy szkriptből ellenőrizném ezt az értéket. Ha valaki esetleg megajándékozna egy megoldással kérem írja le hogy mi mit csinál, hogy meg is értsem, hogy a jövőben már ne zargassak senkit ilyen jellegű problémával. Köszönöm.

epoch idők feldolgozása színesben gyorsabban

Egy txt fájlban csak epoch idők vannak egymás alatt. Fel tudom dolgozni őket. De én színesben szeretném, és akkor már lassú, mert így már 4-szer kell konvertálnia a date parancsnak. Mivel mind az 5 oszlop más színű.
Azon is agyalok, hogy miként lehetne áttekinthetőbbé tenni. Ezt:

4 - 1642687800 - 2022-01-20 - 15:10:00 - csütörtök
4 - 1642711200 - 2022-01-20 - 21:40:00 - csütörtök
4 - 1642719000 - 2022-01-20 - 23:50:00 - csütörtök
5 - 1642774200 - 2022-01-21 - 15:10:00 - péntek
5 - 1642797600 - 2022-01-21 - 21:40:00 - péntek
5 - 1642805400 - 2022-01-21 - 23:50:00 - péntek

Valami ilyesmire:

4 - 1642687800 - 2022-01-20 - csütörtök   15:10:00
4 - 1642711200                                           21:40:00
4 - 1642719000                                           23:50:00
5 - 1642774200 - 2022-01-21 - péntek       15:10:00
5 - 1642797600                                           21:40:00
5 - 1642805400                                           23:50:00

Esetleg...

2022-01-20 - csütörtök
4 - 1642687800 - 15:10:00
4 - 1642711200 - 21:40:00
4 - 1642719000 - 23:50:00

2022-01-21 - péntek
5 - 1642774200 - 15:10:00
5 - 1642797600 - 21:40:00
5 - 1642805400 - 23:50:00

Jelenleg ez működik. 

while read -r Epoch; do
    HN="$(date --date @"${Epoch}" +'%u')"
    yhn="$(date --date @"${Epoch}" +'%F')"
    op="$(date --date @"${Epoch}" +'%T')"
    nap="$(date --date @"${Epoch}" +'%A')"
    echo "${NC}${HN} - ${Yellow}${Epoch} - ${Green}${yhn} - ${Cyan}${op} - ${White}${nap}"
done <<< "epoch.txt

A date parancsba nem tudom beilleszteni a színeket. Persze gyorsabb színek nélkül, de így is összefolyik. Létezik valami megoldás?

Dátum szerinti fájlnév

Sziasztok.

Adott egy parancssori program, aminek a kimenetét minden nap új fájlba írom.
Minden egyes fájlnév az aktuális dátumot tartalmazza kötőjellel, majd hozzátolok egy .log kiterjesztést.
Az a kérdésem, hogy frappánsan és röviden hogyan lehetne nevezni az ilyen loggolást?
Dátum szerinti fájlnév? Vagy van egy sokkal szebb, amit még sosem olvastam sehol?

ciklus és megjelenítés

Szeretném megoldani ezt a feladványt. A hét napjait szeretném kiíratni megfelelő formában. Tehát számokat adok meg. Teszem azt 3, akkor szerda. Ha 2-5 akkor kedd-péntek. Ha 1,3,7, akkor hétfő, szerda, vasárnap.

Végül is majdnem jó amit csináltam, csak annyi a baj, hogy az utolsó nap után is kiírja vesszőt, vagy a kötőjelet. Persze ciklusban van. mi mást csinálna. A sed meg mindenhonnan leszedi az utolsó két karaktert, így lőttek az elválasztóknak.

#!/bin/bash

HN="$1"
# HN lehet: 1,2,7    # HN lehet: 2-5   # HN lehet: 3
dayS () {
	case "${HNnum}" in
       "1") HNw="Monday";;
       "2") HNw="Tuesday";;  
       "3") HNw="Wednesday";; 
       "4") HNw="Thursday";; 
       "5") HNw="Friday";; 
       "6") HNw="Saturday";; 
       "7") HNw="Sunday";;
	esac
}

separate=$(echo "${HN}" | cut -c2-2)
    
case "${separate}" in
    "") 
        (( HNnum = HN ))
            dayS
            echo "${HNw}"
    ;;
    "-" | ",")
        mapfile numberArray <<< "$(echo "${HN}" | tr "${separate}" "\n")"  # szétbontva tömbbe rakjuk az adatokat.
        len=${#numberArray[@]} # itt megtudjuk hány számot is raktunk be.
        for (( i=0; i<=$((len-1)); i++ )); do 
            (( HNnum = "${numberArray[$i]}" ))
            dayS
            printf '%s' "${HNw}${separate}" #| sed 's/..$//'
        done
    ;;
esac

Persze ragoznám még, mert ha 6,7 akkor írja ki hogy hétvége. Ha 1-5, akkor hétköznap, meg lehetne páratlan napok, páros napok. Vagy teljesen más úton kéne elindulni?  Hm. A beszúró ablakban a case-t még jól mutatta, de itt most nem.

getopts kérdés

Kísérletezgetek ezzel a lehetőséggel. De még nem értem eléggé.

while getopts "adsh" option; do
    case "${option}" in
        a) addDate ;;
        d) delDate ;;
        s) showDate ;;        
        h) usage ;;
        \?) echo "Súgó: program -h "        
            exit;;
    esac
done 

Viszont ezzel így nem működik az az opció, hogyha kapcsoló nélkül indítom, akkor bejöjjön a súgó. Az is érdekelne hogy megoldható-e az hogy pl. a) addDate helyett pl. ad) addDate legyen. Ez persze itt most csak egy példa, de szükségem volna ilyesmire máshol, ahol vegyesen vannak a kapcsolók, -o vagy -od, -v ,-vs mert másképpen nem tudtam megoldani. Persze az most működik sima while shift-tel. De kérdés kiválthatom-e, érdemes-e ere a getopts-ra. Mindettől függetlenül a paraméter nélküli indításra előjöhetne a súgó.

adatok törlése ideiglenes fájl létrehozása nélkül.

Van egy fájlom, melyben csak időpontok találhatóak epoch formátumban. Van már megoldásom rá, de megoldható-e ahogy írtam ideiglenes fájl létrehozása nélkül rendbe rakni? A feladat az epoch-oz képest régebbi időpontok eltávolítása és sorba rendezése.

awk -v _now="${EPOCHSECONDS}" '$1 > _now {print $1}' < rectime.txt | sort | uniq > rectime_$EPOCHSECONDS.txt

Tesztkörnyezet fájlok tömeges átnevezéséhez

Sziasztok!

Segítséget szeretnék kérni egy bash szkripthez, amely egy szöveges fájlban tárolt fájlútvonal/fájlnév listából rekonstruálni tudja az eredeti  fájlútvonal/fájlnév szerkezetet egy teszt mappába. A fájloknak természetesen csak a neve és kiterjesztése lényeges, a tartalma lehet nulla hosszúságú/tartalmú állomány is.

Erre azért lenne szükségem, mert megörököltem egy olyan fájlrendszert, melyben rettenet hosszú mappa és fájlnevek találhatóak, gyakran megtűzdelve mindenféle egzotikus karakterrel (ékezet, pont, sok egymást követő pont, szóköz, felkiáltójel stb.). Ezekből a nevekből szeretném kiírtani a "problémás" karaktereket, melyre van már egy kész megoldásom, csak szeretném tesztelni is és megnézni a végeredményt mielőtt élesben ráküldöm a meglévő adatokra.

Példa:

./Adattár/Fotótár (archiv)/Történeti/Iskola/Homorszögi általános iskolai tanulók csoportképei az 50-es évekből/1958-59 Körmendy Tamás zenetanárral.JPG
./Adattár/Fotótár (archiv)/Történeti/Iskola/Homorszögi általános iskolai tanulók csoportképei az 50-es évekből/1954-55 Kovács Anna tanítónővel2.JPG
./Adattár/Fotótár (archiv)/Történeti/Iskola/Homorszögi általános iskolai tanulók csoportképei az 50-es évekből/1954-55 Kovács Anna tanítónővel1.JPG

Ebből kellene rekonstruálni a mappaszerkezetet és az üres fájlt.

Fájlok nélkül, csak a mappaszerkezetet a

xargs '\n' mkdir -p -- < teszt.txt

utasítással tudom rekonstruálni, viszont kellenének a fájlok nevei is.

Előre is köszönöm az ötleteket.