Hjælpescripts til Ubuntu

Dette forum bruges på EGET ANSVAR til at lege med scripts og andre ting med risiko for at beskadige sit eget og andres systemer.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

Det regner sgu for meget til de gulerødder, så i ly af denne til mig særligt konstruerede paraply (tak for den):


Christian.Arvai skrev:Generel besked til læserne af denne tråd

Vi har drøftet dette projekt i redaktørteamet, og personligt vil jeg, på linje med Ajenbo, sige at jeg syntes at koden er så ugennemskuelig, at jeg kraftigt vil anbefale folk ikke at kører de scripts! Da teamet simpelthen ikke kan forudsige resultatet ved en kørsel.

Programmets dokumentation er ydermere så mangelfuld at, selv folk som er uddannede indenfor IT ikke får gavn af den.

Hvis at folk vil teste og lege i Sandkassen er det helt ok, men i dette tilfælde bør/skal det være i en Virtualbox, hvor at det er lige meget om Ubuntus filsystem risikere at blive ødelagt.





vil jeg alligevel skrive lidt mere til dem, der følger med i udviklingen af zutil:




AJenbo skrev:
Jakob77 skrev:zhis2.sh (moderscript), som jeg har lagt i bin for at få path til det:

Her er så en oprenset udgave:

Kode: Vælg alt

#!/bin/bash -i
# Dette script er under udarbejdelse, så intet af nedenstående må tags for pålydende.
#
# Dette script er indtil videre kun et udkast ved navn "zhis2.sh", som er bygget
# til at hjælpe med at bruge terminalkommandoen "history" i særlige varianter.
# Scriptet er inspireret af denne debat:
# https://ubuntudanmark.dk/forum/viewtopic.php?p=141146#p141146
# Scriptet må kopieres, og jo mere det spredes og spreder glæde, jo gladere
# bliver jeg også. Det er altid på eget ansvar at lave et script ud af min tekst.
# Går det skidt, er det kopistens egen skyld. Men går det godt, som jeg formoder,
# må det gerne betragtes, som en hyldest til Ubuntu-Danmark.dk og de hjælpere,
# som dagligt arbejder på at gøre de mest utrolige heroglyffer brugbare for
# almindelige mennesker. Det fremgår af scriptet, hvilke underscripts, der hører
# med og hvor disse skal kunne findes.
#
# Vh Jakob77 :)

case $1 in
    'one')
        grep "$2" ~/.bash_history | wc -l
        ;;
    'vis')
        cat ~/.bash_history
        ;;
    'hyplist')
        sort ~/.bash_history | uniq -c | sort -n
        ;;
    'help'|'-h'|'--help')
        echo "Brug: $0 [Kommando [ORD]] - hjælpe til at bruge \"history\"."
        echo ''
        echo 'Flag:'
        echo '  -h, --help     Vis denne hjælpe side'
        echo ''
        echo 'Kommandoer:'
        echo '  one ORD        Hvor hyppigt er et bestemt ord er blevet anvendt'
        echo '  vis            Vis hele kommandohistorien i terminalen'
        echo '  hyplist        Hitliste over terminalkommandoers anvendelse'
        echo '  history        Hvor hyppigt er en bestemt kommando blevet anvendt'
        echo '  help           Vis denne hjælpe side'
        ;;
    'history'|*)
        history
        ;;
esac


Som du kan se er det meget renere og mere overskueligt når man bruger en fil, særligt når scriptet ikke gør mere end her.
Du slipper også for meget kludder og problemer ved ikke at køre koden som sub kommandoer (echo echo).

Brug af else (|) og default (*) gør også koden meget enklere.





Jeg siger igen mange tak. :)



Og med kun få rettelser i teksten, vil jeg derfor anbefale, at vi nu lægger dette script ind i stedet for zhis2.sh i mappen zutil og his2 i mappen bin:




Kode: Vælg alt


    #!/bin/bash -i
    # Dette script ( "zhis2.sh" som du selv evt. har kopieret til bin og omdøbt til "his2" eller "zhis2" ) er udviklet til zutil og blev første gang præsenteret her: #https://ubuntudanmark.dk/forum/viewtopic.php?p=141908#p141908
    # I øjeblikket er det under videreudvikling under zutil samme sted
    # Funktionen af scriptet er at hjælpe med at bruge terminalkommandoen "history" i særlige varianter.
    # Scriptet må kopieres og tilrettes frit efter behov og ønske.
    # Undlad blot for din egen skyld at pille ved linjer og køre kommandoer, som du ikke har gode instruktioner til.
    # Hvordan du kan redigere netop dette script vil der senere komme instruktioner til her: link til indlæg på ubuntudanmark.

    case $1 in
        'one')
            grep "$2" ~/.bash_history | wc -l
            ;;
        'vis')
            cat ~/.bash_history
            ;;
        'hyplist')
            sort ~/.bash_history | uniq -c | sort -n
            ;;
        'help'|'-h'|'--help')
            echo "Brug: $0 [Kommando [ORD]] - hjælpe til at bruge \"history\"."
            echo ''
            echo 'Flag:'
            echo '  -h, --help     Vis denne hjælpe side'
            echo ''
            echo 'Kommandoer:'
            echo '  one ORD        Hvor hyppigt er et bestemt ord er blevet anvendt'
            echo '  vis            Vis hele kommandohistorien i terminalen'
            echo '  hyplist        Hitliste over terminalkommandoers anvendelse'
            echo '  history        Hvor hyppigt er en bestemt kommando blevet anvendt'
            echo '  help           Vis denne hjælpe side'
            ;;
        'history'|*)
            history
            ;;
    esac




For nuværende virker det bare. :)
Og det gjorde det andet jo slet ikke.





Og dertil følger så, at vi nu ( hvis den bliver fri igen ) kan rette ged til noget mere enkelt:


Linjerne:

Kode: Vælg alt

