AppleScript:如何获取最顶层终端的当前目录

时间:2011-03-13 15:25:08

标签: terminal applescript working-directory

我想获取最顶层的终端选项卡/窗口的当前目录(通过AppleScript或其他东西,它并不重要)。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

另一种解决方案。

get_foregroundterminal_curdir_fast.scpt:

tell application "Terminal"
    do shell script "lsof -a -p `lsof -a -c bash -u $USER -d 0 -n | tail -n +2 | awk '{if($NF==\"" & (tty of front tab of front window) & "\"){print $2}}'` -d cwd -n | tail -n +2 | awk '{print $NF}'"
end tell

我使用lsof本身来获取相应终端窗口的bash shell的PID。这比使用fuser(毫秒与秒)更快。

答案 1 :(得分:2)

我在发布有关如何在Applescript中找到当前目录的问题时指出了这个问题,所以我发布这个答案让未来的推荐读者知道例外答案有缺陷。

如果当前目录路径中包含 SPACE 字符,则它仅返回(最后一个) SPACE 字符后的路径部分!< / strong>

使用这个简单的脚本,它会处理每个路径:tell application "Terminal" to set currentDirectory to (do shell script "pwd")

答案 2 :(得分:0)

好的,我有一个解决方案。

get_foregroundterminal_proclist.scpt:

tell application "Terminal"
    do shell script "fuser " & (tty of front tab of front window)
end tell

get_foregroundterminal_curdir.sh:

#!/bin/bash

function pwdx {
    lsof -a -p $1 -d cwd -n | tail -1 | awk '{print $NF}'
}

for pid in $(osascript "$(dirname "$0")/get_foregroundterminal_proclist.scpt"); do
    pwdx $pid
    break # break on first
done