1

我在我的 Mac 上使用 Automator 来设置一个服务,该服务将选定的文件夹作为参数传递给 bash shell 脚本。在我做的脚本中:

for f in "$@"; do
    printf "%q\n" "$f" | pbcopy
done

如果我这样做:

echo `pbpaste`

我得到了我选择的文件夹的路径,其中包含空格(\)。然后我想使用这个路径cd进入那个目录并做一些其他的事情(创建一个空白目录结构)。我希望我能做到:

cd `pbpaste`

但这不起作用。如果我手动输入路径,cd那么我认为数据类型或返回或其他东西有问题?

我承认我真的不知道这个脚本实际上在做什么,并且可能会出错,但是如果有人能解释这里发生了什么以及如何让它工作,那就太好了,但更好的是指向一个非常好的资源,让一个完整的初学者开始学习 shell 脚本。我真的很喜欢再深入一点的想法,但我发现的所有资源要么是全部基础知识(cd、ls、pwd 等),要么是非常高的水平,并假设有一堆以前的知识。我真正想要的是完整的语言参考,其中包含一些实际示例,例如您为我更习惯的语言(HTML / CSS / JS / AS3)找到的,如果存在这样的事情的话。

为任何帮助干杯:)

4

2 回答 2

10

我同意@chepner 的回答,但为了谷歌的结果,使用 pbpaste cd 你只需这样做:

cd $(pbpaste)
于 2014-11-30T06:21:11.193 回答
2

当您使用该%q格式时,您正在向字符串添加文字反斜杠,当您使用它时,shell 不会将其作为转义字符处理cd.

剪贴板对于进程间通信很有用;在单个脚本中,仅使用变量来临时保存信息更容易。f已经有路径名,所以只需使用它:

cd "$f"

请注意,我引用了 的扩展名f,因此路径名中的任何空格都作为单个参数的一部分传递给cd.

于 2013-05-23T19:50:32.487 回答