所以,我用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+ .,现在一直使用。:)