用空格移动 launchpad.db

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

考虑以下脚本:

TODAY=$(date -j +"%j # %Y.%m.%d # %H.%M.%S")

LAUNCHPAD_LOCATION=$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad
LAUNCHPAD_DESTINATION="/Users/tobias/[DEVELOPMENT # ROOT]/LOCAL/PROJECTS/sh # TK-Launchpad.DB/"$TODAY""

mkdir "$TODAY"
mkdir "$LAUNCHPAD_DESTINATION"

cp -Rv $LAUNCHPAD_LOCATION $LAUNCHPAD_DESTINATION

这个脚本有什么问题?它应该将 Launchpad.db 文件夹复制到 $TODAY 中格式的最近日期,但事实并非如此。是的,我需要空间来进行进一步的基于文件的处理和审美目的。

我尝试将 launchpad.db 复制到不带空格和括号的临时文件夹中,然后将结果移动到带空格和括号的新文件夹中。

TODAY_1=$(date -j +"%j_#_%Y.%m.%d_#_%H.%M.%S")
TODAY_2=$(date -j +"%j # %Y.%m.%d # %H.%M.%S")

LAUNCHPAD_LOCATION=$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad
LAUNCHPAD_DESTINATION_1="/Users/tobias/DEVELOPMENT_#_ROOT/LOCAL/PROJECTS/sh_#_TK-Launchpad.DB/"$TODAY_1""
LAUNCHPAD_DESTINATION_2="/Users/tobias/[DEVELOPMENT # ROOT]/LOCAL/PROJECTS/sh # TK-Launchpad.DB/"$TODAY_2""

cp -Rv $LAUNCHPAD_LOCATION $LAUNCHPAD_DESTINATION_1

mv -v "$LAUNCHPAD_DESTINATION_1" "$LAUNCHPAD_DESTINATION_2"

现在我快要得到结果了,但现在我对这个烦人的子文件夹有问题,而且我无法摆脱它。

顺便问一下:是否有更简单且可行的解决方案?

shell sh zsh
1个回答
0
投票

这背后的主要原因是它没有正确处理文件路径中的空格和括号等特殊字符。 请记住,每当您使用包含空格的变量或路径时,请始终尝试将它们用双引号引起来,以确保 shell 将它们视为单个实体。 试试这个:

TODAY=$(date -j +"%j # %Y.%m.%d # %H.%M.%S")

LAUNCHPAD_LOCATION="$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad"
LAUNCHPAD_DESTINATION="/Users/tobias/[DEVELOPMENT # ROOT]/LOCAL/PROJECTS/sh # TK-Launchpad.DB/$TODAY"

mkdir -p "$LAUNCHPAD_DESTINATION"

cp -Rv "$LAUNCHPAD_LOCATION" "$LAUNCHPAD_DESTINATION"

我希望现在它能解决您的疑问。如果您发现任何疑问,请再次询问。

© www.soinside.com 2019 - 2024. All rights reserved.