tvorba vlastneho interpretera(debian)

Sekcia: Programovanie 25.10.2010 | 22:25
Avatar luk   Používateľ
zdravim, chcel by som poprosit o pomoc, s jednym zadanim do skoly. som uplny zaciatocnik v linuxe a dostal som ako zadanie :Vlastný interpreter príkazov pričom je potrebne spraviť aspoň 4 vlastne implementácie z nasledujúcich príkazov:
a) cat vratane -n ......atd.
viem asi tolko ze je to nieco ako bash kde si zadefinujem v neakom programovacom jazyku (C) co ma dane volanie vykonavat (ale mozem sa mylit ;) ).zatail najvacsi problem vidim v tom ze neviem ako vlastne zacat, resp. ci to mam zacal pisat ako script (v ktorom netusim ako mam zacal pisat neaku hlavicku alebo co..), alebo ci mam robil ako nahradu bashu ktory normalne pouzivam...za kazdu radu budem velmi vdacny.
    • Re: tvorba vlastneho interpretera(debian) 25.10.2010 | 23:01
      macek   Návštevník
      nazdar,
      ak mas na mysli aliasy tzv napr aby si nemusel stale pisat do konzoly ls -alh --color-auto

      tak das do svojho file /home/USERNAME/.bashrc :
      alias ll='ls -alh --color-auto'

      alebo tvoje cat -n das ako:
      alias catn='cat -n'
      ps: svoj alias si mozes pomenovat lubovolne ale nemal by byt rovnaky ako uz jestvujuci prikaz

      kozolove 'okno' vypni a po nastartovani novej konzoly by to malo ist...

      gl
      • Re: tvorba vlastneho interpretera(debian) 25.10.2010 | 23:07
        Luk   Návštevník
        o aliasoch viem, ale zlozitostne je to asi niekde inde..to by bolo prislis lahke, nakolko som videl aj ostatne zadania
    • Re: tvorba vlastneho interpretera(debian) 25.10.2010 | 23:35
      pejta   Návštevník
      možno hľadáš niečo ako toto http://linuxgazette.net/111/ramankutty.html
      google.com - writing simple shell, writing your own shell ... ak triafam vedla, tak to ignoruj :)
    • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 13:56
      Avatar bedňa LegacyIce-antiX  Administrátor
      Nejaké to cat sa dá spraviť v Céčku cez cout, fopen, fgets. Treba sa naučiť aspoň základy jazyka C. Všetko najdeš tu.
      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
      • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 14:36
        Avatar borg Fedora  Administrátor
        myslis cout ako instanciu triedy ostream ? v c? :)
        • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 14:50
          Avatar bedňa LegacyIce-antiX  Administrátor
          To som mu naložil :) c/c++ :) Som práve začal s c++.
          Takže printf()
          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
          • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 18:37
            Luk   Návštevník
            tak v C viem robit celkom dobre, co sa c++ tyka,to uz je ale o nieco slabsie...prudy su bohuzial silan kava pre mna
            • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 20:37
              Avatar bedňa LegacyIce-antiX  Administrátor
              S týmto môžeš začať ako návod na príkaz cat.
              #include <stdio.h>
              
              int main ( int argc, char *argv[] )
              {
                  if ( argc != 2 ) /* argc should be 2 for correct execution */
                  {
                      /* We print argv[0] assuming it is the program name */
                      printf( "Použitie: cat2 názov_súboru\n", argv[0] );
                  }
                  else 
                  {
                      // We assume argv[1] is a filename to open
                      FILE *file = fopen( argv[1], "r" );
              
                      /* fopen returns 0, the NULL pointer, on failure */
                      if ( file == 0 )
                      {
                          printf( "Could not open file\n" );
                      }
                      else 
                      {
                          int x;
                          /* read one character at a time from file, stopping at EOF, which
                             indicates the end of the file.  Note that the idiom of "assign
                             to a variable, check the value" used below works because
                             the assignment statement evaluates to the value assigned. */
                          while  ( ( x = fgetc( file ) ) != EOF )
                          {
                              printf( "%c", x );
                          }
                      }
                      fclose( file );
                      printf( "Toto je môj cat\n");
                  }
              }
              
              Skompiluj gcc cat.c -o cat2 a spusti cat2 nazov_suboru Vypíše ti obsah súboru do štandartného výstupu (terminálu) a na koniec vypíše Toto je môj cat.
              Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
              • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 20:41
                Avatar bedňa LegacyIce-antiX  Administrátor
                POZOR KUA, teraz mi dopalo, hoď sem celé zadanie, slovo od slova, lebo mám pocit či nechcú niečo ako cat | grep slovo
                Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 20:57
                  Luk   Návštevník
                  toto je cele zadanie, diki takto neako som to aj chcel, len dobre ze si spomenul grep mozno budu chciet aj to vyhladavanie, ale to uz nie ej problem diki.
              • Re: tvorba vlastneho interpretera(debian) 29.10.2010 | 22:07
                Luk   Návštevník
                pocuj prosim ta vedel by si mi poradit ako toto napisem v bashi v neakom scripte?
                FILE *file = fopen( subor.txt, "r" );
                while ( ( x = fgetc( subor.txt) ) != EOF )
                {
                printf( "%c", x );
                }
                diki moc
                • Re: tvorba vlastneho interpretera(debian) 30.10.2010 | 01:41
                  Avatar bedňa LegacyIce-antiX  Administrátor
                  Priateľu s bashom ti moc neporadím, sem tam základy. Skús skôr WlaSaTého a Limeho.
                  Keď to budeš chcieť spraviť v Céčku, tak môžem napovedať :)
                  Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 14:00
      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
      Idealne by bolo, ak by si sem hodil cele znenie zadania, lebo z popisu je naozaj tazke uhadnut, co vlastne treba robit.

      Ja som to pochopil tak, ze mas urobit nieco ako vlastny shell, ktory bude poznat len zopar prikazov, pricom aj tie budu implementovane priamo v nom, teda nebudu volat existujuce binarky cat a pod.
      Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
      • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 18:40
        Luk   Návštevník
        idealne/ neidealne toto je cele zadanie :) , ale ako pises zrejme to budem riesit iba ako neaky script ktory bude cakat na neaky moj definovany prikaz a potom si spravim vlastnu implentaciu toho prikazu, ale aby robil to iste ako napr. prikaz cat
        • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 20:56
          WlaSaTy   Návštevník
          Predpokladám že to bolo zadanie :
          vytvorte interaktívny nástroj schopný zjednodušiť bežnú prácu v shell-i.

          Nejaké to read do premennej v nekonečnom cykle, nejaký case na rozhodovanie čo pri ktorej voľbe robiť, nejaké vnorené ďalšie read-y aj s if-mi.

          Proste, niečo čo uľahčovalo prácu operátorom už v minulom tisícročí. Napríklad:
          Zvoľte voľbu:
          1) výpis poštovej fronty
          1.a) zobrazenie stavu fronty (mailq)
          1.b) zobrazenie užívateteľských poštových priečinkov čo mali nejakú zmenu (ls -l /var/log/mail|tail)
          2) užívatelia v systéme
          2.a) prihlásený užívatelia
          2.b) posledne prihlásení užívatelia
          a tak ďalej.
          • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 20:59
            Luk   Návštevník
            presne ako si napisal to aj mienim robit :Nejaké to read do premennej v nekonečnom cykle, nejaký case na rozhodovanie čo pri ktorej voľbe robiť, nejaké vnorené ďalšie read-y aj s if-mi.
            • Re: tvorba vlastneho interpretera(debian) 26.10.2010 | 21:25
              WlaSaTy   Návštevník
              Ak normálne robíš v bash-i, tak to už máš predsa hotové. V bash-i sa aj nirmálne programuje.
              • Re: tvorba vlastneho interpretera(debian) 27.10.2010 | 16:01
                Avatar lime Debian 3, Red Hat 6, Fedora Core 3  Používateľ
                iba mozem suhlasit v bash to mas suby dub ;)
                Prejdite z modrej obrazovky k linuxu :))
                • Re: tvorba vlastneho interpretera(debian) 27.10.2010 | 18:17
                  Avatar bedňa LegacyIce-antiX  Administrátor
                  No neviem tak napr. tohoto mi behajú zimomriavky po chrbte.
                  Neviem si predstaviť že by to malo 30riadkov a nájsť tam chybu.
                  #!/bin/bash
                  # if nothing is passed to the script, show usage and exit
                  [[ -n "$1" ]] || { echo “Usage: findlarge [PATHNAME]“; exit 0 ; }
                  # simple using find, $1 is the first variable passed to the script
                  find $1 -type f -size +100000k -exec ls -lh {} \; | awk ‘{ print $9 “: ” $5 }
                  Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                  • Re: tvorba vlastneho interpretera(debian) 27.10.2010 | 22:32
                    WlaSaTy   Návštevník
                    Ten skript má dohromady dva typy chýb čo je na dva riadky efektívneho kódu vcelku dosť.
                    1. Ak chceš ušetriť zopár znakov za if/then/else/fi, tak použi test
                    2. Nepoužívaj UNICODE úvodzovky

                    Je tam ešte tretia chyba, ale tú nepočítam. Neskopíroval si úvodzovku na uzavretie kódu pre awk.
                    • Re: tvorba vlastneho interpretera(debian) 30.11.2010 | 17:02
                      tomas144   Návštevník
                      zdravim ja to mam tiez robit ma to uz niekto hotove?
                      • Re: tvorba vlastneho interpretera(debian) 01.12.2010 | 00:04
                        Avatar bedňa LegacyIce-antiX  Administrátor
                        Bez urážky, ale čudujem sa že v dnešnej dobe sa hlásia ľudia na školy čo ich nebavia. Napoviem už len detinsky Luk čo začal toto vlákno napísal že pochopil ako na to, takže si to stačilo prečítať a spýtať sa ho či to už má, pretože mail má v profile :). Som zvedavý či napíšeš aspoň ďakujem :) Kua keby som môhol išiel by som znovu na školu, keď sa tam už konečne učí aj Linux.
                        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                        • Re: tvorba vlastneho interpretera(debian) 01.12.2010 | 01:11
                          tomas   Návštevník
                          a mozem sa ta opytat aky ze ma mail lebo ja tomu akosi nerozumiem :D
                          a samozrejme dakujem velmi pekne
                          • Re: tvorba vlastneho interpretera(debian) 01.12.2010 | 01:40
                            Avatar bedňa LegacyIce-antiX  Administrátor
                            kadlec DOT lukyno AT gmail DOT com

                            Namiesto DOT dáš bodku, namiesto AT dáš zavináč, je to ochrana pred spam botmi, aby nám nerozosielali nevižiadanú poštu :)

                            Napr.: ferdinand DOT druhy AT gmail DOT com = ferdinand.druhy@gmail.com :)
                            Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                            • Re: tvorba vlastneho interpretera(debian) 01.12.2010 | 11:15
                              tomas   Návštevník
                              inac to ma nenapadlo ale dakujem
                              • Re: tvorba vlastneho interpretera(debian) 03.12.2010 | 13:43
                                tomas   Návštevník
                                skusam ten cat co je na zaciatku a stale mi ukazuje tuto chybu nevie niekto co s tym je?

                                cat.c: line 4: syntax error near unexpected token `('
                                cat.c: line 4: `int main(int argc,char *argv[])'