"h2") `gedit ~/bin/his2 ~/bin/zutil/zsubutil/zzhis2-history.sh ~/bin/zutil/zsubutil/zzhis2-one.sh ~/bin/zutil/zsubutil/zzhis2-hyplist.sh ~/bin/zutil/zsubutil/zzhis2-vis.sh ~/bin/zutil/zsubutil/zzhis2-make.sh ~/bin/zutil/zsubutil/zzhis2-clear.sh ~/bin/zutil/zsubutil/zzhis2-clearall.sh ~/bin/zutil/zsubutil/zzhis2-help.sh`;;
"his2") `gedit ~/bin/his2 ~/bin/zutil/zsubutil/zzhis2-history.sh ~/bin/zutil/zsubutil/zzhis2-one.sh ~/bin/zutil/zsubutil/zzhis2-hyplist.sh ~/bin/zutil/zsubutil/zzhis2-vis.sh ~/bin/zutil/zsubutil/zzhis2-make.sh ~/bin/zutil/zsubutil/zzhis2-clear.sh ~/bin/zutil/zsubutil/zzhis2-clearall.sh ~/bin/zutil/zsubutil/zzhis2-help.sh`;;



Kan rettes til:


Kode: Vælg alt

"h2") `gedit ~/bin/his2`;;
"his2") `gedit ~/bin/his2`;;



For mit vedkommende beholder jeg dog "h2" uændret, men det er kun fordi jeg har oprettet underscripts og for en sikkerheds skyld vælger at vente lidt med at slette dem.
Hvis andre har bygget de tidligere nævnte underscripts til his2 , så mener jeg godt, de kan slettes igen allerede nu.

Masser af tilretningsforslag bør følge, men nu kom der da lige lidt orden på dette, så det i det mindste ikke ligger og roder groft.

Men ønsker du at teste den gamle ged på almindelig vis, så husk som sagt, at det kraftigt anbefales ikke at gøre det!
Det samme gælder for his2, fordi jeg nu har rettet teksten. Den blev vist for lang et par steder, og så er koden måske ikke tilstrækkelig gennemskuelig mere.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

@AJenbo


Du fornemmer nok godt, at jeg er lidt fornærmet over, at den gode gamle ged er i karantæne.
Et script, som jeg har skåret over samme paradigme, som jeg har fået her i forum og kan finde de første 5-10 links til. Det skal pludselig i karantæne, når det genpræsenteres i sandkassen i dag. Det virker for mig uforståeligt, især taget i betragtning, at jeg har benyttet dette paradigme næsten dagligt efterhånden i 6-7 år, uden at opleve et eneste problem med det.
Så jeg vil altså meget gerne have den ged ud i det fri igen med besked om, at den er god nok.
Den kom lige ind fra marken, så køn er den ikke og den lugter sikkert også, men i bund og grund mener jeg, at den skulle være gangbar.
Når det gælder Ubuntu viden og værktøjer, så har ingen nogensinde byttet så meget sølv til guld for mig, som du har. Og her står vi måske med noget guld af højere karat end nogensinde tidligere, og så er jeg ikke engang rigtig glad, fordi det begyndte med, at jeg fik konfiskeret mit sølv.
Og det vil jeg selvfølgelig gerne have rettet op på.


Men det kan altså godt være, at vi alligevel ender præcist samme sted.
Når jeg tænker efter, så er begrænsningerne i det gamle paradigme ( det kan stort set kun starte programmer ) måske så omfattende, at vi også kan gøre ged betydeligt bedre med det nye paradigme.
Jeg tænker her f.eks. på chmod , som jeg har haft problemer med at få til at fungere i den gamle ged og håbede, at vi kunne fikse. Det kan vi nok ikke uden at skifte paradigme.
Og gør vi det, så er lavinen for paradigmeskiftet faktisk for alvor begyndt at rulle, fordi ged gerne skal være ligeså brugervenlig at redigere, som scriptet til firefox.
Dermed kan vi komme i den situation, hvis vi lader de to paradigmer konkurrere i brugervenlighed, at jeg også vil holde med det nye, selvom det gamle egentlig er en oplagt vinder.
Hmm... det kan måske godt give en vis lyst til at droppe konkurrencen.


Ellers skulle vi da ligefrem være så heldige, at de finder en lille kodefejl i ged i virtualboxen og retter den, så de sidste funktioner kommer med, og så heldige er vi jo nok ikke.
Jeg tænker lidt, om det kan være en sikkerhedsforanstaltning fra højt sted, fordi det gamle paradigme er så udbredt, og så har man ønsket at begrænse muligheden for at kalde underscripts og terminalkommandoer. Men reelt ved jeg ikke andet, end at det har virket stabilt hos mig.
Hvad en "verificering" af et script på ubuntudanmark betyder, ved jeg heller ikke.




Men jeg kan se, at jeg har et "mellemrums- tabulator- og linjeskiftsparanoia", som jeg nok må se at komme over.
Det bunder delvist i en linux usikkerhed fra dengang jeg blev beskyldt for at være en sikkerhedsrisiko, fordi jeg begyndte forumindlæg med ti tomme linjer.
Dertil kommer, at jeg mener at have erfaret, at en tom linje nogle gange kan betyde en returntast, og derfor vil man være på den sikre side, som jeg gerne vil, så spærrer man koderne inde med tekst koder ( "#" ) og undgår på den måde tomme linjer. Man undgår måske også en risiko for, at der kan ligge skjult kode, for gør der det, så vil den blive tolket som ren tekst og får derfor ikke lov til at udføre noget arbejde.

Derfor mener jeg ikke, at der er noget sikkerhedsmæssigt i vejen med at tilrette et script på den måde.
Og det vil jeg selvfølgelig gerne have bekræftet.

Til gengæld kan jeg måske uden at jogge for meget i spinaten godt sætte brugerne mere fri med en hjælpetekst som denne..? :

