![]() ![]() Osascript -e "$CMD_ACTIVATE" -e "$CMD_NEWTAB" >/dev/null Osascript -e "$CMD_SAVE_ACTIVE_APPNAME" -e "$CMD_ACTIVATE" -e "$CMD_NEWTAB" -e "$CMD_REACTIVATE_PREV_APP" >/dev/null Osascript -e "$CMD_SAVE_ACTIVE_APPNAME" -e "$CMD_SAVE_ACTIVE_TAB" -e "$CMD_ACTIVATE" -e "$CMD_NEWTAB" -e "$CMD_REACTIVATE_PREV_APP" -e "$CMD_REACTIVATE_PREV_TAB" >/dev/null Osascript -e "$CMD_ACTIVATE" -e "$cmd" -e "$CMD_SETTITLE" >/dev/nullĮlse # No command specified simply open a new tab or window. # Note: Even though we do not strictly need to activate Terminal first, we do it, as assigning the custom title to the 'front window' would otherwise sometimes target the wrong window. Osascript -e "$cmd" -e "$CMD_SETTITLE" >/dev/null Osascript -e "$CMD_SAVE_ACTIVE_WIN" -e "$cmd" -e "$CMD_SETTITLE" -e "$CMD_REACTIVATE_PREV_WIN" >/dev/null If (( inBackground = 2 )) then # Restore the previously active window after creating the new one. # Note: $CMD_NEWWIN is not needed, as $cmd implicitly creates a new window. ![]() Osascript -e "$CMD_ACTIVATE" -e "$CMD_NEWTAB" -e "$cmd in front window" -e "$CMD_SETTITLE" >/dev/null Osascript -e "$CMD_SAVE_ACTIVE_APPNAME" -e "$CMD_ACTIVATE" -e "$CMD_NEWTAB" -e "$cmd in front window" -e "$CMD_SETTITLE" -e "$CMD_REACTIVATE_PREV_APP" >/dev/null Osascript -e "$CMD_SAVE_ACTIVE_APPNAME" -e "$CMD_SAVE_ACTIVE_TAB" -e "$CMD_ACTIVATE" -e "$CMD_NEWTAB" -e "$cmd in front window" -e "$CMD_SETTITLE" -e "$CMD_REACTIVATE_PREV_APP" -e "$CMD_REACTIVATE_PREV_TAB" >/dev/null If (( inBackground = 2 )) then # Restore the previously active tab after creating the new one. # !! Sadly, because we must create a new tab by sending a keystroke to Terminal, we must briefly activate it, then reactivate the previously active application. # '>/dev/null' suppresses AppleScript's output when it creates a new tab. # Open new tab or window, execute command, and assign tab title. Local CMD_NEWTAB='tell application "System Events" to keystroke "t" using \"" Local CMD_ACTIVATE='tell application "Terminal" to activate' # Sadly, there is no direct way to open a new tab in an existing window, so we must activate Terminal first, then send a keyboard shortcut. # Commands for opening a new tab in the current Terminal window. Local CMD_NEWWIN=$CMD_PREFIX # Curiously, simply executing 'do script' with no further arguments opens a new *window*. # Command for opening a new Terminal window (with a single, new tab). Local CMD_PREFIX='tell application "Terminal" to do script' # All remaining parameters, if any, make up the command to execute in the new tab/window. *) # 1st argument reached proceed with argument-parameter analysis below. Local targetDesc='new tab in the active Terminal window' # If this function was invoked directly by a function named 'newwin', we open a new *window* instead ![]() # When invoked via a function named 'newwin', opens a new Terminal *window* instead. Source code (paste into your bash profile, for instance): # Opens a new tab in the current Terminal window and optionally executes a command. # Open new tab and execute script, but don't activate the new tab.ĬAVEAT: When you run newtab (or newwin) from a script, the script's initial working folder will be the working folder in the new tab/window, even if you change the working folder inside the script before invoking newtab/ newwin - pass eval with a cd command as a workaround (see example above). # Open new tab, execute script, close tab. Newtab eval "ls \$HOME/Library/Application\ Support echo Press a key to exit. # Open new tab, execute commands, close tab. Newtab eval "cd ~/Library/Application\ Support ls" # Double-quote the command passed to `eval` and use backslash-escaping inside. # Open a new tab with a given working directory and execute a command Newtab ls -l "$Home/Library/Application Support" # Open new tab and execute command (quoted parameters are supported). Sample invocations: # Get command-line help. If a command is specified, its first token will be used as the new tab's title. Once installed, run ttab -h for concise usage information, or man ttab to view the manual.īuilding on the accepted answer, below is a bash convenience function for opening a new tab in the current Terminal window and optionally executing a command (as a bonus, there's a variant function for creating a new window instead). (depending on how you installed Node.js, you may have to prepend sudo). If you have Node.js installed, simply run: npm install -g ttab However, a more fully featured, more robust, tested script version is now available at the npm registry as CLI ttab, which also supports iTerm2: Update: This answer gained popularity based on the shell function posted below, which still works as of OSX 10.10 (with the exception of the -g option). ![]()
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |