2016-08-25 8 views
1

我爲這個問題做了一個簡單的例子。我可以做如何在別名執行時對別名中的命令進行輸出而不是在定義時進行評估?

[email protected]:~] echo 1 2 3 | awk '{print $2}' 
2 

我想建立一個別名這整個命令,但它給EM錯誤(我使用的是CSH)

[email protected]:~] alias tt 'echo 1 2 3 | awk '{print $2}'' 
Missing }. 

如何逃生'?我試過

alias tt 'echo 1 2 3 | awk \'{print $2}\'' 
alias tt 'echo 1 2 3 | awk "'{print $2}'"' 

但沒有奏效。 =>解決。請在下面「添加」。

ADD:作爲升| L | L的下面稱道,我可以由`別名TT它傳遞 「回聲1 2 3 | AWK '{打印$ 2}'」,但對於低於

[email protected]:~] alias ddcoc "ddd caffe-fast-rcnn/python/caffe/_caffe.so `ps aux | grep python | grep tools | awk '{print $2}'`" 
[email protected]:~] ddcoc 
ddd: No match. 
[email protected]:~] alias ddcoc 
ddd caffe-fast-rcnn/python/caffe/_caffe.so ckim  29216 0.0 0.0 52596 8968 pts/8 Ss+ 11:36 0:00 /home/ckim/anaconda2/bin/python -t /usr/local/bin/pydb tools/train_net_e2e.py --gpu 0 --solver models/coco/ZF/faster_rcnn_end2end/solver.prototxt --weights data/imagenet_models/ZF.v2.caffemodel --imdb coco_2014_train --iters 490000 --cfg experiments/cfgs/faster_rcnn_end2end.yml --set RNG_SEED 42 TRAIN.SCALES [400,500,600,700] 

真實情況下問題是在定義別名時替換ps ...。我想要的是在執行別名時評估ps ...。 ddd是我可以在csh上運行的應用程序,但在此別名中不起作用。我該如何解決它?

+0

嘗試做' 「回聲......」'用雙引號。 –

+0

檢查[\ [this \]](http://stackoverflow.com/a/24247870/1620779)有幫助的答案。 – sjsam

+0

@ l'L'l,啊,那有效:)。 (我嘗試了原始更復雜的情況下的選擇無濟於事,但我可能還有其他問題)。 –

回答

0

您是否必須使用別名?我只是將別名轉換爲腳本或shell函數。

這則看起來像(至少對於bash/zsh中)

function ddcoc() 
{ 
    ddd <some absolute path>/caffe-fast-rcnn/python/caffe/_caffe.so $(ps aux | grep python | grep tools | awk '{print $2}') 
} 
+0

好的,但我使用csh和讀取csh不支持函數。 http://www.grymoire.com/Unix/CshTop10.txt。我會稍後嘗試使用'eval'命令。謝謝! –

+1

您也可以將該命令放入腳本並執行它。 – Uroc327

+0

你是對的。在這種情況下,使用簡單的腳本似乎是正確的解決方案。我在PATH中列出的目錄中放置了一個腳本,並可以根據需要運行ddd。 –

相關問題