2012-10-25 3 views
0

별칭을 사용하여 C에서 파일을 컴파일하는 데 걸리는 시간을 단축하고 싶습니다.별칭, 변수 및 파일 이름

alias gccp="gcc -pendantic -Wall -ansi '$1'.c -o '$1'" 

내가 gccp의 P1을 시도하고 명령 gcc -pendantic -Wall -ansi p1.c -o p1을 실행하는 데 기대 :

여기 내 별명입니다.

내가 뭘 잘못하고 있니?

+2

별칭은 $ 1 같은 인수를 처리 할 수 ​​없습니다. '함수 gccp {gcc - ... $ 1 ...; }'. 행운을 빕니다. – shellter

+0

실제로 가능합니다. 별칭 djang = "django-admin.py startproject $ 1"이 효과적입니다. –

+0

@Dave :'djang blah'를 실행하면 쉘은'djang'에'django-admin.py startproject'를 대체하고'django-admin.py startproject blah' 명령을 실행합니다. 별칭을 평가할 때 '$ 1'이 빈 문자열로 확장됩니다. –

답변

1

별칭에는 인수를 사용할 수 없습니다. 귀하의 경우 $ 1은 아무것도 아닙니다. 이를 수행하고 내보내는 함수를 만들어야합니다.

편집는 :

내가 실수를했다. 인수는 bash 별명 에서 가능하지만은 호출 될 때 별명이 작성 될 때 지정됩니다. 그래서 당신이 원하는 것을 얻기 위해서는 .bashrc 파일에이 함수를 추가하고 bash를 재시작하십시오. 심지어 더 편집이 모두가 무엇을 용어 인수에 따라

function gccp() 
{ 
     gcc -pendantic -Wall -ansi $1.c -o $1 
} 

. 내가 추가 할 경우 예를 들어, 내 .bashrc 파일에 다음 다시 시작 bash는

alias blabla="echo $HOSTNAME"

을 그리고 난 내 호스트 이름을 얻을 blabla를 호출합니다. 그러나 $ HOSTNAME은 실제로 논쟁 거리가 아닙니다. 그것은 변수입니다. 인수는 당신이 어떤 종류의 정보로 호출하고있는 함수/명령을 제공하고 있음을 의미합니다. 그래서 그 정의에 의해, 별칭 인수를 취하지 않습니다.

+0

왜이 별칭이 작동합니까? 별칭 subl = "open -a /Applications/Sublime.app $ 1" –

+0

@Dave 내 편집을 참조하십시오. –

0

별칭은 인수를 사용할 수 없습니다 (Bash manual 참조). 인수를 사용하여 별칭을 호출하면 쉘은 실제로 별칭 값의 명령 이름 만 바꾸기 때문에 인수가 명령 끝에 추가됩니다.

사용을 대신 shell function : 대신

gccp() 
{ 
    gcc -pendantic -Wall -ansi "$1".c -o "$1" 
} 
1

사용 make.

$ export CFLAGS=-pendantic -Wall -ansi 
$ make p1 

는 내장 된 패턴 일치 규칙을 사용하여 원하는 것을 수행합니다.

환경 변수가 원치 않는 방식으로 다른 것과 상호 작용하는 경우 CFLAGS 값을 직접 make으로 전달하거나 CFLAGS을 정의하는 한 줄의 makefile을 작성하십시오.