2009-05-25 1 views
0

다음 코드는 Bash에서 프로그램을 시작할 수 있도록해야합니다.Zsh에서 로그인 할 때 '0700'으로 보호 된 프로그램을 시작할 수 없습니다.

if [ "`uname`" = "Darwin" ]; then 
    compctl -f -x 'p[2]' -s "`/bin/ls -d1 /Applications/*/*.app 
/Application:/*.app | sed 's|^.*/\([^/]*\)\.app.*|\\1|;s/ /\\\\ /g'`"     
-- open 
    alias run='open -a' 
fi 

그러나 내 Zsh에서는 전혀 작동하지 않습니다. 나는 어떤 프로그램도 열 수 없다.

또 다른 버그는 모든 프로그램을 여는 것입니다. 나는 나의 발견을 얻을 - 명령 각 프로그램 파일을 정확히 작동하지 않을 수 700

난 당신이 그러나

find -perm 700 -type f *.app 

가 아니라 아니라 이러한 프로그램을 검색 할 수 있다는 사실을 알고있는 권한 시작 가능한 프로그램 만 가지고 싶어 . 이것은 터미널에서 프로그램을 시작 가능하게 만드는 더 좋은 방법이 될 수 있음을 시사합니다.

Mac/Ubuntu에서 어떻게 Zsh에서 프로그램을 시작할 수 있습니까?

+0

당신은 더 설명 할 수를 네가 원하는 게 분명히? 'open'명령 줄에서 모든 응용 프로그램을 시작할 수 있습니다. 자동 실행 하시겠습니까? 즉, 'iTunes'를 입력하고 쉘을 'open /Applications/iTunes.app'로 실행 하시겠습니까? 단, iTunes/Contents/MacOS/iTunes에 700 개의 권한이있는 경우에만 가능합니까? – JimG

+0

@JimG : 네, 그걸 원합니다. –

답변

2

완료 대신에? 별칭은 여전히 ​​탭이 완료되었습니다. 라인에 걸쳐 분할은 한 줄에

`print -l /Applications/**/MacOS/*(*f:700:) | 
grep -v "Contents.*Contents" | 
sed -e "s#\(.*/\)\([^./]*\)\(\.app\)\(.*\)#alias \2=\"\1\2\3\4\"#g"` 

첫 번째 인쇄 각 경기는, 두 번째는 응용 프로그램의 하위 패키지를 제거하고 마지막 alias 명령을 생성합니다 ... 쉽게 읽을 수 있도록합니다. 백틱을 제거하여 생성 된 명령을보고 확인하십시오.

[편집 :]이 직접 실행 파일을 실행 - 당신이 '열린 blah.app'방법을 사용하는 것을 선호하는 경우, 당신은에 나오지 명령의 마지막 부분 변경 될 수 있습니다 :

#alias \2=\"open \1\2\3\"# 
2

오, zsh. 그것은 항상 일을 재미있게 만듭니다.

그러나 이러한 종류의 디버깅을 쉽게 할 수있는 특정 기술이 있습니다. 내가 그렇게 IS ls에서 벗어나, 당신은 경로 이름, 사람이 읽을 수없는 명부 원하기 때문에, 대신 find을 사용하는 것이 가장 먼저하는 일 : 아마

find . -executable -a -name \*.app 

을 .... 당신이 별명에 대해 어떻게 생각하세요 어떻게

관련 문제