如何在执行别名时对别名中的命令进行输出,而不是在定义时进行评估?

时间:2016-08-25 03:10:13

标签: bash shell text csh

我为这个问题做了一个简单的例子。我能做到

ckim@stph45:~] echo 1 2 3 | awk '{print $2}'
2

我想为整个命令创建一个别名,但它给出了一个错误(我正在使用csh)

ckim@stph45:~] 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 | l的推荐,我可以通过`alias tt“echo 1 2 3 | awk'{print $ 2}'”传递它,但是对于下面的实例

ckim@stph45:~] alias ddcoc "ddd caffe-fast-rcnn/python/caffe/_caffe.so `ps aux | grep python | grep tools | awk '{print $2}'`"
ckim@stph45:~] ddcoc
ddd: No match.
ckim@stph45:~] 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上运行的应用程序但是在这个别名中不起作用。我该如何解决?

1 个答案:

答案 0 :(得分: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}')
}