将 pwd 作为参数传递给可执行文件

将 pwd 作为参数传递给可执行文件

所以我有一个“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
}

相关内容