我经常遇到这样的情况:
mkdir /Some/really/long/path/to/a/directory/
cd /Some/really/long/path/to/a/directory/
我知道理想情况下你会cd /Some/...etc.../a/
然后然后mkdir directory
,但我经常mkdir
先执行,然后必须执行cd
到我刚刚创建的同一个冗长文件路径的末尾。
缺少做...
var="/Some/...etc.../a/"
mkdir $var/directory; cd $var
...更糟糕的是,是否有某种方法可以重用传递给的参数以前的命令?我当然知道制表符完成,但在一系列具有相似名称的嵌套目录中,这并不总是有那么大的帮助。理想情况下,我希望有一个像$#
或 那样的快捷方式$@
。
如果做不到这一点,下一个最佳的节省时间的解决方案将同样受到赞赏!
答案1
之前的答案建议您使用$_
和!$
。虽然这有效,但我发现它非常危险,因为它们没有展开,并且在按 Enter 并执行命令之前您无法看到它们的值。想象一下rm $_
在不确定要删除什么的情况下使用它!
如果您使用的是 bash(可能使用 readlines 的 emacs 模式,这是默认模式),我建议您按ESC,释放它,然后按.。
此快捷方式会调用上次执行的命令中的最后一个参数。所以写作cd <ESC> <.>
会给你带来很长的路径/文件。
热键ALT+ .(同时按下)的工作方式相同。
如果您使用的是 bash vi 模式而不是默认的 emacs 模式,则可以使用ALT+来模拟此行为.(如果您~\.inputrc
使用以下命令更改文件):
set keymap vi-insert
$if mode=vi
"\e.": yank-last-arg
$endif
答案2
在 bash(以及其他一些 shell,如 zsh)中,您可以使用$_
,它包含上一个命令的最后一个参数:
mkdir /path/to/file
cd "$_"
答案3
交互工作时,您可以使用历史扩展来实现此目的:
mkdir /Some/really/long/path/to/a/directory/
cd !$
有很多变体,允许您访问上一个命令或历史记录中任何其他命令的其他参数。看Bash,插入当前命令最后使用的参数欲了解详情...