我有这个功能
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"
,但仍然出现错误。
[@ Jetchisel,在将args传递给mv
以确保保留空格时,需要引用变量:
function hide {
for f in "$@"; do
if [[ ! ${f::1} == '.' ]]; then
mv "$f" ".$f" # <= note variable references are quoted
fi
done
}