2015-10-17 82 views
0

我想爲這個命令創建終端(OSX)別名:終端創建別名錯誤

cal -y | awk -v month="`date +%m`" -v day="`date +%e` " '{m=int((NR-3)/8)*3+1; for (i=0;i<3;i++) {t[i]=substr($0,1+i*22,20) " "; if (m+i==month) sub(day,"\033[0;31m&\033[0m",t[i]);} print t[0],t[1],t[2];}' 

命令工作完全正常,當我剛剛運行它,但是當我嘗試爲它創建一個別名它給了我這個錯誤:

Syntax Error near unexpected token `('

我創建別名代碼爲:

alias caly='cal -y | awk -v month="`date +%m`" -v day="`date +%e` " '{m=int((NR-3)/8)*3+1; for (i=0;i<3;i++) {t[i]=substr($0,1+i*22,20) " "; if (m+i==month) sub(day,"\033[0;31m&\033[0m",t[i]);} print t[0],t[1],t[2];}'' 

我還牛逼因爲這個錯誤可能是因爲在我將單引號放在整行之前,命令中已經有單引號。這是我嘗試的第二塊代碼(它給了我相同的錯誤):

alias caly='cal -y | awk -v month="`date +%m`" -v day="`date +%e` " \'{m=int((NR-3)/8)*3+1; for (i=0;i<3;i++) {t[i]=substr($0,1+i*22,20) " "; if (m+i==month) sub(day,"\033[0;31m&\033[0m",t[i]);} print t[0],t[1],t[2];}\'' 

有誰知道我該如何解決這個錯誤?我對終端非常陌生,所以有任何建議都會被讚賞!

+0

你究竟在做什麼? –

+0

因此,在終端中有一個「cal 2015」功能,可以查看全年的日曆,但不會突出顯示當前日期。我在網上發現了一個命令,它實際上可以讓你做到這一點,但由於它很長,我想爲該命令創建一個別名,並最終將該別名保存在bash配置文件中。但是,創建別名的命令不起作用,所以我想知道是否有人知道它有什麼問題。謝謝! – NikashS

回答

0

錯誤是因爲您傳遞給alias的命令字符串由單引號引起,本身也包含單引號。

我懷疑有一個簡單的解決方案,仍然使用alias。我看起來像你推動表達式傳遞給alias有點太過分了。考慮將代碼放在shell腳本中,然後將該腳本添加到搜索路徑中的目錄中。