在 bash 命令行中插入当前路径
Insert current path in bash command line
要在 bash 中运行程序,我通常使用相对路径,因为这样输入速度更快;例如,
me@host:~/dir/appX$ ./manage.py runserver
该命令随后将存储在历史记录中。要从历史记录中调用命令(CTRL+R 通常),我需要与运行它时的路径相同,以便调用功能用处不大。
一种解决方法是第一次插入完整路径,但是写的比较费时间
me@host:~/dir/appX$ /home/me/dir/appX/manage.py runserver
有没有办法(最好是内置的)在命令行中插入当前路径?
或者更好的解决方案(应该适用于 bash)?
您可以在 bash 中使用 Tilde Expansion 执行此操作。您需要两个波浪线扩展相关的功能,仅显示下面 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
检查当前绑定。
要在 bash 中运行程序,我通常使用相对路径,因为这样输入速度更快;例如,
me@host:~/dir/appX$ ./manage.py runserver
该命令随后将存储在历史记录中。要从历史记录中调用命令(CTRL+R 通常),我需要与运行它时的路径相同,以便调用功能用处不大。
一种解决方法是第一次插入完整路径,但是写的比较费时间
me@host:~/dir/appX$ /home/me/dir/appX/manage.py runserver
有没有办法(最好是内置的)在命令行中插入当前路径? 或者更好的解决方案(应该适用于 bash)?
您可以在 bash 中使用 Tilde Expansion 执行此操作。您需要两个波浪线扩展相关的功能,仅显示下面 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
检查当前绑定。