2013-04-30 4 views
3
나는 cshell에서 이상한 행동을 건너 온

: 다음 줄을 쓸 때 , 난 내가 예상 정확히 동작을 얻을 :별칭 더

ls -l | grep $USER | somescript `awk -F' ' '{print $1}'` 

의미를 -을 나와 소유 한 모든 항목을 검색하고 첫번째 필드를 인수로 사용하여 'somescript'를 활성화합니다. 내가 같은 줄을 앨리어싱 때 내가 아포스트로피에서 괄호를 분리하는 경우

그러나, 내 쉘 (또는 손 밖으로 오류 마사지를 걸립니다 :

alias doit 'ls -l | grep $USER | somescript `awk -F' ' '{print $1}'`' 

가 발생합니다 하나

{: 명령을 찾을 수 없습니다

인쇄 : 명령을 찾을 수 없습니다

또는 걸린대로 새로운 터미널을 시작할 수 없습니다.

어떻게 내 별명을 죽이지 않고 별명을 지정할 수있는 지 (그리고 비슷한 것들 - 이것은 단지 예일뿐입니다)?

+2

http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot –

답변

3

지옥에 오신 것을 환영합니다. csh입니다. 나는 ...이 대답은 자신을 죽이는에서 당신을 방지 할 수 있습니다 모르겠지만,

% alias doit 'ls -l | grep $USER | somescript `awk -F'"'"' '"'"' '"'"'{print $1}'"'"'`' 

결과 :

'ls -l | grep $USER | somescript `awk -F' 
"'" 
' ' 
"'" 
' ' 
"'" 
'{print $1}' 
"'" 
'`' 
:

% alias | grep doit 
doit ls -l | grep $USER | somescript `awk -F' ' '{print $1}'` 

그것은 문자열의 연결은 기본적으로의 교류 따옴표로 각

(예, 단순화 될 수 있지만 작은 따옴표가 포함 된 별칭 지정 명령에 대한 일관된 일반 절차를 보여 드리고자합니다.)

+0

그 트릭을했습니다. 놀라운이 csh가 얼마나 끔찍한 지 ... 고마워! – user2141046