Har du et script, som du er glad for og selv ofte redigerer, så er her et par tips, som måske kan gøre det mere afslappet og hyggeligt, uden det går ud over kvaliteten:
Er der fra begyndelsen en pæn orden i scriptet, så forsøg at holde den, hvis du selv tilføjer noget.
Det væsentligste, du får ud af at ændre på den, er, at du risikerer, at en administrator, som måske skal hjælpe dig en dag, han bliver tvær.
Men laver du en ekstra tom linje et sted, så fortvivl ikke, det gør ikke det mindste for scriptets funktion.
Tilsvarende ved linjens begyndelse. Skulle du ved uheld sætte et mellemrumstegn eller en tabulator ekstra et sted, så gør det ikke noget for scriptets funktion, så længe du bare holder curseren til venstre for det første kodetegn.
Ønsker du at tilføje en linje husketekst til dig selv, så begynder du blot en ny linje med # mellemrum ( "# " ) og derefter kan du med 78 tegn skrive, hvad du vil i linjen.
Skal du bruge mere end ialt 80 tegn på linjen, så må du begynde endnu en ny linje. Det går igen næppe ud over scriptets funktion, at linjen bliver længere, men det er unødig malurt i enhver administrators bæger.
Brugeravatar
NickyThomassen
Admin
Indlæg: 3652
Tilmeldt: 5. mar 2010, 19:58
IRC nickname: nicky
Geografisk sted: 192.168.20.42

Re: Hjælpescripts til Ubuntu

Indlæg af NickyThomassen »

Vi satte i fællesskab den advarsel op, da hverken Christian, Anders eller jeg kunne læse dit script. Advarslen vil bestå. Eftersom dit script ligger hvor det hele tiden har gjort, så kunne jeg godt tænke mig en uddybning på, hvorfor du mener det er i karantæne?
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

NickyThomassen skrev:Vi satte i fællesskab den advarsel op, da hverken Christian, Anders eller jeg kunne læse dit script. Advarslen vil bestå. Eftersom dit script ligger hvor det hele tiden har gjort, så kunne jeg godt tænke mig en uddybning på, hvorfor du mener det er i karantæne?


Jeg er på en måde glad nok for advarslen, da den nok kan give mere arbejdsro i forhold til læsere, som ikke har set, at tråden ligger i sandkassen.
Men jeg har noget imod, at mine scripts bliver stemplet, som noget helt særligt odiøst, og det synes jeg er tilfældet.
Jeg tænker, hvorfor der skal lægges en kæmpe advarsel specielt om mig og mine scripts nu i sandkassen og ikke alle de andre steder i forum, hvor præcist samme scriptstamme er benyttet.
Derfor har jeg et stort behov for en dementi af en slags, nu hvor I har haft mere tid til at se på scriptet.
Men finder I et sikkerhedshul eller en alvorlig fejl i scriptet, så er det selvfølgelig noget andet, og så må vi tage den videre derfra og advare eller fjerne paradigmet alle steder, hvor det optræder i forum.
Kan du godt følge den tankegang, at det ikke er nødvendigt med millimeterdemokrati, og det kan være ok momentant at overreagere lidt, men når ugen er omme, så skulle der gerne være en nogenlunde sober konstans i bedømmelserne..?
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

Alle andre i tråden arbejder også under min paraply.
Hvis nogen, ja selv AJenbo, skulle forivre sig i et script, så mit eller andres systemer bryder sammen, så skal han ikke høre et ondt ord for det.
Jeg vil i hvert fald tilstræbe kun at bruge et enkelt indlæg på at brokke mig over det..! ;)



@AJenbo

Jeg har ikke skiftet ged endnu, og jeg tøver med det af flere grunde.
En af dem er, at jeg endnu ikke har fanget, hvordan scriptet vil se ud, når et argument fordrer flere kommandoer udført i samme kørsel.
Jeg kunne godt tænke mig at eksperimentere med "bygnyt" argumentet, så når brugeren vælger at bygge et nyt script, så vil ged gøre det til en kørbar fil, hvis filen eksisterer. Og hvis vi ikke kan undgå sudo, så vil det måske være godt først at lade echo før passwordprompt give en besked om, at hvis man ikke ønsker at gøre scriptet kørbart på denne vis, så kan man trykke Ctrl+z for at afbryde.
Det kan også være, at du har en bedre idé.
Men hvad siger du til evt. at komme med et udkast til version to af den nye ged, før jeg begynder at snavse den til..?




Og så tror jeg i øvrigt, at jeg har fundet en god linje mere til den gamle ged, og som nok også bør konverteres til den nye.?
Den er dog temmelig simpel:

Kode: Vælg alt

"history") `gedit ~/bin/zutil/zdokumenter/historyhelp.txt ~/.bashrc ~/.bash_history`;;



Og i dokumentet ~/bin/zutil/zdokumenter/historyhelp.txt har jeg til en begyndelse indsat følgende tekst:

Kode: Vælg alt

Dette dokument er skrevet til zutil for at gøre det nemmere at konfigurere history log størrelse og redigere selve historikfilen.

For konfiguration af "his2" er kommandoen til ged: "ged his2"


Hvis du har åbnet dette dokument med terminalkommandoen "ged history", så burde du i fanebladet til højre for dette kunne finde dokumentet ~/.bashrc, hvor du kan indstille størrelsen på din historikfil.

Og endnu et faneblad til højre burde du kunne finde historikfilen ( ~/.bash_history ) , som indeholder hele din loggede historik for kommandoer afgivet i terminalen.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

Det ville altså også være en kæmpe fordel, synes jeg, hvis vi kunne finde en bedre åbningskommando til Gedit , så vi kunne være sikre på, at de filer, som vi åbner, de åbnes i et vindue helt for sig selv og ikke sammen med andre dokumenter, som i forvejen et åbnet i Gedit. Altså så vi kunne være sikre på i ged hjælpen, hvad der gemmer sig i faneblad 1 og 2 og 3 osv.
Men jeg tvivler på, at der eksisterer sådan en kommando til Gedit..?
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Hjælpescripts til Ubuntu

Indlæg af AJenbo »

Jakob77 skrev:En af dem er, at jeg endnu ikke har fanget, hvordan scriptet vil se ud, når et argument fordrer flere kommandoer udført i samme kørsel.

Det forstår jeg virkelig ikke hvordan kan være svært at forstå, det er blot en ny linje under den anden. Jeg har også gjort dig opmærksom på at hjælp faktisk fungere via 15 separate kommandoer så du har også et tydeligt eksempel.

