2016-08-03 31 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