我想使用rm命令,这样当参数中有一个单独的星号时,它会返回一个错误。例如,如果我键入rm -f * .txt,那么这个命令就不应该执行(这样我已经无意中删除了几个文件)。您能告诉我最简单的方法是什么吗?
rm
rm -f * .txt
wtzytmuj1#
正如在注解中所讨论的,rm别名或函数通常无法检测它是否与被shell扩展为参数列表的*一起运行。这个Bash函数演示了一个可能的替代方法来帮助您解决问题:
*
function rm { local arg for arg in "$@"; do if [[ $arg != -* && ! -L $arg && ! -e $arg ]]; then printf 'rm: ERROR: argument does not exist: %q\n' "$arg" >&2 printf ' Nothing is being removed\n' >&2 return 1 fi done command rm "$@" }
-e
rm * .txt
.txt
1条答案
按热度按时间wtzytmuj1#
正如在注解中所讨论的,
rm
别名或函数通常无法检测它是否与被shell扩展为参数列表的*
一起运行。这个Bash函数演示了一个可能的替代方法来帮助您解决问题:-e
测试。例如,如果与rm * .txt
一起运行,则不会删除任何内容,因为它将检测到不存在.txt
文件。rm
。