我想在项目文件夹中自动化构建过程。我有一个本地./build
,我在其中运行cmake ..
。但是,在每次构建之前,我想刷新./build
文件夹的内容。下面是我到目前为止提出的脚本,但它有效,但是,我有点担心它可能会失控并删除一些至关重要的东西。确保以最安全的方式删除文件夹内容的最佳方法是什么?
#!/bin/bash
# Store project's root path.
_currentPath="$PWD"
_buildFolderTag='build'
# Dive into the build folder, if it exists.
if [ -d ${_currentPath}/${_buildFolderTag} ]; then
# Use the -i flag to first check what files are deleted.
# Then remove that from the command.
# We would like to run "rm -rf ./build/*"
rm -rf ./${_buildFolderTag}/*
# Get inside the ./build folder
cd ${_currentPath}/${_buildFolderTag}
# Run cmake in there.
cmake ..
# Return to project's root.
cd $_currentPath
fi
答案 0 :(得分:3)
_buildFolderTag
已在您的脚本中修复,因此它永远不会超出build
子文件夹。
您可以查看当前的.
。它会阻止删除my_crucial_dir/build
而不是my_daily_build/build
。
您可以使用trash-cli代替rm
。
在Ubuntu上,它位于repo:sudo apt-get install trash-cli
将文件投放到废纸篓:trash-put file1
一次,您应该清空垃圾箱:trash-empty
如果它是一个生产脚本,那么用户就不会对去掉垃圾的东西感到满意。但是你可以回应用户的完整路径并要求确认:
answer=""
echo "Confirm deleting the build folder: "$(pwd)${_buildFolderTag}
while [[ "$answer" != "y" && "$answer" != "n" ]]
do
read -p "Your choice (y/n): " answer
done
if [[ "$answer" == "y" ]]
then
rm -rf ./${_buildFolderTag}/*
fi