2015-01-08 3 views
3

Чтобы запустить программу в bash, я обычно использую относительные пути, потому что это быстрее ввести; например,Вставить текущий путь в командной строке bash

[email protected]:~/dir/appX$ ./manage.py runserver 

После этого команда будет сохранена в истории. Чтобы вызвать команду из истории (CTRL + R обычно), мне нужно быть на том же пути, что и при запуске, что делает функцию отзыва менее полезной.

Одно из решений заключается в том, чтобы вставить полный путь в первый раз, но требуется много записи.

[email protected]:~/dir/appX$ /home/me/dir/appX/manage.py runserver 

Есть ли способ (желательно встроенный) для вставки текущего пути в командной строке? Или, может быть, лучшее решение (должно работать на bash)?

+0

Работает только как часть аргумента, но не в начале команды. А также, только если я делаю $ {PWD}, а затем TAB. Вы испытываете то же самое в своей среде? –

+0

Возможный дубликат [Сохранение текущего каталога в историю bash] (http://stackoverflow.com/questions/945288/saving-current-directory-to-bash-history) (возможно, вам придется слегка изменить функцию) – fredtantini

+0

@fredtantini на самом деле, нет. Тот, который вы связываете, больше подходит для целей отслеживания и фактически не улучшит рабочий процесс, как я ищу в вопросе. –

ответ

2

Вы можете сделать это в 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, чтобы проверить текущие привязки.

+0

вы потрясающий! Трюк inputrc имел решающее значение, потому что M- & secuence уже используется моим WM, поэтому он никогда не попадает на терминал. Кстати, отображение C-a мешает с помощью полезных команд перемещения. Я закончил показ Cv (quoted-insert), который избыточен, когда Cq почти не функционирует. –

+1

Рад, что это сработало для вас :) Я проверял привязки клавиш ('bind -p') перед использованием ctrl + a, но это wasn 't уже используется. – Vivek

+0

Bind был также очень полезен. Отлично. Я получил bind -p | grep "C-a" '' \ C-a ": начало строки –

Смежные вопросы