8

Я хотел бы знать, возможно ли это.

Я хочу настроить какой-либо скрипт или команду, которая откроет 5 вкладок, и каждая открываемая вкладка будет иметь свой собственный каталог, указанный

Все в одном окне

tab 1: open ~/folderA1
tab 2: open ~/folderA2
tab 3: open ~/folderA3
tab 4: open ~/folderA4
tab 5: open ~/folderA5

Это на iTerm2 в Mac OS X.

Я знаю, что могу сделать что-то вроде CMD+T, а затем открыть каждый из них, используя cd ~/folderA1 и т.д., Но если есть команда, которую я могу настроить, или сценарий, который после выполнения они сделают это все сразу, я хотел бы знать, если есть способ сделать это.

1 ответ1

8

Обновление: более новый iTerm требует, чтобы вы изменили синтаксис, так что это будет выглядеть так:

tell application "iTerm"
    tell current window
        create tab with default profile
    end tell
    tell current tab of current window
        set _new_session to last item of sessions
    end tell
    tell _new_session
        select
        write text "cd \"$dir\""
    end tell
end tell

Смотрите также этот ответ здесь.


Для более старых версий iTerm:

Взяв скрипт из моего ответа здесь, вы можете сделать что-то вроде этого:

launch () {
for dir in ~/folderA{1..5}; do
/usr/bin/osascript <<-EOF
tell application "iTerm"
    make new terminal
    tell the current terminal
        activate current session
        launch session "Default Session"
        tell the last session
            write text "cd \"$dir\""
        end tell
    end tell
end tell
EOF
done
}

Чтобы объяснить, что происходит:

  • Мы создаем функцию оболочки с именем launch , поэтому вы можете поместить ее в ваш ~/.bash_profile или в любое место, где вы хотите, чтобы она выполнялась при запуске.

  • Мы зациклились на результате расширения Bash-скобок ~/folderA{1..5} , которое дает вам ~/folderA1 ~/folderA5 .

  • Мы называем библиотеку iTerm2 AppleScript через osascript создать новую вкладку, включите его, запустите сеанс по умолчанию, и cd в указанный каталог.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .