2013-04-30 17 views
3

我在cshell跨越怪異的行爲傳來: 寫入以下行的時候,我得到完全的行爲我想到:別名與重音符,省略號和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 – 2013-04-30 13:15:07

回答

3

歡迎來到地獄是csh。我不知道這個答案會阻止你殺死自己,但......

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

結果:

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

它基本上串的串聯,每個交替報價:

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

(是的,這可能會簡化,但我想顯示一個一致的,通用的過程,用於混淆包含單引號的命令。)

+0

這樣做。令人驚訝的是,這個csh可以有多糟糕......謝謝! – user2141046 2013-05-01 06:53:04