псевдоним bash_profile - Открыть Coda с PWD - PullRequest
2 голосов
/ 06 октября 2011

Я работаю над созданием псевдонима bash, чтобы я мог просто перейти к указанному каталогу и запустить команду, открывающую pwd. Мой скрипт прекрасно работает, но когда я получаю $ {pwd}, он получает pwd файла bash_profile. Как заставить его получить pwd окна вызывающего терминала?

alias opencoda="osascript -e 'tell application \"Coda\"' -e 'tell document 1' -e 'change local path \"${pwd}\"' -e 'end tell' -e 'end tell'"

РЕШЕНИЕ На самом деле я не уверен, почему вышеописанное дает каталогу bash_profile, а этот - каталог терминала, но тем не менее:

alias opencoda='osascript -e "tell application \"Coda\"" -e "tell document 1" -e "change local path \"${PWD}\"" -e "end tell" -e "end tell"'

Я должен был изменить кавычки вокруг ... также, очевидно, нужно было держать двойные кавычки внутри.

Еще один забавный скрипт Coda Bash, который я только что написал:

Открыть данный файл из текущего каталога:

function coda() {  osascript -e "tell application \"Coda\"" -e "tell document 1" -e "open \"${PWD}/$@\"" -e "end tell" -e "end tell";}

Ex) coda myfile.txt

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Когда вы ссылаетесь на переменную внутри строки в двойных кавычках, Bash тут же заменяет значение переменной. Все, что вам нужно сделать, это экранировать $, чтобы замена не состоялась. Таким образом, когда вы запустите opencoda, Bash увидит в команде ссылку на переменную $PWD и выполнит подстановку в это время.

alias opencoda="... \${PWD} ..."

(Кстати, на моем компьютере работает только $PWD [с большой буквы).

0 голосов
/ 06 октября 2011

Я не совсем уверен, что он делает, так что это довольно дикое предположение, но я бы попытался экранировать $ в переменной \${pwd}. Затем при первом разборе .bash_profile он оценивает его как ${pwd}, который должен затем передать правильную переменную.

...