Jakob77 skrev:Jeg kunne godt tænke mig at eksperimentere med "bygnyt" argumentet, så når brugeren vælger at bygge et nyt script, så vil ged gøre det til en kørbar fil, hvis filen eksisterer. Og hvis vi ikke kan undgå sudo, så vil det måske være godt først at lade echo før passwordprompt give en besked om, at hvis man ikke ønsker at gøre scriptet kørbart på denne vis, så kan man trykke Ctrl+z for at afbryde.
Det kan også være, at du har en bedre idé.

Jeg syndes du skal sætte dig ned med en bog om shell scripting (bash) og gå i gang med at læse lidt, for der er tydeligvis nogle helt grundlæggende principper du ikke har forstået. Hvis du syndes en bog er for dyr/stor/upraktisk så kan du også læse lidt på nogle af de gode links du efterhånden har fået. Måde det forgår på nu involvere så meget håndholderi at det ville være nemmer for os at kode det hele for dig (det ønsker vi på ingen måde), men samtidig er dine beskrivelser af hvad du ønsker i sidste ende så vage at det ikke ville være muligt.
Det er også nettop denne mangel på forståelse der gør at det du ser som blot at klippe og klistre andres kode sammen, faktisk resultere i at du skaber noget nyt og katastrofalt.

Jakob77 skrev:Og så tror jeg i øvrigt, at jeg har fundet en god linje mere til den gamle ged, og som nok også bør konverteres til den nye.?
Den er dog temmelig simpel:

Kode: Vælg alt

"history") `gedit ~/bin/zutil/zdokumenter/historyhelp.txt ~/.bashrc ~/.bash_history`;;


Kode: Vælg alt

    'history')
        gedit ~/bin/zutil/zdokumenter/historyhelp.txt ~/.bashrc ~/.bash_history
        ;;

Hvis du har svært ved at gennemskue hvad det er der er blevet ændret ved scriptsne så prøv at åbne den gamle og nye udgave i et program der kan fremhæve forskelle, eks.: diffuse.

Jakob77 skrev:Det ville altså også være en kæmpe fordel, synes jeg, hvis vi kunne finde en bedre åbningskommando til Gedit , så vi kunne være sikre på, at de filer, som vi åbner, de åbnes i et vindue helt for sig selv og ikke sammen med andre dokumenter, som i forvejen et åbnet i Gedit. Altså så vi kunne være sikre på i ged hjælpen, hvad der gemmer sig i faneblad 1 og 2 og 3 osv.
Men jeg tvivler på, at der eksisterer sådan en kommando til Gedit..?

Du har så tydeligvis ikke læst hjælp for gedit inden du skrev dette. Det står højt og tydeligt hvordan man gør nettop dette.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

Det hjælper, når man ved, at det man søger er at finde og ikke kun har set noget vildledning på google.
Det ser ud til at lykkes med " -s" argumentet, som får Gedit til at åbne som et stand alone program.
Og dermed bliver den sidste rettelse til gamle ged i stedet sådan:


Kode: Vælg alt

"history") `gedit -s ~/bin/zutil/zdokumenter/historyhelp.txt ~/.bashrc ~/.bash_history`;;


Og forlyder der ingen protester, så mener godt, at vi kan sætte " -s" ind efter "gedit" i samtlige andre tilsvarende kommandolinjer i ged.
Det har jeg gjort nu i min ged.

Det er godt nok noget værre morakkeri i pausen, og jeg skal læse lektier og så gulerødder, og jeg kan ikke undvære at holde AJenbo i hånden.
Det er et værre skråplan, men projektet går den rigtige vej trods alt. :)

Målet burde være tydeligt, men hvornår det er nået i tilfredsstillende grad, det tør jeg ikke spå om. Vi bygger jo også op langs ad og inspirerer hinanden. Paradigmekoden burde egentlig være det mindste af det. Det er nærmere alle de gange den skal bruges og alle de links, henvisninger og hjælpeark, der skal bygges og kædes rigtigt sammen, som for alvor kommer til at trække kalorier i den sidste ende, hvis det skal blive godt.
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Hjælpescripts til Ubuntu

Indlæg af AJenbo »

Jeg er sikker på du ville kunne få meget ud af at læse og følge denne vejledning:
http://www.tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

Ja, det tror jeg også, og så er jeg da nok passificeret i nogle år igen og andre brugere skræmt væk fra projektet.
Jeg ved i øvrigt ikke, hvad du mener med "katastrofe".
Hvad angår funktionen, så bruger jeg den gamle ged oftere, end jeg besøger forum, og jeg har af den grund ikke oplevet andet end en større glæde ved at køre Ubuntu.
Men som sagt, er der et sikkerhedshul eller en alvorlig fejl, så er det da godt, at den bliver fundet, så der også kan blive advaret imod den i de andre indlæg. Eller endnu bedre, hvis den kan rettes, så scriptet kan verificeres og paradigmet fortsat stå til rådighed.
Jeg vil dog gerne vide lidt mere om, hvad "katastrofen" konkret skulle bestå af. Indtil videre synes jeg, at det hele har været meget stemningsbetonet.
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Hjælpescripts til Ubuntu

Indlæg af AJenbo »

http://ordnet.dk/ddo/ordbog?query=katastrofalt

Læs op på code styling så vil du forstå.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

OBS:


Citat fra sidste OBS:
https://ubuntudanmark.dk/forum/viewtopic.php?p=141746#p141746
Jakob77 skrev:OBS:
Indtil videre er det ikke gået særlig hurtigt, så det er endnu meget nemt at springe med på vognen.




Men hvis du vil kunne leve med de z-scripts, der er under udvikling, så tyder meget nu på, at du også må leve med disse mapper på din lokale harddisk:



~/bin/zutil/
~/bin/zutil/zsubutil/
~/bin/zutil/zdokumenter/
~/bin/zutil/zbackup/



Så dem må du gerne oprette, hvis du vil lege med, og drømme om alle de lækre filer, som vi forhåbentlig bliver kompetente til at putte i dem.




Jeg mener egentlig ikke, at der endnu er stof nok fastlagt til en OBS mere, og meget skal måske ændres.
Men der er blevet lagt an til et paradigmeskift på moderscripts, og det må siges at være en meget stor begivenhed for zutil, selvom der er et par proceduremæssige ting, vi ikke er enige om.


