2016-08-03 55 views
1

我走動了很多路徑,並嘗試使用別名設置,以儘量減少打字:別名殼變提領

alias restore  'set restore=\!*; cd \$${restore}' 
alias save   'setenv \!* `pwd`' 

我用tcsh;保存工作,但恢復失敗:

2% save x 
2% cd 
2% restore x 
$x: No such file or directory. 

我檢查VAR(X),它很好,所以我沒有解除引用權?

回答

0

這工作:

alias restore ' cd ` echo $\!* ` ' 

你原來的嘗試,可以更好的寫法如下:

alias restore ' cd \$\!* ' 

這(和你原來的一個)不起作用,因爲變量擴展需要發生首先,在這種情況下沒有可變擴展,因爲$已被轉義。 !*擴展後,不會發生其他變量擴展。

在我建議的解決方案中,我通過在子shell中運行echo來避免轉義$,所以它工作正常。


只是爲了確保,你是知道的pushdpopd,對不對?對於大多數用戶來說,這些用戶非常有用且功能強大,儘管我可以在此處看到別名中的值。

+0

啊,我有一些推動/流行的歷史包袱更多地是關於炮彈(ptycon是從一個過去的時代確切地說)。 ;-)我不會用push/pop來勝過那些保存/恢復;我正在設置,謝謝: 別名恢復'cd'echo $ \!*'; PWD」 – slashlos