Project 1: A Simple Shell 1. »ù±¾¹¦ÄÜ
ShellÊÇÒ»¸öÓÃCÓïÑÔ±àдµÄ³ÌÐò£¬ËüÊÇÓû§Ê¹ÓÃLinuxµÄÇÅÁº¡£Shell¼ÈÊÇÒ»ÖÖÃüÁîÓïÑÔ£¬ÓÖÊÇÒ»ÖÖ ³ÌÐòÉè¼ÆÓïÑÔ¡£Í¨Ë×Ò׶®µÄShell½Ì³ÌÓÐ:
Shell½Ì³Ì | ²ËÄñ½Ì³Ì Bash ½Å±¾½Ì³Ì
ÎÒÃǵĵĵÚÒ»¸öÏîÄ¿ÊDZàдһ¸ö¼òµ¥µÄShell¹¤¾ßmyshell£¬Ëü¾ßÓÐÒÔÏÂÊôÐÔ: 1. Ëü¿ÉÒÔÖ§³ÖÒÔϵÄÄÚ²¿Ö¸Áî:
cd
clr:Çå¿ÕÆÁÄ»ÉϵÄÏÔʾÄÚÈÝ¡£
dir
echo
Êä³öcommentµÄ¾ßÌåÄÚÈݲ¢»»ÐС£
µ±comment µÄÄÚÈݳöÏÖ¶à¸öspace»òÕßtabʱ£¬Ó¦¸ÃѹËõΪһ¸öspace¡£ help:Êä³öÓû§Ö¸ÄÏ¡£
pause:Í£Ö¹ShellµÄÖ´ÐУ¬Ö±µ½Óû§°´ÏÂEnter¼ü¡£ quit:Í˳ö¡£ ShellµÄ»·¾³±äÁ¿ÖÐÓ¦¸Ã°üº¬shell=
2. ËùÓеÄÆäËûÖ¸Áî¿ÉÒÔͨ¹ýµ÷ÓÃforkÓëexecÍê³É¡£¸¸½ø³Ìͨ¹ýforkÉú³É×Ó½ø³Ì£¬×Ó½ø³Ìµ÷Óà exec·½·¨Ö´ÐÐÓû§µÄÖ¸Áî¡£×¢Ò⣬×Ó½ø³ÌÔÚÖ´ÐÐʱӦ¸Ã°üº¬»·¾³±äÁ¿parent=
3. Èç¹ûShell¹¤¾ßÔÚʹÓÃʱ´øÓвÎÊý£¬ÄÇôËü¿ÉÒÔ´Ó²ÎÊýÖ¸¶¨µÄÎļþÖжÁÈ¡Ö¸Á²¢ÒÀ´ÎÖ´ ÐС£ÀýÈ磬µ±ÎÒÃÇÕâÑùʹÓÃShell¹¤¾ßʱ:
ÄÇô£¬ÎÒÃÇ»áÒÀ´Î¶ÁÈ¡batchfileÎļþµÄÿһÐв¢Ö´ÐС£µ±¶ÁÈ¡µ½ÎļþµÄ×îºóÒ»ÐÐʱ£¬ Shell»áÍ˳ö¡£
4. Ëü¿ÉÒÔÖ§³ÖÊäÈëÊä³öÖض¨Ïò¡£ÀýÈ磬µ±ÎÒÃÇÔÚShellÖÐÖ´ÐÐÒÔÏÂÖ¸Áî:
myshell batchfile
programname arg1 arg2 < inputfile > outputfile
»òÕßÒÔÏÂÖ¸Áî:
浙大学霸代写 加微信 cstutorcs
programname arg1 arg2 < inputfile >> outputfile
ÆäÖУ¬programnameÊÇ¿ÉÖ´ÐÐÖ¸Áarg*ÊÇÖ¸ÁîµÄ²ÎÊý¡£¸ÃÖ¸Áî´ÓinputfileÖлñ È¡Óû§ÊäÈ룬¶ø²»ÊDZê×¼ÊäÈëstdin;Ö¸ÁîÖ´ÐеĽá¹û»áÊä³öµ½outputfile£¬¶ø²» ÊDZê×¼Êä³östdout¡£
Êä³öÖض¨Ïò»áºÍdir environ echo helpº¬ÓÐÊä³öµÄÄÚ²¿Ö¸ÁͬʹÓã¬Êä³ö½á¹û»á Öض¨Ïòµ½Óû§Ö¸¶¨µÄÎļþÖС£ÀýÈçhelp > outputfileµÄÖ´Ðнá¹ûÓ¦¸ÃÊä³öµ½Óû§ Ö¸¶¨µÄÎļþoutputfile¡£
µ±Ê¹ÓÃÊä³öÖض¨Ïòʱ Èç¹û±íʾÖض¨ÏòµÄ×Ö·û´®ÊÇ>£¬
Èç¹ûoutputfile²»´æÔÚ£¬Ôòн¨Îļþ¡£
Èç¹ûoutputfile´æÔÚ£¬ÄÇôÊä³ö»á¸²¸ÇÔÎļþ¡£ Èç¹û±íʾÖض¨ÏòµÄ×Ö·û´®ÊÇ>>£¬
Èç¹ûoutputfile²»´æÔÚ£¬Ôòн¨Îļþ¡£
Èç¹ûoutputfile´æÔÚ£¬ÄÇôÊä³öÌí¼Óµ½ÔÎļþºóÃæ¡£
5. Shell¿ÉÒÔÖ§³Öºǫ́ÈÎÎñµÄÖ´ÐС£µ±Ò»ÌõÖ¸ÁîºóÃæÓÐ&·ûºÅʱ£¬Shell²»ÐèÒªµÈ´ý¸ÃÖ¸ÁîÖ´Ðнá
Êø²ÅÄÜ·µ»Ø¡£
6. Shell¹¤¾ßµÄpromptÓ¦¸Ã°üº¬µ±Ç°Ä¿Â¼µÄµØÖ·¡£
×¢Òâ:ÎÒÃÇ¿ÉÒÔ¼ÙÉèËùÓÐÃüÁîÐвÎÊý(°üÀ¨Öض¨Ïò·ûºÅ<£¬>ºÍ>>ºÍºǫִ́ÐзûºÅ&)ͨ¹ý¿Õ¸ñ (Ò»¸ö»ò¶à¸öspaceºÍtab)ÓëÆäËûÃüÁîÐвÎÊý¸ô¿ª¡£
2. ÏîÄ¿½ø¶È ¸ÃÏîÄ¿µÄÍê³É·½Ê½Îª½²Á·½áºÏ:½Ìʦ¸ºÔð¶ÔÓ¦¿Î³ÌÄÚÈݵĽ²½â£¬Öú½Ì¸ºÔðÏîÄ¿µÄ¼¼ÊõÖ¸µ¼¡£ÎªÁË
°ïÖúͬѧÃÇÍê³É¸ÃÏîÄ¿£¬Öú½Ì½«×éÖ¯Èý´ÎÏ°Ìâ¿Î£¬Öð²½ÍêÉÆÕû¸öÏîÄ¿¡£Èý´ÎÏ°Ìâ¿ÎµÄÄÚÈÝ°üÀ¨:
Shell¼ò½éÓëÏîÄ¿½éÉÜ¡£
Íê³Éclr dir environ Óë quit ¹¦ÄÜ¡£
»·¾³±äÁ¿Óëcd¹¦ÄÜ¡£ forkÓëexec¹¦ÄÜ¡£
ÊäÈëÊä³öÖض¨Ïò¡£
¹¦ÄÜÍêÉÆÓëÏîÄ¿ÆÀ²â¡£
3. ÏîÄ¿ÒªÇó
1. Éè¼ÆÒ»¸öÂú×ãÉÏÊöÌõ¼þµÄ¼òµ¥ÃüÁîÐÐShell¡£
2. Íê³ÉʵÑ鱨¸æ£¬ÊµÑ鱨¸æ°üº¬´úÂëÉè¼ÆÂß¼ÓëÓû§Ê¹ÓÃÊÖ²áÁ½²¿·Ö¡£ ´úÂëÉè¼ÆÂß¼²»ÐèÒªÌí¼Ó´úÂëµÈÎÞ¹ØÎļþ£¬¿ÉÒÔ±£ÁôÖØÒªº¯ÊýµÄ½Ó¿ÚºÍ˵Ã÷¡£
ʹÓÃÊÖ²áÓ¦°üº¬×ã¹»µÄϸ½Ú£¬¹©UNIX³õѧÕßʹÓá£ÀýÈ磬Ëü½âÊÍÊäÈëÊä³öÖض¨Ïò¡¢ ³ÌÐò»·¾³±äÁ¿ºÍºǫ́³ÌÐòÖ´ÐеĸÅÄ¿ÉÒԲο¼cshÓëzshµÄÓû§Êֲᡣ
3. Ô´´úÂë±ØÐëÓбãÓÚÀí½âµÄ×¢ÊÍÓë´úÂë½á¹¹£¬±ãÓÚÖú½ÌÆÀÉó¡£
Programming Help
4. Ìá½»ÎļþÓ¦½ö°üº¬Ô´Îļþmyshell.c¡¢makefileºÍreadme.pdf£¬²»ÐèÒª°üº¬¿ÉÖ´ÐÐ³Ì Ðò¡£Ç뽫ÉÏÊöÈý¸öÎļþѹËõΪzip¸ñʽ£¬ÃüÃûΪ[ѧºÅ].zip²¢ÉÏ´«µ½CanvasµÄ×÷ÒµÇø¡£
4. ÆÀ·Ö±ê×¼(Âú·Ö100·Ö)
ͨ¹ýmakefile¶ÔÏîÄ¿½øÐбàÒ룬ûÓо¯¸æ»òÕß±¨´í(5) ´úÂë½á¹¹¹æ·¶¡¢×¢ÊÍÍêÕûÓë¿É¶ÁÐÔ(5) Ö§³Ö´Ó¼üÅÌÊäÈëÖ¸ÁîºÍ´ÓÎļþ¶ÁÈ¡Ö¸Áî(10) ÄÚ²¿Ö¸ÁîÕý³£Ö´ÐÐ(30)
ÍⲿָÁîÕý³£Ö´ÐÐ(10) ÊäÈëÊä³öÖض¨Ïò(10) ºǫִ́ÐÐ(10) ʵÑ鱨¸æ(20)
´úÂëÉè¼ÆÂß¼(10) Óû§Ê¹ÓÃÊÖ²á(10)
Github