隐藏文件功能的重击问题

问题描述 投票:0回答:1

我有这个功能

function hide {
    for f in "$@"; do
        if [[ ! ${f::1} == '.' ]]; then
            mv $f .$f
        fi
    done
}

应该隐藏作为输入传递的文件,如果尚未隐藏。

当我在名称包含空格的文件上使用它时,例如:

touch "ciao ciao"
hide ciao\ ciao

它不起作用,而是出现此错误:

usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory

我尝试在mv命令中将.$f更改为."$f",但仍然出现错误。

bash shell mv
1个回答
0
投票

[@ Jetchisel,在将args传递给mv以确保保留空格时,需要引用变量:

function hide {
    for f in "$@"; do
        if [[ ! ${f::1} == '.' ]]; then
            mv "$f" ".$f"  # <= note variable references are quoted
        fi
    done
}
© www.soinside.com 2019 - 2024. All rights reserved.