2013-04-13 3 views

답변

17

POSIX는 물결 모양 확장을 포함하여 쉘과 같은 확장을 수행하기 위해 wordexp(3)을 제공합니다.

4

경로의 물결표는 특정 쉘의 것입니다. 첫 번째 문자가 물결표와 슬래시 (또는 문자열의 끝 기호) 인 경우 물결표를 환경 변수 HOME (getenv에서 얻을 수 있음)의 값으로 대체하십시오.

두 번째 문자가 이 아니고 인 경우 가장 큰 숫자는 ~user/path입니다. 그런 다음 사용자 이름을 추출하고 예를 들어 getpwnam을 사용하여 해당 사용자의 홈 디렉토리가있는 사용자의 비밀번호 항목을 가져옵니다.

13

당신은 내가 그 쉘에 내장되어 말하고 싶은

#include <stdio.h> 
#include <wordexp.h> 

int main(int argc, char* argv[]) { 
    wordexp_t exp_result; 
    wordexp(argv[1], &exp_result, 0); 
    printf("%s\n", exp_result.we_wordv[0]); 
} 
+2

함수에서 이것을 사용한다면 메모리 누수를 피하기 위해'wordfree (& exp_result);를 추가하고 싶을 것이다. – ishmael

관련 문제