AppleScript: как получить текущий каталог самого верхнего терминала - PullRequest
0 голосов
/ 13 марта 2011

Я хочу получить текущий каталог самой верхней вкладки / окна терминала (через AppleScript или что-то еще, это на самом деле не имеет значения). Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 18 апреля 2013

Другое решение.

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 для получения PID оболочки bash соответствующего окна терминала.Это НАМНОГО быстрее, чем использование fuser (миллисекунды против секунд).

2 голосов
/ 04 февраля 2017

Я указал на вопрос при публикации вопроса о том, как найти текущий каталог в Applescript, поэтому я публикую этот ответ, чтобы будущие рекомендованные читатели знали, что в исключенном ответе есть недостаток.

Если текущий путь к каталогу содержит символ SPACE , то он возвращает только часть пути после (последнего) SPACE символа!

Вместо этого используйте этот простой скрипт, он обрабатывает каждый путь: tell application "Terminal" to set currentDirectory to (do shell script "pwd")

0 голосов
/ 13 марта 2011

Хорошо, у меня есть одно решение.

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
...