tvorba vlastneho interpretera(debian)
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.
Pre pridávanie komentárov sa musíte prihlásiť.

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
google.com - writing simple shell, writing your own shell ... ak triafam vedla, tak to ignoruj :)
Takže printf()
#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.FILE *file = fopen( subor.txt, "r" );
while ( ( x = fgetc( subor.txt) ) != EOF )
{
printf( "%c", x );
}
diki moc
Keď to budeš chcieť spraviť v Céčku, tak môžem napovedať :)
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.
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.
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 }Je tam ešte tretia chyba, ale tú nepočítam. Neskopíroval si úvodzovku na uzavretie kódu pre awk.
a samozrejme dakujem velmi pekne
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 :)
cat.c: line 4: syntax error near unexpected token `('
cat.c: line 4: `int main(int argc,char *argv[])'