2016-01-14 62 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記住當前目錄,稍後返回。