问题描述
运行命令时,有时可能需要使用上一个命令中的参数运行命令。你怎么能这样做?
当然,除了使用箭头键和Del
键:↑
←
←
←
… ←
→
→
Del
Del
Del
… Del
<new_command>
。
最佳解决办法
例如,如果您运行此命令:
mkdir long_path_here/new_dir
很可能你想进入最近创建的目录。您可以使用下一个”shortcuts”执行此操作:
-
cd
Esc
.
-型cd
和压制后的Esc
,然后是.
(不是同时)。如果上一个命令没有参数,您将获得上一个命令本身。 -
cd !*
– 在这种情况下,您将从previuos命令获取所有参数。如果上一个命令没有参数,你什么也得不到。 -
cd
Alt
+.
-型cd
和压制后的Alt
和.
(同时)。实际上,使用这种方式并继续按下.
(不释放Alt
),您将从历史记录中获取每个命令的最后一个参数。如果命令没有参数,您将获得命令本身。
通常:<command>
Esc
.
或<command> !*
或<command>
Alt
+ .
。
次佳解决办法
如果您需要上一个命令中的所有参数,或者只是最后一个参数,则有一些快捷方式。
-
对于所有参数:
<command> !*
-
对于最后一个参数:
<command> !$
例子:
ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/
ls foo/ bar/
ls !$ # Gives the results of ls bar/
如果您想从上一个命令的参数列表中获得单个参数,则可以使用<command> !!:<argNumber>
例:
ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/
第三种解决办法
提到!*
和!$
是件好事,但是当你需要做一点编辑时,readline快捷方式会有所帮助!
例如,而不是无数↑
←
←
←
… ←
→
→
Del
Del
Del
… Del
则只需按↑
Ctrl-a
(跳转到该行的开始)Alt+d
(删除到单词的末尾)
有关更多信息,请访问man readline
并搜索Default key bindings
。
第四种办法
要从上一个命令中获取n
参数,请键入Alt
+ n
+ Alt
_
。例如,之后:
$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
键入echo
,然后输入Alt
2
Alt
_
将在下一个提示中给出:
$ echo 2
点击Alt
2
后的”screenshot”是:
(arg: 2) echo
您可以多次重复Alt
_
以连续获取先前命令的n
参数。
另一个有用的想法是定义别名r="fc -s"
。然后,你可以做命令替换:
$ echo 1
1
$ r echo=history
history 1
27755 history 1