前一段時間,一個同學的朋友找到我,讓我幫他完成一項作業。
作業的內容大體是制作一款簡易的shell程序,程序的框架由命題人已經搭好,需要在現有的框架下完成一系列的命令,例如ls、cd、exit、time等等。
題目要求點擊我
寫好的程序代碼點擊我
源碼文件分析如下:
myshell.c :主程序,接受參數,輸出信息。
myshell.h:頭文件定義引用
globals.c:對命令進行分類
parser.c:對命令進行解析,用了487行代碼
execute.c:具體執行命令,我的主要是修改了這個文件,大概增加了200行代碼
Makefile:編譯程序
主要修改了execute.c,用於添加命令函數和執行命令。
還有myshell.h用於添加頭文件和聲明函數。
使用方法:
在目錄下輸入make,編譯成myshell可執行程序。
然后./myshell進入命令行,即可執行shell名。
例如ls,cd /opt,time,/usr/bin/cal -y等
完成的功能有:
step0
建立了Makefile文件,使用make命令即可編譯成myshell程序。
step1
執行外部命令,如/bin/ls或/usr/bin/cal -y
setp3
執行內部命令,也就是自己定義的命令
1. exit 退出命令
2. cd 切換目錄,cd為切換到默認目錄或者cd /opt 切換到指定目錄。
3. time 執行時間命令
4. ls 列出目錄ls ,ls /opt
step4
支持順序執行;
支持與執行&&
支持或執行||
step6
支持文件輸出重定向
ls > a.txt 重新寫
ls >> a.txt 追加寫
step9
后台執行函數
ls; /bin/ps & time
time將會后台執行
題目的目的主要考察c語言的基本功,以及linux函數的使用。
由於水平有限,題目的要求里有很多沒法完成,如果小伙伴們有興趣的話可以進一步完善哦。