Det kan være, at det ender med, at næste skridt bliver en zip-fil med både dokumenter og scripts, hvor der er ændret i alle filer, som er fremlagt her indtil nu.
Det var min mening, at vi skulle hjælpes ad med at skabe forbedringer, men ingen har ønsket at bidrage konstruktivt til test, og AJenbo kører selvfølgelig træt, når det kun er mig, der viser interesse. Og så er det nok bedre, at jeg skriver til zutil alene en tid og ser, hvad jeg kan inspirere mig selv til at strikke sammen til Ubuntus brugere. Mulighederne er blevet flere og bedre siden første OBS, så teknisk ser det faktisk lysere ud end nogensinde.

Så vidt tak til alle for ethvert konstruktivt bidrag.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Hjælpescripts til Ubuntu

Indlæg af Jakob77 »

Jeg har rettet i mit indlæg med den gamle ged.
https://ubuntudanmark.dk/forum/viewtopic.php?p=141865#p141865
Det føles næsten som en gravskrift til en trofast gammel ven, der kom af dage på uværdig vis.
Jeg ville ønske, at vi fortsat kunne bevare paradigmet til noget godt, og sikkerhedsmæssigt tror jeg måske også, at det kan godkendes til f.eks. zx.sh .
Men når brugeren nu alligevel skal vænnes til det nye paradigme med flere muligheder, så vil det som helhed kun gøre det vanskeligere for brugeren, at der i zutil optræder to paradigmer, når et ville være tilstrækkeligt.
Derfor må jeg nok bare sørge og indse, at det ikke giver nogen fornuftig mening mere.
Farvel gode gamle ged. *snøft*













1 minuts stilhed.














Til gengæld er der sket noget glædeligt nyt hos mig i nat, som heldigvis gør det nemmere at bære sorgen.
Jeg kom ved et uheld til at pille lidt ved den nye ged, og hopsa, så sprang den ud af kuvøsen. :)
Desværre var den så ivrig og livsglad, at den stak fra mig og løb ud på marken, hvor den straks trillede sig i noget tekst og måske det, der er værre, så jeg ved ikke, hvor klogt det er at vise den frem nu.










Rettelse, tilføjet 28/6-2015:

Det er sikkert ikke klogt, men her er altså, hvad der er sket, så interesserede udviklere kan se det:




Den nye "ged" ( zged.sh ) ej til kørsel, kun til gennemsyn:

Kode: Vælg alt

exit
exit
#!/bin/bash

# zged.sh hører til ~/bin/zutil , men det anbefales at kopiere
# scriptet op i /bin mappen og omdøbe filen til "ged"
# Scriptet er under udvikling til zutil på UbuntuDanmark.dk:
# https://ubuntudanmark.dk/forum/viewtopic.php?p=141909#p141909



# Scriptet åbner filer i Gedit. Se -h for brug af argumenter.
# Ved indsættelse af et nyt argument i dette script:
# Skab tom plads imellem to sekvenser med Enter.
# Find en passende sekvens, og kopier hele sekvensen ind på pladsen.
# Ret argument og kommando, og gem, og afprøv det nye argument i terminalen.
# Se evt. mere om scriptet her: Link må komme i et senere udkast.



# Hovedsekvens begynd
case $1 in


# Sekvens begynd
    'e')
        gedit -s ~/bin/$2
        ;;
# Sekvens slut
# Sekvens begynd
    'd'|'dokument')
        gedit -s ~/bin/zutil/zdokumenter/$2
        ;;
# Sekvens slut
# Sekvens begynd
    'k'|'kladde')
        gedit -s ~/bin/zutil/zkladdemappe/$2
        ;;
# Sekvens slut
# Sekvens begynd
    'bygnyt')
        gedit -s ~/bin/$2 ~/bin/zutil/zdokumenter/skabelon.txt
        echo 'Filen gøres til en kørbar fil ( Skalprogram ):'
#        chmod 755 --verbose ~/bin/$2
        echo 'Hvis filen blev gemt bør ovenstående vise, at chmod har ændret fil tilstanden'
        echo 'til 0755 og dermed gjort det netop gemte script kørbart.'
        echo 'Kørbart betyder her, at filnavnet er gjort til en terminalkommando.'
        ;;
# Sekvens slut
# Sekvens begynd
    'zhistory'|'his2')
        gedit -s ~/bin/zhistory
        ;;
# Sekvens slut
# Sekvens begynd
    'f')
        gedit -s ~/bin/f ~/bin/zutil/zkladdemappe/links.txt
        ;;
# Sekvens slut
# Sekvens begynd
    'links')
        gedit -s ~/bin/zutil/zkladdemappe/links.txt
        ;;
# Sekvens slut
# Sekvens begynd
    'cls')
        gedit -s ~/bin/cls
        ;;
# Sekvens slut
# Sekvens begynd
    'x')
        gedit -s ~/bin/x
        ;;
# Sekvens slut
# Sekvens begynd
    'g'|'ged')
        gedit -s ~/bin/ged
        ;;
# Sekvens slut
# Sekvens begynd
     'alias')
        gedit -s ~/bin/zutil/zdokumenter/alias.hlp ~/.bash_aliases ~/.bashrc ~/bin/zutil/zdokumenter/aliasbackup.txt
        ;;
# Sekvens slut
# Sekvens begynd
    'history')
        gedit -s ~/bin/zutil/zdokumenter/historyhelp.txt ~/.bashrc ~/.bash_history
        ;;
