2016-01-14 56 views
0

我想要编写创建一个别名“CD =‘CD DIR_NAME’”这将改变目录到DIR_NAME使用xargs的传递给alias命令变量

pwd | xargs -i alias cd{}='cd $PWD' 

,但我一个衬垫得到:

xargs: alias: No such file or directory 

是别名不能与xargs一起玩还是我没有正确使用xargs?

+2

'xargs'试图执行_command_'alias',但'alias'是_builtin_。 –

+0

我很困惑,你是否试图别名'cd'来总是cd到当前的工作目录?你能用伪代码解释这个别名是什么意思吗? – njachowski

+3

'xargs'作为一个独立的过程运行;它运行的shell也是一个独立的进程。即使你修改了调用(例如'pwd | xargs -i bash -c“alias cd {} ='cd $ PWD'”),也没有办法,那么结果将成为当前shell的别名。你的符号看起来好像它可能试图创建'alias cd/home/you ='cd/home/you''这也是可疑的。你应该使用类似于:'alias cd $(basename $ PWD)=“cd $ PWD”'。 –

回答

2

alias是一个shell内建。 xargs需要外部命令才能运行。通常情况下,你可以在xargs运行新的外壳解释建宏或关键字:

pwd | xargs -i bash -c 'alias cd{}="cd $PWD"' 

,但它也没用在这种情况下,作为别名只会活在你从xargs运行shell,而不是在当前。

此外,别名不能被命名为/home/user。也许你的意思

... alias cd='cd {}' 

使用pushdpopd记住当前目录,稍后返回。