假设我的桌面上有一个文件夹,里面有文件和其他文件夹,它们数量众多且很大,可能需要几秒钟才能全部删除,我希望在删除操作完成时收到通知,然后我可以echo "Delete finished!"
在 shell 中运行下一行代码。我现在正在使用此代码,但打印发生在删除完成之前并出现问题。
我的目标只是清空我的文件夹。并保持文件夹为空
echo "Starting to Delete!"
cd Desktop
rm -rf TestFolder
mkdir TestFolder
echo "Delete finished!"
我是终端或 bash 的新手,请耐心等待。谢谢
答案1
一般来说,基于 sh 的 shell 脚本中的命令将同步运行,命令按顺序执行,以便每个命令在下一个命令启动之前完成。
主要的例外是当命令明确地在后台启动或移至“后台”时,通常是&
在调用结束时放置一个。在后台运行的命令与 shell 分离,shell 无法判断它们何时退出,因此如果脚本中间的任务在后台运行,则脚本将开始执行,然后挂断,继续执行下一个命令。
在您的情况下,系统中可能有一些组件尚未完全处理您的任务rm
(特别是硬盘本身),但请放心,文件系统 API 的编写是为了确保下一个命令不会注意到与延迟写入相关的任何清理。
您可以放心,在mkdir
命令运行时,删除文件的命令已经完成。磁盘可能仍然处于活动状态,但系统已经完成了其工作。
另外,为了回应你的标题,删除目录的内容,但不删除目录,使用rm -rf /path/to/dir/*
答案2
你可以运行rm -r TestFolder/*
- 星号代表“TestFolder”里面的所有文件,包括文件夹和文件。
-r
意思是“递归删除文件”。- 如果您是终端新手,请运行
man rm
rm 手册,您将在那里找到详细的所有命令。