# Sekvens slut
# Sekvens begynd
    '-h'|'help'|'-help'|'--help')
        echo "Anvendelse: [$0] [Argument] [FILNAVN] - Åbner filer i Gedit."
        echo ''
        echo 'Argumenter:'
        echo '  intet                 Åbner en kladde'
        echo '  -h                    Viser denne hjælpe side'
        echo '  k FILNAVN             Opretter eller åbner kladde fra'
        echo '                        ~/bin/zutil/zkladdemappe'
        echo '  d FILNAVN             Opretter eller åbner dokumentet fra'
        echo '                        ~/bin/zutil/zdokumenter'
        echo "  e FILNAVN             Åbner FILNAVN fra ~/bin til redigering."
        echo '  bygnyt FILNAVN        Til oprettelse af nyt kørbart script i bin'
        echo '  links                 Åbner ~/bin/zutil/zkladdemappe/links.txt'
        echo '  g                     Åbner ~/bin/ged scriptet til redigering.'
        echo '  f                     Åbner ~/bin/f scriptet til redigering.'
        echo '  zhistory              Åbner ~/bin/zhistory scriptet til redigering.'
        echo '  history               Til konfiguration og editering af history log'
        echo '  alias                 Til konfiguration og editering af alias listen'
        echo ''
        echo 'Eksempler på anvendelse:'
        echo '"ged history"           Starter konfiguration og redigering af history log'
        echo '"ged k ubuntu"          Opretter eller åbner dokumentet "ubuntu" fra'
        echo '                        ~/bin/zutil/zkladdemappe'
        echo '"ged g"                 Åbner ~/bin/ged til redigering'
        ;;
# Sekvens slut
# Herunder kommandoen, som benyttes, når intet argument forinden er blevet genkendt.
    *)
        gedit -s ~/bin/zutil/zkladdemappe/kladde.txt
        ;;
# Herover kommandoen, som benyttes, når intet argument forinden er blevet genkendt.

esac
# Hovedsekvens slut.





Funktionen burde være blændet af, men ellers kan den nye ged lave chmod 755 uden sudo. Så det er bare "ged bygnyt FILNAVNET", og så får man et kørbart script, når det er gemt med Gedit i bin mappen.
chmod kan også se det, hvis filen ikke er gemt og derfor ikke eksisterer, og så gør den ikke noget.
Lidt anderledes er det desværre, hvis man vil bruge chmod på en fil, som ikke eksisterer, men hvor der i mappen eksisterer en undermappe af samme navn, som den fil man ville have chmod'et
Så springer chmod i stedet på mappen og gør noget, som jeg ikke helt ved hvad er, men jeg tror måske, at der forsvandt en skriverettighed et sted:


"ged bygnyt zutil" => chmod arbejder på zutil mappen

Redigeret udpluk fra terminal:
( "#" betyder echo linje fra script )

Kode: Vælg alt

#Filen gøres til en kørbar fil ( Skalprogram ):
tilstand for '/home/brugernavn/bin/zutil' ændret fra 0509 (rwxrwxr-x) til 0755 (rwxr-xr-x)
#Hvis filen blev gemt bør ovenstående vise, at chmod har ændret fil tilstanden
#til 0755 og dermed gjort det netop gemte script kørbart.
#Kørbart betyder her, at filnavnet er gjort til en terminalkommando.

brugernavn@JumboUbuntu:~$ chmod 509 --verbose ~/bin/zutil
chmod: ugyldig tilstand: '509'
Prøv 'chmod --help' for mere information.

brugernavn2@JumboUbuntu:~$ chmod 0509 --verbose ~/bin/zutil
chmod: ugyldig tilstand: '0509'
Prøv 'chmod --help' for mere information.


Jeg har dog endnu ikke direkte observeret gener af den grund.
Men som man kan se, forsøger jeg to gange uden held at ændre det tilbage.
Jeg er lidt rystet over, at det skulle blive et problem at kende forskel på mapper og filer, så jeg tænker, at der måske kan være en systematisk fejl i syntaksen, som gerne skal rettes, før den gentages i flere nye scripts.
Der kan nok være flere måder at løse det på, men jeg kender ikke linux godt nok til at vide, hvilken man bør foretrække.
Det gælder tilmed Gedit, at den forsøger at åbne undermappen, hvis jeg ønsker at åbne et nyt dokument af samme navn som undermappen.



Der er også en del andre ting, der bør pudses af og udbygges.
Men efter min mening har det været et rigtig godt script at arbejde videre på.
Om mit også er det, så zutil også er kommet et skridt videre, det må andre dømme om.

Jeg er selv godt tilfreds med opdelingen i sekvenser, som jeg benytter gennemgående.
Det gør måske afstanden til github længere, men jeg tror, at de fleste fummelfingre og kodeblinde hurtigt vil give mig ret i, at det er en stor lettelse, når man skal kopiere og tilføje et argument, at man har dem og tilhørende kommandoer i moduler.
På den måde får man en halvgrafisk brugerflade, uden at få musearm og uden at skulle sælge ud af een eneste terminalkommando.

Hvis nogen sidder derude og tænker, at zutil ikke er noget for dem, fordi de ikke kan hitte ud af kode, så mener jeg, at det er meget forkert.
For det første er den vigtigste kode allerede skrevet, for det andet skal zutil netop med klare danske instruktioner gøre det pære let og meget sikkert at rode med koden og konfiguration.
zutil har derfor faktisk brug for nogle tumper, som ikke kan koden, men som alligevel gerne vil være med til at opbygge brugerfladen, så de kan så meget som muligt uden. Nå ja, det er selvfølgelig bare min mening og mit forsvar for at have været med så vidt.




Som jeg ser det indebærer bygningen af zutils basis også en fantastisk chance for alle til at blive dygtigere til terminalkommandoer.
Det behøver ikke være stresset eller presset, eller noget man føler som en byrde, fordi man har et arbejde ved siden af.
Der kan såmænd bare startes en hyggetråd om en terminalkommando en gang om ugen eller måske bare en gang om måneden, når nogen får lyst. Og så kan denne kommando få hele turen på kryds og tværs, som det skete med "history", hvor vi nu har tilbygget en zutil kommando ved navn "zhistory" ( former "his2" ), som, indrøm det bare, er langt nemmere at arbejde med end "history", og det kan endda blive endnu bedre.


Hvad kan man f.eks. forvente af kommandoen "dir" i linux år 2015..?
Ikke så meget som af zdir.sh
Så det er bare at starte en hyggetråd om hver kommando og under forløbet suge de bedste guldkorn fra tråden ud til et script.
Og løbende samtidigt udfyldes en "zman" med referencer til trådene.
Hvor svært kan det være..?
Meget svært.

