Download presentation
Presentation is loading. Please wait.
Published byAdele Dickerson Modified over 9 years ago
1
2 nd Assignment Improve Toyshell with some new feature, such as: help, cd, ctrl/D, setenv and compile it. Create a user “lapsa” and make him to get Toyshell upon login. Write 4 small shell scripts specified Explain some Unix shell script (e.g. some strat-up sequence script) with total length >30 lines What is the role of this script in the Unix system? Comment the contents of the script line by line (Optional): replace Unix “init” program with some other program (e.g. shell) and manually bring the system to usable state Record your manual steps into a shell-script and use it to initialize the system automatically after restart (without the classic “init”)
2
Submission Name your submission JanisBerzins.zip Name shell scripts 1.sh, 2.sh, 3.sh, 4.sh To ease their automatic verification by teacher
3
Technical info Recommended is Bash; if you use a different shell language, make sure that we will be able to run it Scripts can use external “helper” programs, but do not use any exotics that the testing system might not have Scripts must not ask for any other input than specified or pause as they may be tested automatically Of course, no abuse attempts Toyshell can be (optionally) improved with fragments from file found under 4. lekcija – “ Noderīgi progr.fragmentu paraugi” or by looking at some real shell source code
4
1.sh Create script, that automatically writes “hello world” to standard output deletes file “deleteme.txt” creates directory “new_dir” in the working directory writes the output of “date” command to file “date.txt” inside the “new_dir” directory
5
2.sh File “a” will contain one number 0 <= A <= 100 File “b” will contain one number 0 <= B <= 100 Create Bash script, that will read inputs from files and create file “c” containing number A*B (A multiplied by B) Example: If file “a” contains “4”, file “b” contains “5”, and “./2.sh” is run, file “c” should contain “20”.
6
3.sh Create script, that will take 2 arguments: 3.sh Search the files in for substring “moveme” in the file content Move those files that contain the string to directory On the standard output, output two lines: On first line, output the total number of lines that matched On second line, output the total number of files moved
7
4.sh Create a number guessing game, that “thinks” of a number N in the range of 1..100 and makes the user guess it Read user’s guess (internal command read ) After successful attempt, show victory message and exit After unsuccessful attempt, show number of tries left, and whether the number guessed is larger or smaller than N If 10 tries are made, display N and exit
8
#include #define MAXLINE 200 #define MAXARG 20 extern char **environ; void env(void){ int i; for(i=0;environ[i]!=NULL;i++){ printf("%s\n",environ[i]); } void exitsh(int status){ _exit(status); } void execute(char *arg[]){ pid_t pid; int status; pid=fork(); if(pid>0){ wait(&status); } else if (pid==0) { execvp(arg[0],arg); printf("Komanda nav atrasta\n"); exitsh(0); } else { printf("Kluda fork() sistemas izsaukuma\n"); } int main (void){ char cmd[MAXLINE]; char *cmdp; char *av[MAXARG]; int i; while(1){ printf("$toyshell$> "); fgets(cmd,sizeof(cmd),stdin); if(strcmp(cmd,"env\n")==0){ env(); } else if(strcmp(cmd,"exit\n")==0){ exitsh(0); } else { cmdp=cmd; for(i=0;i<MAXARG;i++){ av[i]=strtok(cmdp," \t\n"); cmdp=NULL; } execute(av); } return(0); } toyshell.c
9
“toyshell” palaišana # /usr/bin/gcc toyshell.c # cc toyshell.c #./a.out $toyshell$> env USER=root HOME=/root TERM=vt100 PATH=/root/bin:/usr/local/bin:/bin:/usr/bin SHELL=/bin/sh $toyshell$> ps PID TTY TIME CMD 126 co 0:00 -sh 95 c1 0:00 getty 435 p1 0:00./a.out 436 p1 0:00 ps $toyshell$> exit #
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.