Псевдоним не является правильным решением для этого - требуемые вложенные побеги станут (будут) неуправляемыми. Я бы реализовал это как функцию, используя функцию bash под названием Heredoc в функции:
git_workspace () { ( osascript <<-'EOF' tell application "Terminal"' tell application "System Events" to tell process "Terminal" to keystroke "n" using command down do script with command "cd `pwd`;clear && git_fetch" in selected tab of the front window end tell EOF if [ $? -eq 0 ]; then osascript <<-'EOF' tell application "Terminal" tell application "System Events" to tell process "Terminal" to keystroke "n" using command down do script with command "cd `pwd`;clear && git_tree" in selected tab of the front window end tell EOF fi ) &>/dev/null }
- Команда
osascript
будет видеть ввод heredoc в виде файла, а не строкового аргумента, поэтому этот-e
аргумент не требуется. - Выходная Heredoc заявление будет текст точно так, как написано между
<<EOF
иEOF
маркерами, со следующими оговорками:- По умолчанию heredoc будет интерпретировать символы \, $ и `. Чтобы отключить это, заключите
<<EOF
маркер Heredoc в кавычки,<<'EOF'
- Будет выведено все, что находится между двумя маркерами, включая пробелы в начале. Чтобы отступы (благо быть читаемый кодом, а не возможности скрипта), Баш лишит все ведущие вкладки из текста, если оператор Heredoc имеет приборный аргумент, то есть
<<-'EOF'
. - В каждом случае закрывающий тег heredoc должен находиться на новой строке без начальных пробелов (табуляции или иным образом).
- По умолчанию heredoc будет интерпретировать символы \, $ и `. Чтобы отключить это, заключите
Если вы используете этот подход, вы можете вводить команды osascript в точности так, как они будут выполняться изначально, без необходимости решать какие-либо проблемы с расширением / заменой bash.
Я обернул обе последовательности команд osascript в подоболочку, чтобы упростить перенаправление вывода.
Если вы хотите увидеть, что текст / аргумент osascript выглядеть, изменить функцию временно заменив osascript
с cat
и удалить редирект / DEV / нуль. Как функция написана сейчас, вывод выглядит так:
tell application "Terminal"' tell application "System Events" to tell process "Terminal" to keystroke "n" using command down do script with command "cd `pwd`;clear && git_fetch" in selected tab of the front window end tell tell application "Terminal" tell application "System Events" to tell process "Terminal" to keystroke "n" using command down do script with command "cd `pwd`;clear && git_tree" in selected tab of the front window end tell