Ellers kan der måske også findes flere kommandoer med tilhørende konfigurationsfiler til styrkelse af ged.
Der findes jo flere end alias og history.





Her endnu et udkast til zhistory ( zzhistory.sh ), ej heller til kørsel, kun til gennemsyn:

Kode: Vælg alt

exit
exit
#!/bin/bash -i
# Arbejder du i terminal og skrev "ged zhistory" , men mente "ged history"
# så forlad bare filen ( Alt + F4 ) og prøv det andet.
# Dette script ( "zhistory.sh" som du selv evt. har kopieret til bin mappen
# og omdøbt til "zhistory" ) er udviklet til zutil
# og blev første gang præsenteret her:
# https://ubuntudanmark.dk/forum/viewtopic.php?p=141908#p141908
# I øjeblikket er scriptet under videreudvikling under zutil samme sted.
# Funktionen er som terminalkommandoen "history", men udbygget.
# Scriptet må kopieres og tilrettes frit efter behov og ønske.



# Hovedsekvens begynd.
    case $1 in
# Sekvens begynd
        'one')
            grep "$2" ~/.bash_history | wc -l
            ;;
# Sekvens slut
# Sekvens begynd
        'vis')
            cat ~/.bash_history
            ;;
# Sekvens slut
# Sekvens begynd
        'hyplist')
            sort ~/.bash_history | uniq -c | sort -n
            ;;
# Sekvens slut
# Sekvens begynd
        'make')
            echo 'ged k ubuntu' >> ~/.bash_history
            # Ovenstående top linje tilføjer "ged k ubuntu" til history filen.
            # Ønsker du at tilføje flere kommandoer, kan du bygge flere linjer på.
            # Den nederste tilføjelse her, bliver den første i historikken.
            # Ændringer træder først i kraft, når ny terminal åbnes.
            echo 'Forvalgte kommandoer er nu tilføjet til historikken.'
            echo 'Du kan se dem, når du åbner en ny terminal og trykker pil op.'
            echo 'Forvalgte kommandoer kan ændres v.h.a. kommandoen "ged zhistory"'
            ;;
# Sekvens slut
# Sekvens begynd
        'clear')
            echo 'history log tømt af kommandoen "zhistory clear"' > ~/.bash_history
            date -u >> ~/.bash_history
            echo 'Kommandohistorik er nu tømt, og der er indsat en dato for det'
            echo 'Du kan se resultatet, når du åbner en ny terminal og trykker pil op.'
            ;;
# Sekvens slut
# Sekvens begynd
        'clearall')
            echo '' > ~/.bash_history
            echo 'Kommandohistorik er nu tømt'
            echo 'Du kan se resultatet, når du åbner en ny terminal og trykker pil op.'
            ;;
# Sekvens slut
# Sekvens begynd
        'help'|'-h'|'-help'|'--help')
            echo ''
            echo "Anvendelse: Til visning og rensning af terminalens kommandohistorik"
            echo '( se evt. også "ged history" for historikkonfiguration )'
            echo ''
            echo "Syntaks: $0 [Argument [ORD]]"
            echo ''
            echo 'Argumenter:'
            echo '  intet          Kører "history" kommando.'
            echo '  -h             Viser denne hjælpe side.'
            echo '  one ORD        Hvor hyppigt et bestemt ord er blevet anvendt.'
            echo '  vis            Vis hele kommandohistorien i terminalen.'
            echo '  hyplist        Hitliste over terminalkommandoers anvendelse.'
            echo '  clear          Sletter kommando historik og indsætter tid for sletning.'
            echo '  clearall       Sletter kommando historik.'
            echo '  make           Tilføjer forprogrammerede kommandoer til historikken.'
            echo '                 ( pil op i nyåbnet terminal viser sidst tilføjede )'
            echo 'Eksempler:'
            echo '  "zhistory one dir"'
            echo '                 Tæller hvor mange gange "dir" optræder i historik.'
            echo '  "zhistory hyplist"'
            echo '                 Viser hitliste over terminalkommandoers anvendelse.'
            echo '  "zhistory -h"'
            echo '                 Viser denne hjælpe side.'
            ;;
# Sekvens slut
# Herunder kommandoen, som benyttes, når intet argument forinden er blevet genkendt.
        'history'|*)
            history
            ;;
# Herover kommandoen, som benyttes, når intet argument forinden er blevet genkendt.
    esac
# Hovedsekvens slut.




That script wants to make history.











Og her mit udkast til f ( zf.sh ), som kan åbne Firefox. Ej heller til kørsel, men kun til gennemsyn:





Kode: Vælg alt

exit
exit
#!/bin/bash

# Dette script er under udvikling til zutil på UbuntuDanmark.dk
# https://ubuntudanmark.dk/forum/viewtopic.php?p=141909#p141909
#
# Scriptet åbner adresser i Firefox, se -h for brug af argumenter.
# Ved indsættelse af et ekstra argument:
# Skab tom plads imellem to sekvenser med Enter.
# Find en passende sekvens, og kopier hele sekvensen ind på pladsen.
# Ret argument og kommando, og gem, og afprøv det nye argument i terminalen.
# Se evt. mere om scriptet her: Link kommer i senere udkast.



# Hovedsekvens begynd
case $1 in


# Sekvens begynd
    'g')
        firefox http://www.google.dk/
        ;;
# Sekvens slut
# Sekvens begynd
    'have')
        firefox 'http://www.havenyt.dk/artikler/dyrkningsmetoder/skade_og_nyttedyr/' 'http://www.havenyt.dk/artikler/dyrkningsmetoder/formering/510.html'
        ;;
# Sekvens slut
# Sekvens begynd
    'krak')
        firefox http://www.krak.dk/
        ;;
# Sekvens slut
# Sekvens begynd
    'u')
        firefox http://ubuntudanmark.dk/forum/search.php?search_id=active_topics
        ;;
# Sekvens slut
# Sekvens begynd
    'uu')
        firefox 'https://ubuntudanmark.dk/' 'https://ubuntudanmark.dk/blog/artikler/category/guides/' 'https://ubuntudanmark.dk/support/' 'https://ubuntudanmark.dk/faellesskab/'
        ;;
# Sekvens slut
# Sekvens begynd
    'dr')
        firefox 'http://www.dr.dk/radio/' 'https://www.dr.dk/tv/programmer' 'http://www.dr.dk/nyheder'
        ;;
# Sekvens slut
# Sekvens begynd
    'tv')
        firefox https://www.dr.dk/tv/live/dr1
        ;;
# Sekvens slut
# Sekvens begynd
    'ttv')
        firefox 'http://www.dr.dk/nav/tekstttv/'
        ;;
# Sekvens slut
# Sekvens begynd
    'v')
        firefox 'http://www.dmi.dk/vejr/'
        ;;
# Sekvens slut
    'vejr')
        firefox http://www.dmi.dk/dmi/index/danmark/landsudsigten.htm http://www.dmi.dk/dmi/index/danmark/regionaludsigten/nordjylland.htm http://www.dmi.dk/vejr/til-lands/regionaludsigten/ssjylland/ http://www.dmi.dk/vejr/til-lands/regionaludsigten/kbhnsjaelland/ http://www.dmi.dk/vejr/til-lands/regionaludsigten/bornholm/
        ;;
# Sekvens slut
# Sekvens begynd
    'y')
        firefox http://www.youtube.com/
        ;;
# Sekvens slut
# Sekvens begynd
    'help'|'-h'|'-help'|'--help')
        echo "Anvendelse: - Åbner sider med Firefox."
        echo "Syntaks: [$0] [Argument]"
        echo ''
        echo 'Argumenter:'
        echo '  ukendt                  Googler argumentet'
        echo '  -h                      Viser denne hjælpe side'
        echo '   u                      Åbner Ubuntu forum'
        echo ''
        echo 'Flere argumenter:'
        echo ''
        echo '   g uu krak have'
        echo ''
        echo '   ttv'
        echo ''
        echo '   v  vejr'
        echo ''
        echo 'Eksempler:'
        echo '  "f u"                   Åbner Ubuntu forum'
        echo '  "f uu"                  Åbner flere Ubuntu sider'
        echo '  "f v"                   Åbner Vejrudsigt'
        echo '  "f g"                   Åbner Google'
        echo '  "f y"                   Åbner youtube'
        echo 'I zutil redigeres argumenter og hjælp med kommandoen "ged f"'
        ;;
# Sekvens slut
# Herunder kommandoen, som benyttes, når intet argument forinden er blevet genkendt.
    *)
        firefox https://www.google.dk/?gws_rd=ssl#q=$1+$2+$3+$4+$5+$6+$7+$8+$9
        ;;
# Herover kommandoen, som benyttes, når intet argument forinden er blevet genkendt.

esac
# Hovedsekvens slut.





Jeg aner ikke, hvor langtidsholdbar kommandoen er for argumenter, som ikke er genkendt.
Men jeg kunne ikke stå for fristelsen til at tage den med, så op til ni ord efter "f" vil blive sendt direkte til google som søgeord.







Der er nu endvidere oprettet en mappe til brugerens egne kladder:
~/bin/zutil/zkladdemappe

Og som det vist allerede fremgår er "his2" omdøbt til zhistory og zzhistory.sh












Til slut en omtale af den til mit indlæg vedhæftede fil ( zutil-udkast1.zip ).
Den er kun beregnet til ubuntu udviklere, der ved, hvad de har med at gøre.
Har man ikke zutil i forvejen kan man nok godt pakke den ud i bin-mappen, men det ville jeg aldrig selv gøre.
Jeg opretter normalt en midlertidig mappe til zip-filen og vælger "udpak her" i stifinderens menu.
På den måde kan man lidt bedre se, hvad man har med at gøre, før man evt. kopierer zutil mappen over i bin.
Under alle omstændigheder bør man forinden igen tage backup af sine data.
Efter min erfaring er det som regel kopiering og overskrivning, der koster mest dataødelæggelse og spildtid, når man scripter.
Hvert enkelt script skal kopieres til bin mappen og gøres kørbart og redigeres, før det fungerer.
Ud over de ovenstående tre fremviste scripts er der også en opdateret "zx.sh" i pakken.
I pakken medfølger endvidere nogle dokumenter, som er vigtige for at visse hjælpefunktioner kan fungere.




I pakken kan læses denne readme fil:


Denne pakke ( zutil-udkast1.zip ) er udviklet for zutil på ubuntudanmark.dk :
https://ubuntudanmark.dk/forum/viewtopic.php?f=33&t=20086

De scripts, der findes i pakken, er en release kun til testkørsel med henblik på at få koden verificeret.
Denne afprøvning er udelukkende beregnet til udviklere og naturligvis helt på eget ansvar.
Alligevel er de fleste scripts låst med exit af sikkerhedsmæssige grunde.

Pakken er ikke beregnet som en reklame for zutil.
Men især "ged", som den indeholder, må betragtes som et fundamentalt stykke værktøj for zutils videre udvikling. Man skal bruge den hele tiden, når man opbygger alt det andet, og gennem dette arbejde vil videre optimering af brugerfladen falde naturligt ind.


Men er man administrator, og en bruger ringer klokken tre om natten og spørger om, hvordan han konfigurerer alias, så er det måske mere overskudsagtigt bare at kunne sige "ged alias" og lægge røret på, end at rode sig ud i en hel masse andet, som man senere fortryder.
Kan man se pointen i den form for hjælpeværktøjer til Linux, så kan man også se pointen med zutil.


Andre kommandoer, som måske fortjener særlig opmærksomhed:

"ged history" ( ikke færdig, der mangler mere god info. )
"f uu" ( flere og måske bedre links skal på, men potentialet burde være til at få øje på )
"zhistory -h" ( indikerer forhåbentlig, hvordan scripts kan gøre almindelige terminal kommandoer langt mere interessante for almindelige danske brugere )




På vegne af zutil er denne bold nu givet op til spil.


Venlig hilsen

Jakob77

https://ubuntudanmark.dk/forum/viewtopic.php?p=142107#p142107
Vedhæftede filer
zutil-udkast1.zip
(15.98 KiB) Downloadet 1146 gange