2011-10-06 4 views
2

bash 별칭을 만들려고합니다. 따라서 지정된 디렉토리로 이동하고 pwd를 여는 명령을 실행할 수 있습니다. 내 스크립트는 훌륭하게 작동하지만 $ {pwd}를 잡았을 때 bash_profile 파일의 pwd를 가져온다. 호출하는 터미널 윈도우의 pwd를 가져 오려면 어떻게해야합니까? 위에서 그럼에도 불구하고 bash_profile 해줄이 하나의 단자 디렉토리 만 제공 정말 이유를 잘 모르겠어요 bash_profile 별칭 - PWD가있는 Coda 열기

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

해결 방법 :

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

는 또한 분명히 .. 주위에 따옴표를 변경했다 내부에 큰 따옴표를 유지해야했습니다.

또 다른 재미 코다 bash는 스크립트는 그냥 쓴 :

를 열고 현재 디렉토리에서 해당 파일을

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

예) 코다의 MYFILE.TXT

+0

wejrowski을, 당신이 대답으로 게시하는 경우 귀하의 질문에 대한 대답은, 그것은 더 나은 발견 한 경우. 페이지 하단의 "내 질문에 대한 답변"링크를보십시오. 질문에 대한 대답을 편집하지 마십시오. –

답변

0

정말 아니에요 그게 무슨 일을하는지, 이것은 꽤 야생적인 추측이지만, \${pwd} 변수에서 $을 탈출하려고합니다. 그런 다음 .bash_profile에 의해 처음 구문 분석 할 때 ${pwd}으로 평가 한 다음 올바른 변수를 전달해야합니다.

2

큰 따옴표로 묶은 문자열에서 변수를 참조하면 Bash는 변수의 값을 바로 그 자리에 대입합니다. $을 이스케이프하면 대체가 수행되지 않습니다. 그런 식으로 opencoda을 실행하면 Bash는 변수 참조 $PWD을 명령에 표시하고 그 시점에 대체를 수행합니다.

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

(덧붙여, 내 컴퓨터에만 $PWD [대문자] 작동합니다.)

+0

그래서 이것을 시도하십시오 별칭 opencoda = "osascript -e"응용 프로그램에 "Coda \" '-e'문서 1 '-e'에게 로컬 경로 변경 \ "\ $ {PWD} \" '-e' '-e'최종 TELL '$ {PWD를} " 는 그것을 그대로 열려고" " 하지만 난 =이, 별명 pwdtest 할 경우"에코 \ $ {PWD}는 " 제대로 작동을 .. 펑키 뭔가 다른 모든 인용문들과 함께 일어나야 만 하는가? 아니면 특정 명령이 작은 따옴표로되어 있기 때문일 수도 있습니다 ... .. 행운을 제외하고 모든 것을 가지고 노는 시도 ... – wejrowski

+0

내 생각 엔 작은 따옴표입니다. 그들을 큰 따옴표로 대체하는 것이 좋습니다. –

+0

그래, 그게 내가 생각한거야,하지만 내가 따옴표를 바꾸면 오스카 스크립트가 실행되지 않을 어떤 이유로. 말이되지 않습니다. – wejrowski