在bash命令行中插入当前路径

时间:2015-01-08 16:09:37

标签: bash

要在bash中运行程序,我通常使用相对路径,因为它的输入速度更快;例如,像

me@host:~/dir/appX$  ./manage.py runserver

然后该命令将存储在历史记录中。要从历史记录中调用命令(通常是 CTRL + R ),我需要与运行它时的路径相同,这使得调用功能变得不那么有用。

一种解决方案是第一次插入完整路径,但需要大量编写。

me@host:~/dir/appX$  /home/me/dir/appX/manage.py runserver

是否有一种方法(最好是内置的)在命令行中插入当前路径? 或者也许是一个更好的解决方案(应该在bash上工作)?

1 个答案:

答案 0 :(得分:2)

您可以使用Tilde Expansion在bash中执行此操作。您需要两个与波浪扩展相关的功能,只需显示以下man bash中的相关部分:

Tilde Expansion
    If  the tilde-prefix is a `~+', the value of the shell variable PWD
    replaces the tilde-prefix.

tilde-expand (M-&)
    Perform tilde expansion on the current word.

正如它所说,您可以输入~+来获取当前路径。然后要扩展它,您需要输入M-&。所以你需要的是关键序列~+M-&

我发现按下所有这些键有点困难,所以我为此创建了一个键绑定。在〜/ .inputrc文件中添加如下所示的行:

"\C-a":"~+\e&"

有了这个,我现在可以在键盘上输入ctrl+a来获取命令行上的当前路径。

PS:ctrl+a可能已绑定到其他内容(可能是行首),在这种情况下,使用其他键组合可能更好。使用bind -p检查当前绑定。