所以我有一个“sublime text”的别名http://www.sublimetext.com/docs/2/osx_command_line.html 很多时候我需要直接从终端打开文件或文件夹,这对于文件来说很容易:
subl myfile.html
和一个文件夹
subl /Users/me
但是如何使用“pwd”命令在 Sublime 中打开当前目录?有办法把它放进去吗?
答案1
$(pwd)
或者,您可以使用反引号,例如
`pwd`
所以:
subl `pwd`
无论哪种方式,都会执行命令pwd
,然后将其返回文本作为命令行传递。假设您使用的是 bash,查看正在发生的情况的一个好方法是发出set -x
然后运行命令。如本例所示,wheresubl
的别名echo
显示,结果ofpwd
在命令行上传递给扩展别名(以 开头的行+
表示实际的正在执行的命令):
$ alias subl=echo
$ mkdir /tmp/abc
$ cd /tmp/abc
$ set -x
$ subl `pwd`
++ pwd
+ echo /tmp/abc
/tmp/abc
$
(完成后,您可以通过发出 来停止打印命令set +x
。)
答案2
您可以使用环境变量 PWD 或.
sub1 $PWD
sub1 .
答案3
要将一个命令的输出插入另一个命令的命令行,请使用命令替换。
subl "$(pwd)/somefile.txt"
请注意,您需要将其放在(…)
双引号之间。否则,有时会发生不好的事情(当命令的输出包含空格或 时\[*?
)。
在 的特殊情况下pwd
,有一个 shell 变量包含相同的文本:$(pwd)
您可以编写来代替$PWD
。出于同样的原因,这需要放在双引号之间。
如果您想使用绝对路径作为参数subl
来调用subl
程序,则必须在函数中完成,而不能在别名中完成。请记住,该路径可能已经是绝对路径。
subl () {
case "$1" in
/*) :;; # already an absolute path, nothing to do
*) set "$PWD/$1";; # make an absolute path
esac
command subl "$1" # invoke the external program subl, even though a function exists
}