Dan*_*ark 19 keyboard-shortcuts bash
所以我up在我的 shell(主要是 OSX 或 Ubuntu 上的 Bash)中使用 ,但有时我知道我想要光标当前位置之后的东西。有什么办法可以让我所在的线路与上面的线路一起完成?打up然后left很烦人。
任何其他技巧也很酷,除了tab我们现在都在谈论的 :)
这是一个示例(根据 ~quack 的请求):
我输入mkdir /where/the/hell/is/that/thing,然后我想 cd 进入同一个目录。但现在我知道元 b :)
qua*_*ote 29
您应该通读系统上的man bash,尤其是Readline部分,因为这是 bash 的交互式输入机制。gnu.org上的Bash 手册有一个很好的关于命令行编辑的部分,这将有助于填补一些空白。
默认情况下,您可以使用它们在命令行上移动(这里只列出一些;查看完整列表的链接):
您可以使用它们从一行中“杀死”(又名“剪切”)文本:
所以你可以结合这些来选择你想要重复的命令行块,杀死它,然后将它粘贴到下一个命令的末尾。
现在,为了让它更有趣,让我们考虑一下 bash 的History Expansion。这是!!该Studer公司的回答中提到。历史扩展分解为事件指示符、单词指示符和修饰符。
事件指示符如下所示(同样,请参阅完整列表的链接):
! - 开始历史替换!n- bash 历史列表中的第 n 个命令,用于某个整数n(也适用于负数)!!- 前面的命令;相当于!-1!string- 以字符串开头的最新命令单词指示符从事件中选择某些部分。使用:该事件从字标志分开。单词从行首开始从 0 开始编号,并插入到当前行中,以单个空格分隔。
$- 指定最后一个参数(例如!!:$是最后一个命令的最后一个参数;可以缩短为!$)n-指定第n个字(例如!str:2是最近的命令开始的第二ARG STR ;!!:0在所述命令的最后一个命令的)
因此,为了跟进您的示例,如果您的最后一个命令是mkdir /some/really/long/path,则仅运行!!将再次重新运行该命令。但是你想cd进入那条路径:
$ cd !$
Run Code Online (Sandbox Code Playgroud)
现在假设您执行了一些其他命令,然后想再次引用该路径。如果这是您运行的最后一个mkdir命令,您可以使用它来重复该路径:
$ tar czf ~/foo.tgz !mkdir:$
Run Code Online (Sandbox Code Playgroud)
use*_*307 11
尝试这个:
mkdir /where/the/hell/is/that/thing
Run Code Online (Sandbox Code Playgroud)
然后按alt+.
根据您的操作系统和终端上可能必须键入 esc然后.
您还可以按 alt+ 1+.选择特定的先前参数。
这比!!或 !$ 因为你实际上可以看到你将要运行的东西,而且它需要更少的击键。
编辑:严格来说它meta不是alt,所以它也可能与“windows”键一起工作,具体取决于你的键盘是如何设置的..
| 归档时间: |
|
| 查看次数: |
6946 次 |
| 最近记录: |