要在bash中运行程序,我通常使用相对路径,因为它的输入速度更快;例如,像
me@host:~/dir/appX$ ./manage.py runserver
然后该命令将存储在历史记录中。要从历史记录中调用命令(通常是 CTRL + R ),我需要与运行它时的路径相同,这使得调用功能变得不那么有用。
一种解决方案是第一次插入完整路径,但需要大量编写。
me@host:~/dir/appX$ /home/me/dir/appX/manage.py runserver
是否有一种方法(最好是内置的)在命令行中插入当前路径? 或者也许是一个更好的解决方案(应该在bash上工作)?
答案 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
检查当前绑定。