2012-10-18 4 views
0

이름이 xyz 인 심볼릭 링크를 만든 다음 사용자가 입력 한 심볼릭 링크 이름을 포함하고 싶습니다.심볼릭 링크 캐치 사용자 입력

예 : 사용자가 입력하는 경우 :

xyz load aab\1.0.5 

내가 더 많은 물건을 할 수있는 문자열로 xyz load aab\1.0.5을 갖고 싶어.

왜 묻는가? 일치가없는 경우 나 디렉토리의 이름이 문자열의 일부를 비교하고 하나

  1. 는 사용자에게 경고를 줄이 경우

    를 (일 당신은 독서를 건너 뛸 수 있습니다), 또는

  2. 실행 그렇지 않으면 명령.

내가 원하는 것은 module 명령을 납치하는 것입니다.

편집 : 별칭을 사용해야한다고 생각합니다.

Edit2가 : 명확한 설명

내가 원하는 정확한 것은 이것이다 : 때 사용자 유형 module load program 또는 module load program/2.3.3. 요청중인 버전이 특정 플랫폼에서 사용 가능한지 여부를 알기 전에 명령을 실행하지 않으려합니다. /app/firefox/.sys/@sys/ 폴더를보고 어떤 버전을 사용할 수 있는지 확인할 수 있습니다.

근본적인 "문제점"은 SLES 10 및 11과 32 비트 및 64 비트에서 모든 모듈을 사용할 수 있도록 module이 설정되어 있으므로 사용자가 플랫폼에서 사용할 수없는 버전을로드하려고 시도하는 경우가 있습니다.

나는 이제 문제를 깨달았습니다. 버전을 입력하지 않으면 기본 버전이 선택됩니다. 하지만 스크립트를 사용하여 기본 버전을 쉽게 찾는 방법을 알지 못합니다. module appname avail을 그레이핑하여 "(기본값)"이있는 버전을 얻는 것이 결과를 인쇄하는 다른 모듈이기 때문에 작동하지 않습니다. 예를 들어 module firefox avail >> result.text은 빈 파일을 제공합니다.

+1

무엇이 문제입니까? 링크에서 가리키고 싶은 점은 무엇입니까?제발 좀 더 구체적으로 말하십시오. – choroba

답변

0

질문이 맞는지 확실하지 않지만 특정 명령을 '후크'하려고 할 수 있습니다. 이 경우 후크 스크립트를 사용하여 연결할 수 있으며, 연결하려는 명령과 동일한 이름으로 실제 스크립트 앞에 $ PATH에 표시되는 링크를 사용하여 실제 전화를 걸 것인지 여부를 결정할 수 있습니다 명령.

예를 들어

:

:

$ 고양이 후크 (경고이 다른 위험하고 추한 해킹입니다)

#!/bin/bash 
# hook for some commands 

echo $0 

cmd=$(basename "$0") 
echo "called as $cmd" 

if [[ $cmd = "module" ]] 
then 
    realcmd=/usr/bin/module 

    # verify parameters 

    # then call real command 
    $realcmd "[email protected]" 
    rc=$? 
    exit $rc 
else 
    echo "???" 1>&2 
    exit 1 
fi 

$ chmod를 a를 + x는 후크

$ LN -s 후크 모듈

$ PAT H =. : $ PATH 모듈 arg1 arg2

+0

감사합니다. 다음 단계로 나아갈 수있었습니다. 낮은 명성으로 인한 투표가 없습니다. – Fredrik

+1

대단히 반갑습니다. 또한 결정된 경우 대답을 허용 된 것으로 표시 할 수 있습니다 (http://stackoverflow.com/faq#howtoask) –