C语言实现shell程序---(1)总体框架

该文章介绍了一个小型项目,旨在通过C语言在Linux环境下实现简单的shell程序,包括文件复制(cp)、目录列举(ls-l)和树形展示(tree)功能。项目使用Makefile或CMake进行工程管理,提供了一个基本的构建流程,并特别提到Windows平台缺少lstat()函数,因此ls功能无法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过一个小项目学习一下C语言文件IO操作。基于linux平台开发,win平台没有lstat()这个函数,因此ls功能不能实现。

源码gitee地址:

tinyShell: 实现一个基础的 shell 程序

  • 实现一个基础的 shell 程序,主要完成三个命令的功能 cp、ls和tree
    • cp 命令主要实现:
      • 文件复制
      • 目录复制
    • ls 命令主要实现:
      • ls -l 命令的功能
    • tree命令实现

使用makefile或cmake管理工程。

最终实现效果: 

先把基本的管理工程文件写出来。

如果用Makefile管理工程,

OBJS := main.o cmd_ls.o cmd_cp.o cmd_handle.o # 所有依赖目标文件
TARGET := tinyshell  # 目标文件

$(TARGET): $(OBJS)  
     @gcc   $^ -o $@  # $^ : 依赖的所有文件  $@ : 目标文件
     @echo "Done."


%.o:%.c   # 自动推导
    @gcc -c $< -o $@  # $< :依赖的第一个文件  $@ : 目标文件


clean:  # 清除目标 
    rm -rf *.o $(TARGET)  # 删除相关依赖文件

 如果用cmake管理工程,CMakeList.txt

cmake_minimum_required(VERSION 3.25)
project(tiny_shell C)

set(CMAKE_C_STANDARD 11)

# 添加源文件
file(GLOB SOURCES "*.c")
# 添加头文件
file(GLOB HEADERS "*.h")

# 将源文件添加到可执行目标
add_executable(YourExecutable ${SOURCES} ${HEADERS})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值