所以,我用up我的壳(猛砸在OSX或Ubuntu,主要是),但在某些时候,我知道我想要的东西后,光标的当前位置。有什么办法可以使我完成的线与上面的线相同?击球up然后left令人讨厌。
除了tab,我们现在都在谈论其他技巧:
这是一个示例(根据〜quack的请求):
我键入mkdir /where/the/hell/is/that/thing
,然后我要CD进入同一目录。但是现在我知道了meta-b了:)
所以,我用up我的壳(猛砸在OSX或Ubuntu,主要是),但在某些时候,我知道我想要的东西后,光标的当前位置。有什么办法可以使我完成的线与上面的线相同?击球up然后left令人讨厌。
除了tab,我们现在都在谈论其他技巧:
这是一个示例(根据〜quack的请求):
我键入mkdir /where/the/hell/is/that/thing
,然后我要CD进入同一目录。但是现在我知道了meta-b了:)
Answers:
尝试这个:
mkdir /where/the/hell/is/that/thing
然后按alt+.
根据您的操作系统和终端,您可能必须输入 esc然后.
您也可以按 alt+ 1+ .选择特定的先前参数。
这比!!好多了!或!$,因为您实际上可以看到您将要运行的内容,并且无论如何它都减少了击键次数。
编辑:严格来说meta不是alt,所以它也可以与“ windows”键一起使用,具体取决于您的键盘设置方式。
您应该通读系统上的man bash,尤其是Readline上的部分,因为这是bash的交互式输入机制。gnu.org上的Bash手册在命令行编辑中有一个不错的部分,它将帮助填补一些空白。
默认情况下,您可以使用这些命令在命令行中移动(仅在此处列出一些;查看完整列表的链接):
您可以使用它们从行中“杀死”(也称为“剪切”)文本:
因此,您可以将它们组合在一起,以选择要重复的某些命令行块,将其杀死,然后将其粘贴到下一个命令的末尾。
现在,为了使其更加有趣,让我们考虑bash的History Expansion。这是!!
该Studer公司的回答中提到。历史扩展分为事件指示符,单词指示符和修饰符。
事件指示符如下所示(再次,请参见完整列表的链接):
!
-开始历史替换!n
-在第n个在bash的历史记录列表命令,对于一些整数ñ(作品底片太)!!
-前面的命令;相当于!-1
!string
-以字符串开头的最新命令单词指示符从事件中选择某些部分。使用:
该事件从字标志分开。单词从行的开头开始从0开始编号,并插入到当前行中,并以单个空格分隔。
$
-指定最后一个参数(例如!!:$
,last命令的最后一个arg;可以缩写为!$
)n
-指定第n个字(例如!str:2
是最近的命令开始的第二ARG STR ; !!:0
在所述命令的最后一个命令的)
因此,以您的示例为例,如果您的最后一个命令是mkdir /some/really/long/path
,则只需运行即可!!
再次运行该命令。但是您想cd
改成这条路:
$ cd !$
现在,假设您执行其他一些命令,然后又想返回该路径。如果这是您运行的最后一个mkdir命令,则可以使用此命令重复该路径:
$ tar czf ~/foo.tgz !mkdir:$
bind -p
或bind -P
将打印您当前的绑定;这是bash使用的最终参考。
如果您是vi用户,则可以通过键入将shell置于vi模式set -o vi
。
然后,您可以在键入后在命令行上执行各种强大的功能Esc + k
。
我用的最多的一个是Esc+K
那么/
后斜线将被用来通过你的命令行历史记录搜索中键入任何文本。
例如,Esc + k
/smbclient
将给出您键入的最后一个smbclient命令。您可以使用标准的六个键(在所有的搜索滚动j
和k
对上下,但我认为向上和向下箭头将工作太)。
在这里进一步的帮助,在该链接上还有一些内置的bash东西,可能是您想要的东西。
干杯,斯图。
您可以使用!!
代表最后一个命令的命令:
%测试 %回声! >测试
!!
是同义词为!-1
:gnu.org/software/bash/manual/bashref.html#Event-Designators
我最近发现此readline备忘单非常有用。我不知道的很多事情。我一直使用!$
所有时间,直到发现Alt+ .,现在一直使用。:)