MacOS终端进入带有空格和括号的文件夹

4

我正在尝试配置Cyberduck,让其读取我的Dropbox文件夹中的书签文件。

通常可以通过以下命令来完成此操作:

defaults write ch.sudo.cyberduck application.support.path ~/Dropbox/Cyberduck

非常简单!

但是... Dropbox 已经改变了,如果您有专业账户,则 Dropbox 文件夹会更名为“Dropbox(个人)”。

我已经尝试过这样做:

defaults write ch.sudo.cyberduck application.support.path ~/Dropbox\ \(Personal\)/

我遇到了以下错误:

not parse: [...]/Dropbox (Personal)/Apps/Cyberduck/.  Try single-quoting it.

我尝试像这样使用单引号,但还是出现了相同的错误:
defaults write ch.sudo.cyberduck application.support.path '~/Dropbox\ \(Personal\)/'

我该如何解决这个问题?


嗯,在终端/bash shell中,~/Dropbox\ \(Personal\)/ 绝对能够工作,然而,我不确定cyberduck是否支持。 "(个人)"后缀...这正常吗?我也有Pro版本,运行的是MacOS,目录仍为~/Dropbox - user2489252
@SebastianRaschka 好的,这可能是因为您已经安装了Dropbox,然后进行了升级。但如果您在另一台计算机上重新安装它,就会发生这种情况:https://www.dropbox.com/help/4210 - Mr.Web
2
如果你使用单引号,波浪号 ~ 将不会被扩展。请使用 '/Users/you/Dropbox...' - Mark Setchell
我在使用Dropbox的企业文件夹时遇到了完全相同的问题。虽然我可以轻松地进入该目录(并且当我运行pwd时,它会报告正确的名称),但我无法使用任何反斜杠、单引号或双引号的组合或仅对“Dropbox(公司名称)”路径部分进行引用,也无法使用根路径或相对路径来使“defaults write”正常工作。到目前为止,似乎这里没有任何答案适用于任何人。结果总是:“无法解析:[...]尝试使用单引号引用它。” - squareman
4个回答

8

您可以通过将括号包装在双引号中来转义单引号:

不要写成: ln -s '/Users/username/Dropbox (Company Name)/' DropboxCompanyName

应该写成: ln -s "'/Users/username/Dropbox (Company Name)/'" DropboxCompanyName

请注意,将双引号添加到/Users/username/Dropbox (Company Name)/中。


1
所以我找不到一种方法来对带有括号的路径进行“defaults write”操作,但我做了这个解决方法,它似乎对我有用(在我的情况下,我需要链接到我的企业Dropbox帐户):
cd到您的主文件夹并创建带有括号的目录的符号链接:
ln -s '/Users/username/Dropbox (Company Name)/' DropboxCompanyName

在那时,我能够进行默认写入,将~/DropboxCompanyName作为路径的一部分写入,它可以正常工作。
话虽如此,你的个人文件夹已经有一个隐藏的符号链接:"Dropbox",位于同一个目录中,指向"Dropbox(Personal)",因此你应该能够按照原来的命令进行操作。
defaults write ch.sudo.cyberduck application.support.path ~/Dropbox/Cyberduck

...因为路径中的“Dropbox”部分仍然应该指向您的个人文件夹。这是我本地观察到的情况(在查看隐藏文件时),也是Dropbox在其网站上所说的:https://www.dropbox.com/help/9031


1
你好!您可以通过在单引号中包裹双引号来解决括号问题。ln -s "'/Users/username/Dropbox (Company Name)/'" DropboxCompanyName - cody.codes

0

我假设您正在使用终端中的Unix。

我已经在我的公共文件夹中设置了一个同名文件夹来进行测试,如下所示。 enter image description here

您当前对该文件夹的引用似乎是正确的。将文件夹拖入终端窗口的当前命令行将自动为您提供对该文件夹的正确引用。

作为替代方案,我建议将文件夹名称放在双引号中。即使名称中有括号,在Unix终端中使用双引号时无需转义这些字符。这使得人类更容易键入正确的引用。

例如,要引用下面图片中的文件夹,可以使用以下引用来执行cd(更改目录命令):

~/Public/"Dropbox (Personal)"

因此,我建议尝试:

ch.sudo.cyberduck application.support.path ~/Public/"Dropbox (Personal)"

至于这个命令的其余部分,我不确定ch是否是一个有效的Unix命令。我还没有足够的Unix经验来指导你。


我使用 ~/"Dropbox (Personale)"/Apps/Cyberduck 得到了相同的结果。 - Mr.Web
1
好的,ch是用于C语言Shell的。 - Cam_Aust
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Cam_Aust
我的意思是出现了相同的错误信息。这里的“e”是因为我是意大利人,我的文件夹名字是Dropbox(个人),由于Dropbox的原因。 :) - Mr.Web
好的,很棒。这个命令之前对你有效过,但是看起来已经尝试了各种正确包含路径的方法。我在想问题是否超出了路径寻址范围。如果你最近升级到OSX 10.11,那么一些系统文件可能会发生变化。虽然可能性不大,但我还是提一下,因为我的知识已经到达极限了。 - Cam_Aust
谢谢。它在另一台电脑上运行正常,我以前有“Dropbox”文件夹,没有添加任何“个人”垃圾...无论如何,还是谢谢。 - Mr.Web

0

你必须在整个地址中加上""

更像这样

ch.sudo.cyberduck application.support.path "~/Public/Dropbox (Personal)"

相同的结果: $ defaults write ch.sudo.cyberduck application.support.path "/Dropbox (Personale)/Apps/Cyberduck" 2016-06-04 11:24:31.972 defaults[1136:362232] 无法解析:/Dropbox(Personale)/Apps/Cyberduck。请尝试使用单引号。 - Mr.Web
不可以,引号会阻止shell解析~。将其放在引号外面 - ~/"Dropbox/etc (ad naus)" - 或者使用 $HOME 代替,它即使在双引号中也会被解析(但在单引号中不会)。 - tripleee
那么,为什么不把地址设为绝对地址呢? - Nicolas Martinez
没错。我发现如果你将文件夹拖到终端中,它会让你轻松到达那里。 - Mr.Web

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接